【猜字母小遊戲】
阿新 • • 發佈:2019-01-23
猜字母小遊戲,其實只是寫著練手玩的,但是部落格分類沒有【練手】,所以就放在遊戲開發分類裡面了(滑稽)。。。
直接放原始碼:
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; } }
發了這篇部落格後看見好多類似的,看來大家都是這麼過來的啊