1

以下は私の推測ゲームのコードです。

プレイヤーが名前を入力した後に表示されるスコアボードを実装しようとしています。スコアボードは、アプリケーションが実行されている限り、変数を保存することになってplayernameいます。counttotalTime

また、推測の量で並べ替えることも想定されています(推測の量が少ない=スコアボードで高い)。

2人のプレーヤーが同じ量の推測を持っていた場合、どちらが速いかでソートされます。運が悪かったので、配列リストを作成してみました。ゲームがリセットされるたびにインデックスを1ずつインクリメントしようとしているので、変数が新しい変数で上書きされることはありません。

また、配列リストで長い文字列を受け入れるのに問題があります。

import java.util. *;

class Game {        

public void start() {

    int randomNumber = (int) (Math.random() * 1000);
    int number = -1, index, count;  
    String decision, guess, playername;
    long currentTime = 0, newTime, totalTime;
    boolean quitting = false;
    count = 0;
    System.out.println("Welcome to the Guessing Game");
    System.out.println("Type \"quit\" to quit at anytime.");
    Scanner scan  = new Scanner(System.in);
    System.out.println("Try to guess the number. Range is from 1 - 1000: ");
    guess = scan.nextLine();
    if ("quit".equals(guess)) {
        System.out.println("Quitting...");
        quitting = true;
    } else {
        number = Integer.parseInt(guess);
    }

    while (number != randomNumber && number > -1){
        if (number >= 1001 || number <= 1) {
            System.out.println("Number is not between 1 - 1000. Enter another number");
        }

        if (number != randomNumber && number > randomNumber && number <= 1000 && number >= 1) {
            System.out.println("Number is too high. Try again!");
        }

        if (number != randomNumber && number < randomNumber && number < 1000 && number > 1) {
            System.out.println("Number is too low. Try again!");
        }

        if (number != randomNumber) {
            count = count + 1;
        }

        if (number != randomNumber) {
            Scanner scannew  = new Scanner(System.in);
            System.out.println("Enter a different number: ");
            guess = scannew.nextLine();
            if ("quit".equals(guess)) {
                System.out.println("Quitting...");
                quitting = true;
            } else {
                number = Integer.parseInt(guess);
            }
        }

        if (count == 1) {
            long lDateTime = new Date().getTime();
            currentTime = lDateTime / 1000;
        }

        if (quitting) {
            break;
        }
    }

    if (!quitting) {
        long DateTime = new Date().getTime();
        newTime = DateTime / 1000;
        totalTime = newTime - currentTime;

        System.out.println("You win! Your total amount of guesses was: " + count + " Total time (seconds): " + (totalTime));

        Scanner name  = new Scanner(System.in);
        System.out.println("Enter your name: ");
        playername = scan.nextLine();


        //ArrayList<Integer> score = new ArrayList<Integer>();
        //score.add(index, count);
        //System.out.println(score);
        //index++;

        Scanner decision1 = new Scanner(System.in);
        System.out.println("Do you want to play again? y/n");
        decision = decision1.nextLine();

        if ("y".equals(decision)) {
            Game one = new Game();
            one.start();
        }

        if ("n".equals(decision)) {
            System.out.println("Quitting...");
        }
    }
    scan.close();
}
}
4

1 に答える 1

0

ArrayListスコアを追加するたびに再初期化するため、複数の値が含まれることはありません。randomNumberなどと一緒に、一度だけ初期化してください。

また、あなたは必要ありませんindex。すでに存在するすべてのスコアのscore.add(count)に新しいスコアを追加するだけです。

于 2012-09-28T21:01:36.150 に答える