Novo baralho de cartas exibido em uma caixa de texto
-
20-12-2019 - |
Pergunta
private void GetNewDeck_Click(object sender, EventArgs e)
{
string[] suit = { "C", "D", "H", "S" };
string[] num = { "2", "3", "4", "5", "6", "7", "8", "9", "T", "J", "Q", "K", "A" };
for (int j = 0; j < 4; j++)
{
for (int i = 0; i < 13; i++)
{
NewDecktextBox.Text + = (suit[j] , num[i]"\n");
}
}
}
Eu estava tentando exibir um novo baralho de cartas em uma caixa de texto multilinha (NewDecktextBox) quando clico no botão GetNewDeck_Click. Estou tendo erro com a linha NewDecktextbox.Text.
A saída deve ser
C2 C3 C4 C5 C6 C7 C8 C9 C10 CJ CQ CK CA
D2 D3 D4 D5 D6 D7 D8 D9 D10 DJ DQ DK DA
H2 H3 H4 H5 H6 H7 H8 H9 H10 HJ HQ HK HA
S2 S3 S4 S5 S6 S7 S8 S9 S10 SJ SQ SK SA
Obrigado
Solução
Isso será um pouco melhor
StringBuilder sb = new StringBuilder();
foreach (String suit in new string[] { "C", "D", "H", "S" })
{
foreach (string value in new String[] { "2", "3", "4", "5", "6", "7", "8", "9", "T", "J", "Q", "K", "A" } )
{
sb.Append(suit);
sb.Append(value);
sb.Append(" ");
}
sb.Append(Environment.NewLine);
}
NewDecktextBox.Text = sb.ToString()
Strings são imutáveis em .net.Você criaria uma nova string para cada cartão adicionado à caixa de texto, então basicamente 52 deles "C2" e depois "C2 C3" e então ....
Assim que você começar a manipular uma string em um loop, StringBuilder é o caminho a seguir.
Outra dica é usar foreach se puder, do seu jeito se quiser adicionar outro cartão, por exemplo.Emperor (inventado por mim agora há pouco), você teria que alterar as variáveis de loop e seus arrays.
Feliz aprendizado.
Environment.NewLine é o fim da linha do ambiente em que você está, lida automaticamente com LF ou CRLF.