猜字符游戲之java


package days06;

//需求。。。。。。,問題,為什么要用do{}while???
import java.util.Scanner;
public class RepeatOfGussingGame {

public static void main(String[] args) {
/*在main()函數中,需要制造一個死循環,目的是:假如用戶猜錯了重新猜,猜對了跳出(break),錯了反復猜
*注意: 因為用戶輸入的是字符串,我們在check方法中比較的是數組,需要將字符串轉為字符數組
*加入等級,實則增加難度,字母越多難度越大,直接將隨機生成的字母加入變化的int參數值,在做相應的判斷和變換即可
*/
Scanner scan = new Scanner(System.in);
int count = 0;

//char[] chs = genran(); //接收,調用
//調試輸出
System.out.println("游戲開始!");
// 表示游戲等級,默認為5
int level = 5;
do {
System.out.println("GuessingGame>請輸入游戲級別(5、7、9)?");
level = scan.nextInt();
} while (level != 5 && level != 7 && level != 9);
// 表示猜測的字符串
char[] chs = genran(level);
System.out.println(chs);
while(true){ //自造死循環,錯了一直猜,對了就跳出循環,
System.out.println("猜吧!");
String str = scan.next(); //接收輸入的字符串
char[] input =str.toCharArray();//轉換為字符數組,下一步調用比較方法接收結果
int[] result = check(chs,input);
if(result[1]==chs.length){ //假如位置對了
int score = result[0]*100-count*10;
System.out.println("恭喜你,猜對了!得分:"+score);
break;
}else{
System.out.println("位置對了"+result[1]+"個,字符對了"+result[0]+"個!");
count++;
}
}
}
//隨機輸入
public static char[] genran(int level){
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[] flags = new boolean[letters.length];//默認false,開關標志
for(int i=0;i<chs.length;i++){
int index;
do{
index = (int)(Math.random()*letters.length);
}while(flags[index]==true);
chs[i]= letters[index];
flags[index] = true;
}

return chs;
}
//對比
public static int[] check(char[] chs,char[] input){
int[] result = new int[2];//result[1]位置,result[0]字符對
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;
}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM