随机序列到确定序列(基于文本框的内容)
本文关键字:文本 随机 于文本 | 更新日期: 2023-09-27 17:50:26
我正在制作《Simon Says》游戏,但与普通的《Simon Says》游戏(每次生成随机序列)不同的是,由于游戏的性质,我希望制作非随机序列并基于textbox1.text
。
因此,例如:textbox1.text
可能包括行"RYRG"。游戏将其解释为"红、黄、红、绿"。
此时,游戏每次随机生成一个序列。我对如何改变这一点有点困惑。本质上,我想把文本框textbox1.text
的内容放入一个数组。这样这个数组就可以作为游戏的序列缓冲区。任何帮助都是感激的,提前谢谢你。
更新:它现在都工作了(但只有1行)
代码:private Color[] sequence;
//Declare dictionary
private Dictionary<char,Color> stringTocolor = new Dictionary<char,Color>();
public SimonSays ()
{
//add content to Dictionary
stringTocolor.Add('R', Color.Red);
stringTocolor.Add('G', Color.Green);
stringTocolor.Add('B', Color.Blue);
stringTocolor.Add('Y', Color.Yellow);
Color[] colourset = newSequence(textBox1.Text.Length);
}
public Color[] newSequence(int length)
{
Color[] array = new Color[length];
//check dictionary has the char key or not
for (int i = 0; i < textBox1.Text.Length; i++)
{
if (stringTocolor.ContainsKey(textBox1.Text[i]))
{
array[i] = stringTocolor[textBox1.Text[i]];
}
//give alert if wrong key
else
{
MessageBox.Show("Wrong Colour input at index " + i + " of textbox string!");
}
}
this.sequence = array;
return array;
}
我可以用一下这行吗?
public void newSequence (Color [] sequence)
{
this.sequence= //read next line
}
最新消息
旧
我尝试使用Dictionary来匹配char到Color以缩短匹配的源代码部分。然后传递TextBox而不是它的长度。
private Color[] sequence;
//Declare dictionary
private Dictionary<char,Color> stringTocolor = new Dictionary<char,Color>();
public SimonSays ()
{
//add content to Dictionary
stringTocolor.Add('R', Color.Red);
stringTocolor.Add('G', Color.Green);
stringTocolor.Add('B', Color.Blue);
stringTocolor.Add('Y', Color.Yellow);
Color[] colourset = newSequence(textBox1);
}
public Color[] newSequence(TextBox textBox)
{
int length = textBox.Text.Length;
Color[] array = new Color[length];
//check dictionary has the char key or not
for (int i = 0; i < length; i++)
{
if (stringTocolor.ContainsKey(textBox.Text[i]))
{
array[i] = stringTocolor[textBox.Text[i]];
}
//give alert if wrong key
else
{
MessageBox.Show("Wrong Colour input at index " + i + " of textbox string!");
}
}
this.sequence = array;
return array;
}
旧
通过传递文本框文本长度作为参数(长度)在某处调用newSequence
Color[] colourset = newSequence(textBox1.Text.Length);
然后尝试检查文本框文本中的每个字符,然后将它们更改为相应的颜色,并在colorset中返回它们。
public Color[] newSequence(int length)
{
Color[] array = new Color[length];
//Random rand = new Random(DateTime.Now.Millisecond);// don't inline w/ colors[] - wont be random
for (int i = 0; i < textBox1.Text.Length; i++)
{
//array[i] = colors[rand.Next(0, 4)];
if (textBox1.Text[i]=='R')
{
array[i] = Color.Red;
}
else if (textBox1.Text[i] == 'G')
{
array[i] = Color.Green;
}
else if (textBox1.Text[i] == 'B')
{
array[i] = Color.Blue;
}
else if (textBox1.Text[i] == 'Y')
{
array[i] = Color.Yellow;
}
else
{
MessageBox.Show("Wrong colour input found!");
}
}
//why stored to sequence? further use in current class?
this.sequence = array;
return array;
}
看起来像你生成一个类,所以可能是你的newSequence需要有一个参数接收textBox字符串从类的外部,但不直接访问文本框?