2015-04-26 69 views
1

我寫一個策劃的遊戲,這裏是我的代碼:如何在「欺騙」功能添加到Java主謀遊戲

import java.util.*; 

public class mm { 
    public static void main(String[] args) {  
     System.out.println("I'm thinking of a 4 digit code."); 
     int[] random=numberGenerator(); 
     int exact=0, close=0; 
     while(exact!=4){ 
      int[] guess=userinput(); 
      exact=0; 
      close=0; 
      for(int i=0;i<guess.length;i++){ 
       if(guess[i]==random[i]){ 
        exact++; 
       } 
       else if(random[i]==guess[0] || random[i]==guess[1] || random[i]==guess[2] || random[i]==guess[3]){ 
        close++; 
       } 
      } 
      if(exact==4){ 
       System.out.println("YOU GOT IT!"); 
      } 
      else{ 
       System.out.println("Exact: "+exact+" Close: "+close); 
      } 
     } 
    } 

public static int[] userinput(){ 
    System.out.println("Your guess: "); 
    Scanner user = new Scanner(System.in); 
    String input = user.nextLine(); 
    int[] guess = new int[4]; 
    for (int i = 0; i < 4; i++) { 
     guess[i] = Integer.parseInt(String.valueOf(input.charAt(i))); 
    } 
    return guess; 
} 

public static int[] numberGenerator() { 
    Random rnd = new Random(); 
    int[] randArray = {10,10,10,10}; 
    for(int i=0;i<randArray.length;i++){ 
     int temp = rnd.nextInt(9); 
     while(temp == randArray[0] || temp == randArray[1] || temp == randArray[2] || temp == randArray[3]){ 
      temp=rnd.nextInt(9); 
     } 
     randArray[i]=temp; 
    } 
    return randArray; 
} 
} 

現在的程序工作。但是,我想添加一個功能,如果用戶輸入的是「*」,程序打印「輸入的作弊碼,密碼是:XXXX(//生成的隨機數)」,然後繼續詢問。我試圖寫一個單獨的cheat()函數來實現這個功能。但它再次調用numbergenerator(),以便每次都更改密碼。如何避免這個問題?或者還有其他方法來實現這個功能嗎?

BTW,這裏是作弊功能的邏輯:

if (guess.equals("*")){ 
    System.out.format("cheat code entered. The secret code is:") 
    for(int i=0;i<guess.length;i++){ 
      System.out.print(guess[i]); 
     } 
} 

回答

1

作弊是這樣的:

if (guess.equals("*")){ 
    System.out.format("cheat code entered. The secret code is:") 
    for(int i=0;i<random.length;i++){ 
      System.out.print(random[i]); 
     } 
} 

編輯:兩種方式從userinput()

一個可以訪問隨機)隨機通過userinput()作爲參數

public static int[] userinput(int[] random){ 
    ... 

B)做隨機的成員變量(可能是更好的方式來做到這一點)

public class mm { 
    static int[] random; 
    public static void main(String[] args) {  
     System.out.println("I'm thinking of a 4 digit code."); 
     random=numberGenerator(); 
     ... 
+0

哦對不起我錯貼一塊代碼...謝謝你。但是,你能告訴我應該在哪裏放置作弊碼嗎?在主函數或userinput()函數中?我嘗試過但都沒有成功。在userinput()函數中,我需要重新調用numberGenerator()函數,以便程序生成完全不同的隨機數。然後我試圖將它添加到主函數中,但程序在運行時變成了無限循環,我不知道爲什麼。你有什麼想法組織這段代碼添加到程序中嗎? – Turf

+0

看到我編輯的兩個建議的答案如何做到這一點...... –

+0

現在我又遇到了另一個問題......我試圖隨機制作一個成員變量。但是我收到了錯誤消息:「非靜態變量大型機無法從靜態上下文中引用」。我搜索了谷歌和編輯random = numberGenerator();隨機=新號碼發生器,但它沒有工作。如何解決它? (對不起,這麼多次,我是一個完全初學者...) – Turf