猜字母小遊戲,其實只是寫着練手玩的,但是博客分類沒有【練手】,所以就放在遊戲開發分類裏面了(滑稽)。。。
直接放源碼:
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;
}
}
發了這篇博客後看見好多類似的,看來大家都是這麼過來的啊