jeudi 12 mars 2020

Is there a better way to make this code do the same thing? [duplicate]

I am making a TicTacToe game and this code is intended as a win condition checking mechanism. I have tried converting this code from if statements into loops but I am not sure what I am doing wrong. Here is my base code with all the If statements:

{
            char winner = '_';
            for (int i = 0; i < 3; i++)
            {
                //check win for p1
                if(cells[i,0] == p1 && cells[i,1] == p1 && cells[i,2] == p1) //horizontal
                {
                    winner = p1;
                }
                else if (cells[0, i] == p1 && cells[1, i] == p1 && cells[2, i] == p1)//vertical
                {
                    winner = p1;
                }
                else if (cells[0, 0] == p1 && cells[1, 1] == p1 && cells[2, 2] == p1)//diagonal left to right
                {
                    winner = p1;
                }
                else if (cells[0, 2] == p1 && cells[1, 1] == p1 && cells[2, 0] == p1)//diagonal right to left
                {
                    winner = p1;
                }
                //check win for p2
                else if (cells[i, 0] == p2 && cells[i, 1] == p2 && cells[i, 2] == p2)//horizontal
                {
                    winner = p2;
                }
                else if (cells[0, i] == p2 && cells[1, i] == p2 && cells[2, i] == p2)//vertical
                {
                    winner = p2;
                }
                else if (cells[0, 0] == p2 && cells[1, 1] == p2 && cells[2, 2] == p2)//diagonal left to right
                {
                    winner = p2;
                }
                else if (cells[0, 2] == p2 && cells[1, 1] == p2 && cells[2, 0] == p2)//diagonal right to left
                {
                    winner = p2;
                }

            }
            return winner;
        }

Aucun commentaire:

Enregistrer un commentaire