PLT 板


LINE

看板 PLT  RSS
老師在上課有講解了以下的部分 但說得很快 >"< 要我們說明程式碼及修改以下程式碼 Number Guess Game.java 部分的上色處 for的地方 來完成完整版的4位數猜數字遊戲 1. 可由使用者選擇所欲猜測的數字有幾位 2. 使用者可查詢過去所輸入的猜測 3. 電腦可提供提示 (例如 : 1A2B) 4. 遊戲排行榜 而這個猜數字的遊戲 包含了 Number Guess Game.java / Answer.java 及Main.java三個部分 (主要是修改Number Guess Game.java 部分及在執行時能印出步驟說明 例如: 你猜錯了 繼續加油 ) ------------------------------------- Number Guess Game.java 部分 package numberguessgame; import java.util.Scanner; import java.io.*; import java.util.Vector; import java.util.Random; public class NumberGuessGame { private int numberOfDigits; private boolean isDupDigits=true; int count=1; Answer lastAnswer=null; Vector possibleAnswerSet; NumberGuessGame() { this(4); } NumberGuessGame(int d) { setNumberOfDigits(d); possibleAnswerSet = new Vector(); } public Answer generateAnswer() { Answer temp = new Answer(numberOfDigits); temp.generate(); // System.out.println(temp.answer); return temp; } public void start(Answer answer) { boolean exit=false; Answer userGuess; String outStr=null; while(!exit && (count<100)) { System.out.println("------------------------"); System.out.println("(" + count + ")"); // userGuess = getUserGuess(); userGuess = generateGuess(answer, outStr); outStr = compare(userGuess,answer); System.out.println(outStr); if(outStr.equals("" + this.numberOfDigits + "A0B")) exit=true; count++; } System.out.println("Game Over"); } public Answer generateGuess(Answer answer, String outStr) { Answer temp = new Answer(this.numberOfDigits); System.out.print("Please Input Your Guess:"); if(count==1) { temp = generateAnswer(); lastAnswer = temp; return temp; } else if(count==2) { Answer a = generateAnAnswer(answer, outStr); lastAnswer =a; System.out.println(a.answer); return a; } else { Answer a = generateAnotherAnswer(answer, outStr); lastAnswer = a ; System.out.println(a.answer); return a; } // temp.setAnswer( string ); // return temp; } public String compare(Answer t, Answer a) { int numA = 0, numB = 0, numC = 0; String outStr = ""; for(int k = 0; k < this.numberOfDigits; k++) { if(t.answer.charAt(k) == a.answer.charAt(k)) { numA++; } } for(int i=0; i < this.numberOfDigits; i++) { for(int j=0; j < this.numberOfDigits; j++) { if(t.answer.charAt(i) == a.answer.charAt(j)) { numC++; } } } numB = numC - numA; outStr="" + numA + "A" + numB + "B"; return outStr; } public Answer getUserGuess() { Answer temp = new Answer(this.numberOfDigits); Scanner userinput = new Scanner(System.in); System.out.print("Please Input Your Guess:"); temp.setAnswer(userinput.next()); return temp; } public void setNumberOfDigits(int d) { numberOfDigits = d; } public int getNumberOfDigits() { return numberOfDigits; } public Answer generateAnAnswer(Answer answer, String outStr) { String answerStr=""; for(int w=0;w<10;w++) { for(int x=0;x<10;x++) { for(int y=0;y<10;y++) { for(int z=0;z<10;z++) { answerStr= new String(""+ w + "" + x + "" + y + "" + z); // System.out.println(answer); Answer temp = new Answer(this.numberOfDigits); temp.setAnswer(answerStr); String outStr2 = compare(temp, lastAnswer); if(outStr2.equals(outStr)) { this.possibleAnswerSet.add(temp); } } } } } Random rand =new Random(); Answer temp = (Answer)(possibleAnswerSet.get(rand.nextInt(possibleAnswerSet.size()))); return temp; } public Answer generateAnotherAnswer(Answer answer, String outStr) { String answerStr=""; for(int w=0;w<possibleAnswerSet.size();w++) { Answer temp = (Answer)(possibleAnswerSet.get(w)); String outStr2 = compare(temp, lastAnswer); if(!outStr2.equals(outStr)) { this.possibleAnswerSet.remove(temp); } } System.out.println("size of possible answer set =" + possibleAnswerSet.size()); Random rand =new Random(); Answer temp = (Answer)(possibleAnswerSet.get(rand.nextInt(possibleAnswerSet.size()))); return temp; } } Answer.java 部分 package numberguessgame; import java.lang.String; import java.util.*; public class Answer { public String answer; int numberOfDigits; Answer(int digits) { this.numberOfDigits = digits; } public void setAnswer(String s) { answer = s ; } public void generate() { Random rand =new Random(); int[] ans=new int[numberOfDigits]; int[] buff=new int[numberOfDigits]; answer=""; int i=0; int a=0; while (a < numberOfDigits) { boolean same; do { ans[a]=rand.nextInt(10); same=false; for (int count=0; count<a; count++) { if(ans[a] == buff[count]) { same = true; } } }while(same != false); buff[a]=ans[a]; a++; } for(i=0; i<numberOfDigits; i++) { answer+= new String(""+ ans); } System.out.println("" + answer ); } } Main.java部分 package numberguessgame; public class Main { public static void main(String[] args) { NumberGuessGame theGame = new NumberGuessGame(); // theGame.setNumberOfDigits(3); Answer answer = theGame.generateAnswer(); theGame.start(answer); } } ----------------------------------- 先感謝答題的各位高手~ <(_O_)> 另外,也可以回到我的信箱。 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.27.211.56 jeff10159:轉錄至看板 java 12/19 15:57
1F:→ godfat:念在你在 java 板被砍文,僅 s 處理 XD 你可以改善問法 12/19 19:23
2F:→ jaiyalas:版煮大好有愛心♥ 12/21 08:44
3F:→ onlyderek:幾A幾B... 想當年我學組合語言的時候也寫過 01/02 09:49







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BuyTogether站內搜尋

TOP