Estoy haciendo un juego de palabras y tengo 30 cuadros de texto dispuestos en una cuadrícula y etiquetados como "_00" "_01" "_02"... El primer dígito es la fila en la que está, mientras que el segundo es la columna en la que está. Quiero cambie el texto de estos cuadros de texto en una fila. Entonces, después de la entrada del primer jugador, cambio la primera fila, luego la segunda después de la entrada del siguiente jugador. ¿Hay alguna forma de hacer esto que no sea cambiar el caso, como ponerlo en una enumeración o matriz?
_00 es un cuadro de texto para mostrar.
Player_Input es donde el jugador ingresa la información.
Esto está en WPF.
mi codigo actual es
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: ¿Hay alguna forma de acortar el código anterior :) Además, no soy muy bueno en inglés, lo siento.
¿Qué tal si coloca sus cuadros de texto en una matriz, luego recorre la matriz y extrae un carácter de la entrada?
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(); } El %5 gira y gira de 0 a 4 a medida i aumenta a 30, por lo que las primeras 5 letras de la entrada se colocarán cíclicamente en casillas.
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.. ...Todo lo que tienes que hacer es colocar las 30 cajas en el arreglo en el orden correcto...