【发布时间】:2018-02-24 21:50:27
【问题描述】:
大家好,我正在创建一个名为 Quiz 游戏的程序。现在我的问题是如何生成不重复的问题?我所有的问题都存储在 switch 语句中。我已经尝试并搜索了所有可能的解决方案,但仍然得到相同的输出。我下面的代码只是一个示例,我没有将其全部粘贴,因为它太长了。每当我调用 Question() 方法时,它都是随机的,但有时已经问过的问题会再次被问到。
public void Question()
{
var random = new Random((int)DateTime.Now.Ticks);
var randomValue = random.Next(1, 8);
switch (randomValue)
{
case 1:
ans = 1;
btnA.Visible = true;
btnB.Visible = true;
btnC.Visible = true;
btnD.Visible = true;
btn50.Enabled = true;
btndoubledip.Enabled = true;
lblQuestion.Text = "1+1=?";
voice = new SpeechSynthesizer();
voice.SelectVoiceByHints(VoiceGender.Male, VoiceAge.Child);
voice.SpeakAsync(lblQuestion.Text.ToString());
btnA.Text = "2";
btnB.Text = "1";
btnC.Text = "4";
btnD.Text = "5";
}
break;
【问题讨论】:
-
我什至不认为你发布的代码会编译。
-
你真的以错误的方式思考这个问题。首先不要使用 switch 语句 - 将您的问题保留在
List中,随机排序列表(在 Stack Overflow 上有很多方法可以做到这一点),然后按照新顺序进行处理。 -
您将需要以某种方式存储已经提出的问题列表。或者存储问题列表并从中删除项目,然后再选择另一个问题。
-
@maccettura 它只是一个示例,我只是粘贴了我的名为 Question() 的方法
-
@DavidG 但是可以把它放在像我的 public void Question() 这样的方法中吗?