1

マルチスレッドを使用して単純なテキスト ベースのゲームを作成する必要があります。私は私の動物のゲームを推測することにしました。サーバーは無作為に動物を選んで手がかりを出し、クライアントは 3 つの手がかりの中でその動物が何であるかを推測する必要があります。

ただし、動物が正しいと推測された場合、プログラムは次の手がかりに進みます。どこが間違っているのかわかりませんか?

もう 1 つの問題は、クライアントが新しいゲームに対してyと言うと、同じ動物を繰り返すだけです。変わりません。

修正する必要があるのはプロトコルクラスだけであることはわかっています。助けてください!この番組に悔し涙を流しました。

これが私のプロトコルクラスのコピーです:

public class KKProtocol {

    private static final int WAITING = 0;
    private static final int ASKNAME = 1;
    private static final int SENTCLUE = 2;
    private static final int SENTCLUE2 = 3;
    private static final int SENTCLUE3 = 4;
    private static final int ANOTHER = 5;
    private static final int NUMANIMALS = 4;
    private int state = WAITING;
    private int currentAnimal = (int) (Math.random() * 6);  // number of first joke
    private String[] clues = {"I like to play", "I like to scratch", "I eat salad", "I annoy you in the morning"};
    private String[] clues2 = {"Love walks", "House pet", "garden pet", "I fly everywhere"};
    private String[] clues3 = {"Woof", "Meow", "I live in a hutch", "Tweet Tweet"};
    private String[] answers = {"Dog",
        "Cat",
        "Rabbit",
        "Bird",};
    private String[] name = {};

    public String processInput(String theInput) {
        String theOutput = null;

        //  System.out.println("Welcome to my animal guessing game");

        if (state == WAITING) {
            theOutput = clues[currentAnimal];
            state = SENTCLUE;
        } else if (state == SENTCLUE) {
            if (theInput.equals(answers[currentAnimal])) {
                theOutput = "Correct...Your Score is 1....Want to play again? (y/n)";
                state = ANOTHER;
            } else {
                theOutput = clues2[currentAnimal];
                state = SENTCLUE2;
            }
        } else if (state == SENTCLUE2) {
            if (theInput.equals(answers[currentAnimal])) {
                theOutput = "Correct...Your Score is 2....Want to play again? (y/n)";
                state = ANOTHER;
            } else {
                theOutput = clues3[currentAnimal];
                state = SENTCLUE3;
            }
        } else if (state == SENTCLUE3) {
            if (theInput.equals(answers[currentAnimal])) {
                theOutput = "Correct...Your Score is 3....Want to play again? (y/n)";
                state = ANOTHER;
            } else {
                theOutput = ("it's" + answers[currentAnimal] + " you fool! Want to play again? (y/n)");
                state = ANOTHER;
            }
        } else if (state == ANOTHER) {
            if (theInput.equalsIgnoreCase("y")) {
                if (currentAnimal == (NUMANIMALS - 1)) {
                    currentAnimal = 0;
                }
                theOutput = clues[currentAnimal];
                // else
                currentAnimal++;

                state = SENTCLUE;
            } else {
                theOutput = "Bye.";
                state = WAITING;
            }
        }
        return theOutput;
    }
}

他のクラスをご覧になりたい場合は、お気軽にお尋ねください。

4

1 に答える 1

0

プログラムをデバッグし、最初の if 句の前にブレーク ポイントを設定します。変数はどのように見えますか?コードのどこかで些細なエラーを犯したと思いますが、プログラムが実際に何をするかを観察すると、それが明らかになります。

クライアント コードの一部をここに貼り付けて、誰かが何が起こっているかを理解できるようにすることもできます。コメントから、Protocol クラスの使用方法を誰も理解していないことがわかりました。

于 2012-12-19T20:16:23.633 に答える