0

ユーザー入力を受け取り、それをランダムに生成された 100 個の数値と比較する を作成しました。推測ボタンをクリックすると、結果が表示されます。ユーザーを支援するために、マウスをラベルの上に置いたときにヒントを与えることになっています。ヒントは、実際の数値よりも 3 高くするか、3 低くする必要があります。ユーザーが推測ボタンを押したときに生成された乱数を取得して、ホバーイベントと同じ数にする方法がわかりません。すべてのコードで申し訳ありませんが、助けていただければ幸いです。

乱数を作成する方法は次のとおりです。

   public partial class Form1 : Form
   {
    int[] rndArray = new int[100];

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

gussボタンイベントは次のとおりです。

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

そしてマウスホバーイベント:

private void mouseHere_MouseHover(object sender, EventArgs e)
    {
        getNumbers();
        for (int x = 0; x < rndArray.Length; x++)
            hint.Text = "It's not " + (rndArray[x] +- 3);
    }
4

1 に答える 1

1

3 つの問題が考えられます。

まず、マウス ホバーおよび推測クリック関数の開始時に、GetNumbers を呼び出します。これにより、100 個の数値が生成され、配列に割り当てられます。ゲームごとに一度だけ生成する必要があります。各ゲームの開始時に (おそらく FormShown または FormLoad イベント ハンドラーで) 1 回呼び出し、次のゲームが始まるまで再度呼び出さないことをお勧めします。そうしないと、数値が変化し続けます。

次に、マウス ホバー関数内に、テキストを「ヒント」に 100 回割り当てる for ループがあります。最初の 99 個のヒントはおそらく正確ではありません。マウス ホバー イベントの最後に最後の数字のヒントが表示されるからです。ヒントを与える配列要素を特定し、それを適切なヒント表示に割り当てる必要があります。

第 3 に、+-演算子は C# の実際の演算子ではありません。これが実際にコンパイルおよび実行されているhint.Text = "It's not " + (rndArray[x] + (-3);場合、Random オブジェクトを使用して数値を生成し、それが奇数か偶数かを使用して加算または減算を決定することをお勧めします。配列を再割り当てしないようにしてください。

編集:ヒントを追加するか、ヒントから削除するかを判断することに関しては、ホバーするたびにランダムにヒントを生成しないようにしてください。その数に対して1回実行し、ヒントを保存します。それ以外の場合は、数回カーソルを合わせると、両方のヒントが表示されます。

于 2013-05-13T18:47:14.243 に答える