2012-11-23 35 views
1

我想弄清楚爲什麼1)我的西蒙遊戲後說「輸入一個數字」掛斷 - 它看起來不像它甚至通過驗證。我試圖獲得用戶輸入,並檢查當時是否是正確的數字。 2)此外,它用於生成一個隨機數,但是當用戶按下它時,由於某種原因它返回爲假。但其他一些隨機數字會通過。 3)另外,下面的代碼是否爲您編碼?多謝你們。Java:嘗試獲取用戶輸入作爲Int在西蒙遊戲

import acm.program.*; 
import acm.graphics.*; 
import java.awt.Color; 
import java.awt.Font; 
import javax.swing.*; 
import java.awt.event.*; 

import javax.swing.JOptionPane; 
import java.util.Scanner; 
import java.io.DataInputStream; 

public class Simon extends Program implements ActionListener 
{ 

Scanner usersInputScanner = new Scanner(System.in); 


private int array[]; 
private int currentSeqLength; 
private int usersInput; 
private String usersInputString; 


public Simon() 
{ 
    //Initialize Class Values 
    array = new int[20]; 
    currentSeqLength = 1; 
    usersInput = 0; 

    generateSequence(); 

    while(currentSeqLength < array.length) 
    { 
     playSequence(); 

     //Wait For User's Input, Assign To Variable 
     System.out.println("Enter A Number"); 
     usersInput = usersInputScanner.nextInt(); 

     if (pushButton(usersInput) == true) 
     { 
      System.out.println("You Entered: " + usersInput); 

      currentSeqLength++; 
     } 

     else 
     { 

      gameOverMessage(); 
      break; 

      //Reset Variables: 

     } 

    } 


} 




//----------------------- Methods Here On Down ----------------------------- 





public void generateSequence() 
{ 

    //Fill Array With Random Numbers 
    for (int i = 0; i < array.length; i++) 
    { 
     array[i] = (int)(Math.random()*4); 

    } 


} 

public void setLength(int length) 
{ 
    //Set Current Length To Size Of Given Argument 
    currentSeqLength = length; 

} 

int getLength() 
{ 
    return currentSeqLength; 

} 

int[] playSequence() 
{ 
    //Print Out The Current Sequence 

    //New Local Array To Return 
    int newArray[]= new int[currentSeqLength]; 


    //Repeat As Many Times As Value Of currentSeqLength 
    for(int i = 0; i < currentSeqLength ; i++) 
    { 
     System.out.println(array[i]); 

     //Return an array of int's to the player. 
     newArray[i] = array[i]; 

    } 

    return newArray; 
} 

boolean pushButton(int usersInput) 
{ 
    //Given A Button Press (0-3), Return Whether That Was The 
     //Correct Button To Play At The Moment 

    if (usersInput == array[currentSeqLength]) 
    { 
     return true; 
    } 

    else 
    { 
     return false; 
    } 


} 


boolean isTurnOver() 
{ 
    //If Current Sequence Length Matches Or Exceeds Value Of 
     //Array Element In Location Of Current Sequence Length 

    if (currentSeqLength >= array[currentSeqLength]) 
    { 
     return true; 
    } 

    else 
    { 
     return false; 
    } 

} 

//Not Needed? 
boolean isGameOver() 
{ 
    if (pushButton(usersInput) == false) 
    { 
     return true; 
    } 

    else 
    { 
     return false; 
    } 
} 

String gameOverMessage() 
{ 
    return "Game Over"; 
} 

/*public void actionPerformed(ActionEvent event) 
{ 
    int input; 


} 
*/ 
} 
+0

是的,代碼是顏色編碼爲我。 – Jason

+0

嗨@firingblanks,歡迎來到SO。 – Ben

回答

0

1)我的西蒙遊戲說「輸入號碼」後掛斷了電話 - 它不 看上去像是甚至會過去的驗證。

它工作正常,但您需要System.out.printlngameOverMessage()返回的字符串。目前,它運行良好,但沒有輸出到控制檯,所以它看起來沒有反應(而且不是掛起,它只是到達執行的結尾,並停止)。

else { 
    gameOverMessage(); 
    break; 
} 

應該

else { 
    System.out.println(gameOverMessage()); 
} 

2)此外,用來產生一個隨機數,但是當用戶按下 它,它回來了因爲某些原因爲假。

我沒有在您的示例代碼中看到此行爲,它看起來像預期的那樣工作。

3)另外,下面的代碼是否爲您編碼?

是的,在SO上的預覽框有時需要一秒鐘來做語法高亮。它雖然工作正常。

順便提一句,3個問題中的一個對回答者來說有點難聽。在未來,也許嘗試限制自己到一個:)