sYnced Posted February 23, 2012 Report Share Posted February 23, 2012 Bem pessoal eu estou a fazer o jogo do galo em c#, e pronto quando fiz só com botões funcionou lindamente, mas bem agora fiz com arrays bidimensionais e está a dar me uma dor de cabeça, não consigo adicionar mais que uma linha ou coluna porque caso contrário cada clique diz que jogador X ou O ganhou... alguém pode ajudar ? vou disponibilizar o código aqui para download, Obrigado. Download : http://www.MegaShare.com/3959647 Link to comment Share on other sites More sharing options...
Gonka Posted February 23, 2012 Report Share Posted February 23, 2012 É mais fácil colocares aqui parte do código. Pelo menos a parte que, provavelmente, estará errada. Link to comment Share on other sites More sharing options...
sYnced Posted February 23, 2012 Author Report Share Posted February 23, 2012 for (int i = 0; i < galo.GetLength(0); i++) { for (int a = 0; a < galo.GetLength(1); a++) { if (galo[i, a] == galo[0, 0] && galo[0, 0] == galo[1, 1] && galo[1, 1] == galo[2, 2]) { if (x % 2 != 0) { MessageBox.Show("O Vencedor é o jogador O"); VitoriaY++; } else { MessageBox.Show("O Vencedor é o jogador X"); VitoriaX++; } } } } for (int b = 0; b < galo.GetLength(0); b++) { if (galo[b, 0] == galo[0, 0] && galo[b, 1] == galo[1, 1] && galo[b, 2] == galo[2, 2]) { if (x % 2 != 0) { MessageBox.Show("O Vencedor é o jogador O"); VitoriaY++; } else { MessageBox.Show("O Vencedor é o jogador X"); VitoriaX++; } } Bem a parte é esta, pelo menos é o que eu acho! Link to comment Share on other sites More sharing options...
sYnced Posted February 23, 2012 Author Report Share Posted February 23, 2012 Alguém pode dar uma ajudinha ? é que com arrays isto torna se mais dificil... Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted February 23, 2012 Report Share Posted February 23, 2012 estas a fazer muito código desnecessário tenta fazer deste modo cria uma função que verifica se numa linha existe um vencedor: funcao_lin : parâmetros = matrix, linha jogador = matrix[linha][0] para i : 1 até numero_colunas - 1 se matrix[linha][i] for diferente de jogador return 0 return jogador PS : eu sei que exite muitas simplificações a este processo, mas é melhor para pensar no problema cria uma função que verifica se numa coluna existe um vencedor: funcao_col : parâmetros = matrix, coluna jogador = matrix[0][coluna] para i : 1 até numero_linhas - 1 se matrix[i][coluna] for diferente de jogador return 0 return jogador cria uma função que verifica se existe um vencedor na diagonal principal: funcao_diag_pri : parâmetros = matrix jogador = matrix[0][0] para i : 1 até numero_linhas - 1 se matrix[i][i] for diferente de jogador return 0 return jogador cria uma função que verifica se existe um vencedor na diagonal secundária: funcao_diag_sec : parâmetros = matrix jogador = matrix[0][numero_linhas - 1] para i : 1 até numero_linhas - 1 se matrix[i][numero_linhas - 1 - i] for diferente de jogador return 0 return jogador cria uma função que verifica se existe um vencedor em alguma das opcoes: funcao : parâmetros = matrix se (jogador = funcao_lin) != 0 return jogador se (jogador = funcao_col) != 0 return jogador se (jogador = funcao_diag_pri) != 0 return jogador se (jogador = funcao_diag_sec) != 0 return jogador return 0 IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
sYnced Posted February 23, 2012 Author Report Share Posted February 23, 2012 parece mesmo que terá de ser assim pelo que vi se puser algo mais que uma verificação na mesma função qualquer clique transforma logo num vencedor, obrigado pessoal 😁 Link to comment Share on other sites More sharing options...
sYnced Posted March 1, 2012 Author Report Share Posted March 1, 2012 Bem pessoal, estive a pesquisar mais, visto que a ajuda que me davam aqui dava um bug na mesma(mas atenção obrigadão à mesma porque tentaram ajudar pelo menos) O Codigo que eu fiz para resolver tudo foi este, para aqueles que também estão a fazer o jogo do galo através do meu source, podem usar aquele código e tentar implementar este... Cá vai ele! Era algo simples! string Win = ""; string[,] winningCombos = { {galo[0,0], galo[0,1], galo[0,2]}, {galo[1,0], galo[1,1], galo[1,2]}, {galo[2,0], galo[2,1], galo[2,2]}, {galo[0,0], galo[1,0], galo[2,0]}, {galo[0,1], galo[1,1], galo[2,1]}, {galo[0,2], galo[1,2], galo[2,2]}, {galo[0,0], galo[1,1], galo[2,2]}, {galo[0,2], galo[1,1], galo[2,0]} }; for ( int i = 0; i < winningCombos.GetLength(0); i++) { for (int a = 0; a < winningCombos.GetLength(1); a++) { if ((winningCombos[i, 0] == "O") & (winningCombos[i, 1] == "O") & (winningCombos[i, 2] == "O") & (x % 2 != 0)) { Win = "Jogador O Ganhou"; } if ((winningCombos[i, 0] == "X") & (winningCombos[i, 1] == "X") & (winningCombos[i, 2] == "X")) { Win = "Jogador X Ganhou"; } } } if (Win == "Jogador O Ganhou") { VitoriaY++; MessageBox.Show("Ganhou o Jogador O"); } else if (Win == "Jogador X Ganhou") { VitoriaX++; MessageBox.Show("Ganhou o Jogador X"); } lblX.Text = "X = " + VitoriaX; lblY.Text = "O = " + VitoriaY; verificarempate(); Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now