1

理由を突き止めようとしています。1) 「数字を入力してください」と言った後、Simon ゲームがハングアップします。検証を通過したようには見えません。ユーザー入力を取得しようとしており、その時点で押すのに適切な番号であるかどうかを確認しています。2) また、以前は乱数を生成していましたが、ユーザーがそれを押すと、何らかの理由で偽として返されました。ただし、他の乱数は通過します。3) また、以下のコードは色分けされていますか? みんなありがとう。

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;


}
*/
}
4

1 に答える 1

0

1) 「数字を入力してください」と言った後、Simon ゲームがハングアップします。検証を通過したようには見えません。

System.out.println正常に動作していますが、から返される文字列が必要ですgameOverMessage()。現在、完全に実行されていますが、コンソールへの出力がないため、応答していないように見えます (ハングしておらず、実行の最後に到達して停止しています)。

else {
    gameOverMessage();
    break;
}

する必要があります

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

2) また、以前は乱数を生成していましたが、ユーザーがそれを押すと、何らかの理由で偽として返されました。

サンプル コードでこの動作が得られません。期待どおりに動作するようです。

3) また、以下のコードは色分けされていますか?

そうです、SO のプレビュー ボックスは、構文の強調表示を行うのに 1 秒かかることがあります。それはうまくいきます。

ちなみに、1 つの質問に 3 つの質問があるのは、回答者にとっては少し面倒です。将来的には、おそらく1つに制限してみてください:)

于 2012-11-23T01:43:26.640 に答える