改进变量调用
Improve variable calling
我正在制作文字游戏,将 30 个文本框排列成网格并标记为“_00”“_01”“_02”...第一个数字是它所在的行,第二个是它所在的列in. 我想连续更改这些文本框的文本。因此,在第一个玩家输入后,我更改第一行,然后在下一个玩家输入后更改第二行。除了将它放在枚举或数组中这样的 switch case 之外,还有什么方法可以做到这一点。
_00 是要显示的文本框。
Player_Input是玩家输入信息的地方
这是在 WPF 中。
我当前的代码是
switch (Row)
{
case 0:
_00.Text = Player_Input.Text.Substring(0, 1);
_01.Text = Player_Input.Text.Substring(1, 1);
_02.Text = Player_Input.Text.Substring(2, 1);
_03.Text = Player_Input.Text.Substring(3, 1);
_04.Text = Player_Input.Text.Substring(4, 1);
Row++;
break;
case 1:
_10.Text = Player_Input.Text.Substring(0, 1);
_11.Text = Player_Input.Text.Substring(1, 1);
_12.Text = Player_Input.Text.Substring(2, 1);
_13.Text = Player_Input.Text.Substring(3, 1);
_14.Text = Player_Input.Text.Substring(4, 1);
Row++;
break;
case 2:
_20.Text = Player_Input.Text.Substring(0, 1);
_21.Text = Player_Input.Text.Substring(1, 1);
_22.Text = Player_Input.Text.Substring(2, 1);
_23.Text = Player_Input.Text.Substring(3, 1);
_24.Text = Player_Input.Text.Substring(4, 1);
Row++;
break;
case 3:
_30.Text = Player_Input.Text.Substring(0, 1);
_31.Text = Player_Input.Text.Substring(1, 1);
_32.Text = Player_Input.Text.Substring(2, 1);
_33.Text = Player_Input.Text.Substring(3, 1);
_34.Text = Player_Input.Text.Substring(4, 1);
Row++;
break;
case 4:
_40.Text = Player_Input.Text.Substring(0, 1);
_41.Text = Player_Input.Text.Substring(1, 1);
_42.Text = Player_Input.Text.Substring(2, 1);
_43.Text = Player_Input.Text.Substring(3, 1);
_44.Text = Player_Input.Text.Substring(4, 1);
Row++;
break;
case 5:
_50.Text = Player_Input.Text.Substring(0, 1);
_51.Text = Player_Input.Text.Substring(1, 1);
_52.Text = Player_Input.Text.Substring(2, 1);
_53.Text = Player_Input.Text.Substring(3, 1);
_54.Text = Player_Input.Text.Substring(4, 1);
Row++;
break; }
TLDR: 有什么办法可以缩短上面的代码:) 另外我的英语不是很好,抱歉。
如何将文本框放入一个数组,然后遍历该数组并从输入中提取一个字符?
var tbs = new[] {
_00,_01,_02,_03,_04,
_10,_11,_12,_13,_14,
_20,_21,_22,_23,_24,
_30,_31,_32,_33,_34,
_40,_41,_42,_43,_44,
_50,_51,_52,_53,_54
};
for(int i = 0; i < tbs.Length; i++){
tbs[i].Text = Player_Input.Text[i%5].ToString();
}
%5
从0..4开始循环,随着i
递增到30,所以输入的前5个字母将循环放入boxes..
i=0, box=_00, char_from_input=0
i=1, box=_01, char_from_input=1
i=2, box=_02, char_from_input=2
i=3, box=_03, char_from_input=3
i=4, box=_04, char_from_input=4
i=5, box=_10, char_from_input=0 //i%5 wrapped round to 0 again..
...
您所要做的就是将所有 30 个盒子按正确的顺序放入数组中...
我正在制作文字游戏,将 30 个文本框排列成网格并标记为“_00”“_01”“_02”...第一个数字是它所在的行,第二个是它所在的列in. 我想连续更改这些文本框的文本。因此,在第一个玩家输入后,我更改第一行,然后在下一个玩家输入后更改第二行。除了将它放在枚举或数组中这样的 switch case 之外,还有什么方法可以做到这一点。
_00 是要显示的文本框。
Player_Input是玩家输入信息的地方
这是在 WPF 中。
我当前的代码是
switch (Row)
{
case 0:
_00.Text = Player_Input.Text.Substring(0, 1);
_01.Text = Player_Input.Text.Substring(1, 1);
_02.Text = Player_Input.Text.Substring(2, 1);
_03.Text = Player_Input.Text.Substring(3, 1);
_04.Text = Player_Input.Text.Substring(4, 1);
Row++;
break;
case 1:
_10.Text = Player_Input.Text.Substring(0, 1);
_11.Text = Player_Input.Text.Substring(1, 1);
_12.Text = Player_Input.Text.Substring(2, 1);
_13.Text = Player_Input.Text.Substring(3, 1);
_14.Text = Player_Input.Text.Substring(4, 1);
Row++;
break;
case 2:
_20.Text = Player_Input.Text.Substring(0, 1);
_21.Text = Player_Input.Text.Substring(1, 1);
_22.Text = Player_Input.Text.Substring(2, 1);
_23.Text = Player_Input.Text.Substring(3, 1);
_24.Text = Player_Input.Text.Substring(4, 1);
Row++;
break;
case 3:
_30.Text = Player_Input.Text.Substring(0, 1);
_31.Text = Player_Input.Text.Substring(1, 1);
_32.Text = Player_Input.Text.Substring(2, 1);
_33.Text = Player_Input.Text.Substring(3, 1);
_34.Text = Player_Input.Text.Substring(4, 1);
Row++;
break;
case 4:
_40.Text = Player_Input.Text.Substring(0, 1);
_41.Text = Player_Input.Text.Substring(1, 1);
_42.Text = Player_Input.Text.Substring(2, 1);
_43.Text = Player_Input.Text.Substring(3, 1);
_44.Text = Player_Input.Text.Substring(4, 1);
Row++;
break;
case 5:
_50.Text = Player_Input.Text.Substring(0, 1);
_51.Text = Player_Input.Text.Substring(1, 1);
_52.Text = Player_Input.Text.Substring(2, 1);
_53.Text = Player_Input.Text.Substring(3, 1);
_54.Text = Player_Input.Text.Substring(4, 1);
Row++;
break; }
TLDR: 有什么办法可以缩短上面的代码:) 另外我的英语不是很好,抱歉。
如何将文本框放入一个数组,然后遍历该数组并从输入中提取一个字符?
var tbs = new[] {
_00,_01,_02,_03,_04,
_10,_11,_12,_13,_14,
_20,_21,_22,_23,_24,
_30,_31,_32,_33,_34,
_40,_41,_42,_43,_44,
_50,_51,_52,_53,_54
};
for(int i = 0; i < tbs.Length; i++){
tbs[i].Text = Player_Input.Text[i%5].ToString();
}
%5
从0..4开始循环,随着i
递增到30,所以输入的前5个字母将循环放入boxes..
i=0, box=_00, char_from_input=0
i=1, box=_01, char_from_input=1
i=2, box=_02, char_from_input=2
i=3, box=_03, char_from_input=3
i=4, box=_04, char_from_input=4
i=5, box=_10, char_from_input=0 //i%5 wrapped round to 0 again..
...
您所要做的就是将所有 30 个盒子按正确的顺序放入数组中...