1. 程式人生 > >【猜字母小遊戲】

【猜字母小遊戲】

猜字母小遊戲,其實只是寫著練手玩的,但是部落格分類沒有【練手】,所以就放在遊戲開發分類裡面了(滑稽)。。。

直接放原始碼:

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;
	}
}

發了這篇部落格後看見好多類似的,看來大家都是這麼過來的啊