【猜字母小游戏】

猜字母小游戏,其实只是写着练手玩的,但是博客分类没有【练手】,所以就放在游戏开发分类里面了(滑稽)。。。

直接放源码:

import java.util.Scanner;
/**
 * 猜字符游戏--重置
 * 游戏规则:
 * 1.系统随机生成5(7、9,可选等级)个不同的字母,玩家猜字母
 * 2.玩家每猜一次系统会提示一共猜对的字母的个数,以及其中位置对了的字母的个数
 * 3.总分为游戏等级*100,玩家每猜错一次扣10分
 * 4.输入EXIT可退出游戏
 */
public class Guessing {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		//游戏等级选择
		int level;
		do{
			System.out.println("请选择游戏等级(5,7,9):");
			level = scan.nextInt();
		}while(level != 5 && level != 7 && level != 9);
		char[] chs = generate(level);//随机生成字符数组
		//System.out.println(chs);//作弊,打印出随机生成的字母
		int score = level*100;
		while(true){
			System.out.println("猜吧:");
			//接收用户输入
			char[] input = scan.next().toUpperCase().toCharArray();
			String str = String.copyValueOf(input);
			if(str.equals("EXIT")){
				System.out.println("下次再来吧。");
				break;
			}
			//判断并接收结果
			int[] result = check(chs,input);
			if(result[1]==chs.length){
				System.out.println("恭喜你猜对了。分数:"+score);
				break;
			}else{
				score -= 10;
				System.out.println("字母正确的个数:"+result[0]+",位置正确的个数:"+result[1]);
			}
		}
	}
	/** 随机生成字母 */
	public static char[] generate(int level){//以为main方法是static静态的,不能直接调用非静态方法.虽然可以先new一个Guessing类的对象再通过对象调用,但是太麻烦了
		char[] chs = new char[level];
		char[] letters = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
		boolean[] flag = new boolean[letters.length];
		int index;
		for(int i=0;i<chs.length;i++){
			do{
				index = (int)(Math.random()*26);
			}while(flag[index]);
			chs[i] = letters[index];
			flag[index] = true;
		}
		return chs;
	}
	/** 对比玩家输入与系统生成的字母 */
	public static int[] check(char[] chs,char[] input){
		int[] result = new int[2];
		for(int i=0;i<chs.length;i++){
			for(int j=0;j<input.length;j++){
				if(chs[i]==input[j]){
					result[0]++;
					if(i==j){
						result[1]++;
					}
					break;
				}
			}
		}
		return result;
	}
}

发了这篇博客后看见好多类似的,看来大家都是这么过来的啊

猜你喜欢

转载自blog.csdn.net/qq_39516106/article/details/81144379