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灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP