JAVA小遊戲——猜字母
阿新 • • 發佈:2019-02-11
遊戲規則
玩家需要任意輸入五個不同的大寫英文字母,每次輸入後都會返回兩個提示,一個是當前猜對的字母數,還有一個是字母和位置都匹配的數目,通過提示猜出正確的結果。
玩家起始分值設為500分,每猜錯一次減10分,遊戲結束顯示最終得分。
(無圖形介面)
遊戲原始碼
import java.util.Scanner;
public class GuessTheLetters {
public static void main(String[] args) {
System.out.println("這是一個猜字母遊戲!"+"\n"+"【請輸入五個不同的英文大寫字母,看你能不能猜到】" );
char[] answer = charGenerate();
//這裡可以顯示答案
/*
for(int i=0;i<answer.length;i++) {
System.out.print(answer[i]);
}
System.out.println();
*/
Scanner s = new Scanner(System.in);
System.out.println("開始猜吧!");
int score=500 ;
while(true) {
String str = s.next().toUpperCase();
if(str.equals("EXIT")) {
System.out.println("退出!");
break;
}
char[] inputChars = str.toCharArray();
boolean b =compare(answer,inputChars);
if (b==true) {
System.out.println("分數為:"+score);
break;
}else {
score=score-10;
}
}
}
public static char[] charGenerate(){ //生成五個不同的隨機字母
char[] ch = new char[5];
for(int i=0;i<ch.length;i++) {
char check = (char)('A'+Math.random()*('Z'-'A'+1));
boolean b = true;
for(int j=0;j<ch.length;j++) {
if(check==ch[j]) {
b=false;
break;
}
}
if(b==true) ch[i]=check;
else i--;
}
return ch;
}
public static boolean compare(char[] answer,char[] input) { //匹配
int flag=0,position=0;
boolean b=false;
for(int i=0;i<answer.length;i++) {
for(int j=0;j<input.length;j++) {
if(answer[i]==input[j]) {
flag++;
if(i==j) position++;
}
}
}
if(flag==5 && position==5) {
b=true;
System.out.println("你真聰明都猜對了!");
}else {
System.out.println("猜測正確的字母數:"+flag+" "+"猜測正確的位置數:"+position);
}
return b;
}
}