将显示的随机化按钮

Ric*_*wan 2 c#

我是C#编程的初学者,我正在尝试按下按钮时会出现的随机按钮.(我正在制作一个鼹鼠游戏,但使用按钮作为鼹鼠,我想随机最多2个按钮,将出现)

private void Whack_A_Mole_Load(object sender, EventArgs e)
{
    button1.Visible = false;
    button2.Visible = false;
    button3.Visible = false;
    button4.Visible = false;
    button5.Visible = false;
    button6.Visible = false;
    button7.Visible = false;
    button8.Visible = false;
    button9.Visible = false;
}

private void button10_Click(object sender, EventArgs e)
{
    timer1.Enabled = true;
    timer2.Enabled = false;
    button10.Enabled = false;
    btnStop.Enabled = true;
    button1.Image =(Properties.Resources.Mole);
    Random random = new Random();
    var randombutton = random.Next(1, 2);
}
Run Code Online (Sandbox Code Playgroud)

这就是我的工作

Mik*_*cup 5

处理此问题的一种简单方法是使用按钮列表.如果将所有按钮放在List中,则可以通过索引访问它们,从而无需使用大量if else或switch case语句.

Random在表单中声明a ,然后使用表单初始化它.对按钮列表执行相同操作,并将按钮添加到按钮列表中.这样,您只需几行代码就可以更改所有按钮.这是一个例子:

Random r;
List<Button> buttons;   

private void Whack_A_Mole_Load(object sender, EventArgs e)
{
    r = new Random();

    buttons = new List<Button> 
    { 
        button1, 
        button2, 
        button3, 
        button4, 
        button5, 
        button6, 
        button7, 
        button8,
        button9 
    };

    foreach (Button button in buttons)
        button.Visible = false;
}
Run Code Online (Sandbox Code Playgroud)

然后,要显示按钮,您可以使用以下内容:

private void DisplayButton()
{
    //Ensures that the button that becomes visible isn't the other one already displayed
    int index;
    do
    {
        index = r.Next(0,9);
    } while(buttons[index].Visible);
    buttons[index].Visible = true;
}
Run Code Online (Sandbox Code Playgroud)

那里的循环将确保显示一个新按钮,但你应该小心它.它仅用于显示两个按钮.如果你打电话DisplayButton太多次不隐藏任何按键,增加游戏的大小,也可以是低效的,因为它会选择一个按钮,更多的时候是已经显现.它适用于您所陈述的条件,但我建议不要在显着扩大的范围内使用它.