实现猜字母游戏V2.0

实现游戏等级

import java.util.Scanner;

public class GuessGameVer02 {
	/**
	 * 实现猜字母游戏,增加游戏等级设置
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		/* 数据结构 */
		int grade = -1; // 游戏等级
		int count = 0; // 游戏执行次数
		char[] objectArr; // 随机生成的目标数组
		char[] inputArr; // 输入的数组
		int[] right = new int[2]; // 结果:[0]代表字母正确个数,[1]代表位置正确个数

		Scanner scan = new Scanner(System.in);
		System.out.println("GuessGame>欢迎尝试猜字母游戏:");
		do {
			System.out.print("GuessGame>请输入游戏级别(5、7、9)");
			grade = scan.nextInt();
		} while (grade != 5 && grade != 7 && grade != 9);

		// 生成随机数组
		objectArr = generate(grade);
		printArr(objectArr);

		// 开始猜字母
		System.out.println("GuessGame>游戏开始,请输入你所猜的" + grade + "个字母序列:(exit-退出)");
		while (true) {
			// 输入数组
			String inputStr = scan.next().toLowerCase();
			if ("exit".equals(inputStr)) {
				System.out.println("GuessGame>谢谢你的尝试,再见!");
				return;
			} else {
				inputArr = inputStr.toCharArray();
			}

			// 数组比较
			right = checkArr(objectArr, inputArr);

			// 输出结果
			if (right[1] == grade) {
				System.out.println("GuessGame>恭喜你猜对了,你的得分为:" + (grade * 100 - count * 10));
			} else {
				System.out.println(
						"GuessingGame>你猜对了" + right[0] + "个字符,其中" + right[1] + "个字符的位置正确!(总次数=" + count + ",exit-退出)");
			}
			count++;
			scan.close();
		}	
	}

	/**
	 * 生成随机数组
	 * 
	 * @param grade
	 * @return
	 */
	public static char[] generate(int grade) {
		char[] objectArr = new char[grade];
		char[] letter = { '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' };
		int index;
		boolean[] boo = new boolean[letter.length];
		for (int i = 0; i < grade; i++) {
			do {
				index = (int) (Math.random() * letter.length);
			} while (boo[index]);
			boo[index] = true;
			objectArr[i] = letter[index];
		}
		return objectArr;
	}

	/**
	 * 比较数组并返回结果
	 * 
	 * @param objectArr
	 * @param inputArr
	 * @return
	 */
	public static int[] checkArr(char[] objectArr, char[] inputArr) {
		int[] right = new int[2];
		for (int i = 0; i < inputArr.length; i++) {
			for(int j = 0; j<objectArr.length; j++){
				if(inputArr[i] == objectArr[j]){
					right[0]++;
					if(i == j){
						right[1]++;
					}
				}
			}
		}
		return right;
	}

	/**
	 * 打印数组
	 * 
	 * @param arr
	 */
	public static void printArr(char[] arr) {
		System.out.print("[");
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i]);
			if (i < arr.length - 1) {
				System.out.print(",");
			}
		}
		System.out.println("]");
	}

}

你可能感兴趣的:(Java基础)