我正在制作一個文字游戲,有 30 個文本框排列在一個網格中,并標記為“_00”“_01”“_02”......第一個數字是它所在的行,而第二個是它所在的列。我想連續更改這些文本框的文本。因此,在第一個玩家輸入后,我更改了第一行,然后在下一個玩家輸入后更改了第二行。除了像把它放在列舉或陣列中那樣的 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:有什么辦法可以縮短上面的代碼:) 另外我的英語不太好,對不起。
uj5u.com熱心網友回復:
您如何將文本框放入陣列中,然后遍歷陣列并從輸入中提取一個字符?
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 回圈到 30,因此輸入的i前 5 個字母將回圈放入框。
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 個盒子按正確的順序放入陣列中......
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/430012.html
