改进变量调用

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 个盒子按正确的顺序放入数组中...