0

ユーザーに数字を推測させるフォームを作成しました。100 int の配列を作成し、乱数を取得して配列を埋めるメソッドを作成しました。すべて正常に動作していますが、100 回の推測が行われると配列を 0 にリセットする別のメソッドを作成する必要があり、現在のセットアップを続行できるようです。ボタンをクリックするたびに再起動するだけでなく、アレイがいっぱいになっていることを確認するにはどうすればよいですか?その後、リセットするにはどうすればよいですか? 繰り返しますが、これは私のすべての要件を満たしていないだけでうまくいきます。

これが私の配列とメソッドのコードであり、どこでそれを呼び出しているかです:

int[] rndArray = new int[100];
    int wrong = 1;
    int right = 1;


    public void getNumbers()
    {
        Random random = new Random();
        for (int x = 0; x < rndArray.Length; x++)
        {
            rndArray[x] = random.Next(1, 100); 
        }

    }

    public Form1()
    {
        getNumbers();
        InitializeComponent();
    }

次に、推測が正しかったかどうかを確認し、もう一度推測できるようにする 2 つのボタンがあります。

   private void Guess_Click(object sender, EventArgs e)
    {
        bool num = true;
        for (int x = 0; x < rndArray.Length; x++)
        {
                if (Convert.ToInt32(textBox1.Text) == rndArray[x])
                { 
                    result.Text = "You Win!";
                    num = true;
                }
                else
                { 
                    result.Text = "Sorry - you loose; the number is: " + rndArray[x];
                    num = false;
                }
        }
        if (num == true)
            correct.Text = "Correct: " + right++;
        else
            incorrect.Text = "Incorrect: " + wrong++;

        mouseHere.Enabled = false;
        Guess.Enabled = false;
        nextGuess.Enabled = true;
    }

    private void nextGuess_Click(object sender, EventArgs e)
    {
        mouseHere.Enabled = true;
        Guess.Enabled = true;
        nextGuess.Enabled = false;
        hint.Text = "??";
        textBox1.Text = "";
        result.Text = "";
        getNumbers();

    } 

メソッドを再度呼び出したので、推測ごとに同じ数が生成されません。

4

2 に答える 2

2

クラスを作成しGuessingGame、100 番目の推測が行われたときにイベントを発生させてみませんか? 配列と推測カウンターをリセットできます。

何かのようなもの:

public class GuessingGame {
   private int[] RandomNumbers; 
   private GuessCount = 0;

   // constructor
   public GuessingGame () {
       this.guessCount = 0;
       this.randomNumbers = this.RandomNumberGenerator();
   }

   public void AddGuess(int guess) {
      // increment guessCount
      // check for a winner and/or 100th guess
      // raise a correct guess event if correct
      // raise 100th guess event if 100th guess occurs
   }

   private int[] RandomNumberGenerator() {
      // return your array of random numbers
   }

   ...more stuff...
}

いくつかの単純なイベント ハンドラ クラスを宣言して、必要なことを実行し、GuessingGame クラスからそれらを起動する必要があります。コードを書くのは少し大変なので、自分でやらせてください。これにより、正しい OO の方向に進むことができます。

http://msdn.microsoft.com/en-us/library/aa645739(v=vs.71).aspx . これは、非常に役立つイベントに関するチュートリアルです。

于 2013-05-14T14:52:16.947 に答える