【发布时间】:2021-10-31 10:23:20
【问题描述】:
我想创建一个程序,它会在图片框中显示标志,用户必须猜测它是什么标志。我有一个问题,标志重复,我完全不知道如何解决它。
这是我的一些代码:
private void button1_Click(object sender, EventArgs e)
{
Random random = new Random();
randomized = random.Next(0, 9);
//0 = Poland
//1 = France
//2 = Sweden
//3 = Germany
//4 = Portugal
//5 = Spain
//6 = Finland
//7 = Norway
//8 = Russia
//9 = Ukraine
if (randomized == 0)
{
ptbFlag.Image = Image.FromFile("C:/Users/Kacper/Desktop/FlagiDoGeo/Poland.png");
}
if (randomized == 1)
{
ptbFlag.Image = Image.FromFile("C:/Users/Kacper/Desktop/FlagiDoGeo/France.png");
}
if (randomized == 2)
{
ptbFlag.Image = Image.FromFile("C:/Users/Kacper/Desktop/FlagiDoGeo/Sweden.jpg");
}
if (randomized == 3)
{
ptbFlag.Image = Image.FromFile("C:/Users/Kacper/Desktop/FlagiDoGeo/Germany.png");
}
if (randomized == 4)
{
ptbFlag.Image = Image.FromFile("C:/Users/Kacper/Desktop/FlagiDoGeo/Portugal.png");
}
if (randomized == 5)
{
ptbFlag.Image = Image.FromFile("C:/Users/Kacper/Desktop/FlagiDoGeo/Spain.png");
}
if (randomized == 6)
{
ptbFlag.Image = Image.FromFile("C:/Users/Kacper/Desktop/FlagiDoGeo/Finland.png");
}
if (randomized == 7)
{
ptbFlag.Image = Image.FromFile("C:/Users/Kacper/Desktop/FlagiDoGeo/Norway.png");
}
if (randomized == 8)
{
ptbFlag.Image = Image.FromFile("C:/Users/Kacper/Desktop/FlagiDoGeo/Russia.png");
}
if (randomized == 9)
{
ptbFlag.Image = Image.FromFile("C:/Users/Kacper/Desktop/FlagiDoGeo/Ukraine.png");
}
}
【问题讨论】:
-
stackoverflow.com/questions/2019417/… 接受的答案可能对您有所帮助。
-
您是否尝试过将
Random random = new Random();设为“全局”变量?如果按钮被快速连续点击,那么随机数很有可能是相同的。将random设为全局应该可以解决这个问题。 -
您是否尝试过将生成的数字放入列表中?
-
您的意思是说如果曾经向用户显示过德国,那么随后的点击在选择下一个国家/地区时不应考虑德国?
-
尝试以下操作:在您的表单中创建一个变量 List
并用您拥有的标志的所有文件名填充它。将您的变量 Random random从列表附近移出button1_Click并仅对其进行一次初始化。然后在button1_Click中生成一个从零到列表计数的随机数 - 1. 从列表中选择该文件名,然后将其从列表中删除。如果列表中没有更多元素,您就完成了,禁用button1并显示一条消息,说没有更多国家可以猜测。