[問題] 一個不會形容的問題(新手 附程式碼)
我是自學java的新手 剛學到ArrayList
想說要自己寫個猜地雷的程式玩玩 (0-9數字中隨機挑三個放地雷)
compile後沒有error 也可以正常的運作
只是偶爾會出現使用者從0猜到9都沒有猜到地雷的狀況
想請問板上的大大可不可以提供一些方向 讓我知道大概是什麼地方寫錯
或是對於我的寫法有其他建議也請不吝指教 先謝謝大家!
p.s. jdk為1.6.0_05版本
程式碼的部份:
import java.util.ArrayList;
public class LandMineGame
{
public static void main(String[] args) throws java.io.IOException
{
LandMine game = new LandMine();
game.setLocations(); //0-9間隨機指定三個數字放置地雷
game.guess(); //讓使用者輸入並檢查是否有猜中
game.getRank(); //根據使用者猜測的次數評分
}
}
class LandMine
{
ArrayList<Integer> locations=new ArrayList<Integer>(); //存地雷的位置
ArrayList<Integer> guessedNum=new ArrayList<Integer>(); //存使用者猜過
的位置
int numOfHits; //猜中地雷的次數
int numOfGuess; //總共猜測的次數
public void setLocations() //0-9間隨機指定三個數字放置地雷
{
int a=(int)(Math.random()*10);
int b=(int)(Math.random()*10);
int c=(int)(Math.random()*10);
boolean checkNum=(a!=b && a!=c && b!=c);
if(checkNum==true) //避免三個地雷放再同一個位置
{
locations.add(a);
locations.add(b);
locations.add(c);
}
}
public void guess() throws java.io.IOException //讓使用者輸入並檢查是否
有猜中
{
while (numOfHits<3)
{
java.io.BufferedReader keyin;
keyin=new java.io.BufferedReader(new java.io.InputStrea
mReader(System.in));
System.out.print("請猜出地雷的位置(0-9):");
Integer playerguess=Integer.parseInt(keyin.readLine());
numOfGuess++;
if (locations.contains(playerguess))
{
System.out.println("Bingo!");
numOfHits++;
locations.remove(playerguess);
}
else if (guessedNum.contains(playerguess))
{
System.out.println("The place has been checked");
guessedNum.remove(playerguess);
numOfGuess--;
}
else
{
System.out.println("Wrong! Please guess again");
}
guessedNum.add(playerguess); //將使用者猜的數字存起來
}
System.out.println("Congratulations! You took "+numOfGuess+" ti
mes to finish the game");
}
public void getRank() //根據使用者猜測的次數評分
{
int grade=(int)((100*(10-numOfGuess))/7);
System.out.println("Your grade is "+grade);
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.160.70.63
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):