Jump to content

Jogo do galo[Um Problema]


sYnced
 Share

Recommended Posts

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

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

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
Link to comment
Share on other sites

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.