0

ここに私が勉強している本からのゲームがあります。

private void timer1_Tick(object sender, EventArgs e)
{
    listBox1.Items.Add((Keys)random.Next(65, 90));

    if (listBox1.Items.Count > 7)
    {
        listBox1.Items.Clear();
        listBox1.Items.Add("Game over");
        timer1.Stop();
    }
}

private void Form1_KeyDown(object sender, KeyEventArgs e)
{

    if (listBox1.Items.Contains(e.KeyCode))
    {
        listBox1.Items.Remove(e.KeyCode);
        listBox1.Refresh();
        if (timer1.Interval > 400)
            timer1.Interval -= 10;
        if (timer1.Interval > 250)
            timer1.Interval -= 7;
        if (timer1.Interval > 100)
            timer1.Interval -= 2;
        difficultyProgressBar.Value = 800 - timer1.Interval;
        stats.Update(true);
    }

    else
    {
        stats.Update(false);
    }
    correctLabel.Text = "Correct: " + stats.Correct;
    missedLabel.Text = "Missed: " + stats.Missed;
    totalLabel.Text = "Total: " + stats.Total;
    accuracyLabel.Text = "Accuracy: " + stats.Accuracy + "%";
}

ランダムな文字を生成し、正しい文字を押すと、押した文字をリストボックスから削除する必要があります。

問題は、フォームの keydown プロパティが機能せず、押されたキーが強調表示されるだけで、リストボックスから削除されず、リストボックスがいっぱいになるまでサイクルが続き、ゲームオーバーメッセージが表示されることです...

コード全体が本自体から取られたので、今回は何が間違っていたのだろうか?

4

1 に答える 1

1

コードと本の両方をチェックしましたが、問題は Forms KeyPreview が True に設定されていて、私のものは True に設定されていなかったため、残念ながら本で言及するのを忘れていた答えでした。

于 2013-03-10T23:33:40.860 に答える