我正在尝试使用Rnd
函数中BtnRed_Click
函数的变量rand。回报没有做任何事情。如果我更改Rnd
函数的参数,我会收到错误。
这是我的代码。
namespace ColourPick_EDP2
{
public partial class Form1 : Form
{
int RandomNum;
int counter = 60;
int rand;
public Form1()
{
InitializeComponent();
}
private void BtnStart_Click(object sender, EventArgs e)
{
BtnStart.Visible = false;
Tmr.Tick += new EventHandler(tmr_Tick);
Tmr.Start();
TbxDisplay.Text = counter.ToString();
Random rnd = new Random();
RandomNum = rnd.Next(0, 7);
Rnd(RandomNum);
}
private void tmr_Tick(object sender, EventArgs e)
{
counter--;
if (counter == 0)
{
Tmr.Stop();
}
TbxDisplay.Text = counter.ToString();
}
private int Rnd(int rand)
{
int rand = rand;
switch(rand)
{
case 1:
this.BackColor = System.Drawing.Color.Red;
break;
case 2:
this.BackColor = System.Drawing.Color.Blue;
break;
case 3:
this.BackColor = System.Drawing.Color.Green;
break;
case 4:
this.BackColor = System.Drawing.Color.Yellow;
break;
case 5:
this.BackColor = System.Drawing.Color.Purple;
break;
case 6:
this.BackColor = System.Drawing.Color.Orange;
break;
}
return rand;
}
private void BtnRed_Click(object sender, EventArgs e)
{
if (rand == 1)
{
lblScore.Text += 10;
}
}
}
}
答案 0 :(得分:0)
你实际上没有在RND方法中使用rand的值做任何事情,所以只需使用RandomNum。可能应该是randomNum而不是RandomNum
private void BtnRed_Click(object sender, EventArgs e)
{
if (RandomNum == 1)
{
lblScore.Text += 10;
}
}
答案 1 :(得分:0)
我怀疑你真正想做的是调用一个函数并让它做一些事情:
我建议你这样做:
在类级别而不是在BtnStart_Click
中声明您的随机数生成器Random randomiser = new Random()
调用你的函数来描述它的作用,比如ChooseNewColor而不是Rnd。如果您愿意,可以给它一个参数,也许可以指出它应该选择多少种颜色。这是一个合适的声明:
private int ChooseNewColor(int numberOfColors)
{
int colorValue = randomiser.Next(1, numberOfColors +1)
switch(colorValue)
{
case 1:
this.BackColor = etc…
}
return colorValue;
}
现在调用函数
currentColor = ChooseNewColor(MaxColorValue);
这假设MaxColorValue是一个表示最高颜色值的常量(代码中可能是6),其输出将存储在一个名为currentColor的整数变量中,该变量已经被声明。