Java实现猜字母游戏

 

 

 

package day06;

import java.util.Scanner;

public class HomeWork {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		String string = "GuessingGame";
		System.out.println(string+"欢迎尝试猜字谜游戏!满分500分,最低分为0分!");
		System.out.println(string+"请输入游戏级别(5,7,9)");
		int n = scanner.nextInt();
		int count = 0;
		System.out.println(string+"游戏开始,请输入你所猜的"+n+"个字母的序列:(exit - 退出)");
		
		char[] chs = generate(n);
		System.out.println(chs);
		while(true){
			String s = scanner.next().trim().toUpperCase();
			char[] input = s.toCharArray();
			int[] result = check(chs, input);
			int score = 500-count*10;
			if(s.equals("EXIT")){
				System.out.println("欢迎再次挑战!");
				break;
			}
			if(score<=0){
				score=0;
			}
			if(result[1] == chs.length){
				System.out.println("恭喜你!猜对了!你的得分是:"+score);
				break;
			}else{
				count++;
				System.out.println(string+"你猜对"+result[0]+"个字符,其中"+result[1]+"个字符的位置正确!(总次数="+count+",exit - 退出!");
			}
		}
	}

	// 声明一个方法,用于生成随机不同字符数组,n控制生成字符的个数
	public static char[] generate(int n){
		char[] chs = new char[n];
		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[] flags = new boolean[letters.length];
		for(int i=0;i<chs.length;i++){
			int index;//letters下标
			do{
				//生成随机下标
				index = (int) (Math.random()*letters.length);
			}while(flags[index]);//为true,则以存在,再次循环,取得不同的字符
				chs[i] = letters[index];//给生成的新的数组赋值
				flags[index] = true;//设置为false,说明这个位置已经有数据了
		}
		return chs;
	}
	
	//声明一个方法,比较随机生成的数组和用户输入的数组,返回int数组,里面保存了对比后字符对的个数和位置对的个数
	public static int[] check(char[] chs,char[] input){
		int[] result = new int[2];
		for(int i=0;i<chs.length;i++){
			for(int k=0;k<input.length;k++){
				if(chs[i] == input[k]){
					result[0]++;//记录字符对的个数
					if(i==k){
						result[1]++;//记录位置对的个数
					}
					break;
				}
			}
		}
		return result;
	}
}

 

posted @ 2015-12-07 22:49  King_J  阅读(2890)  评论(0编辑  收藏  举报