jamesjlinden
4/11/2016 - 2:22 AM

Moves_any_dimension_O_k.cs

public class Moves : MonoBehaviour
{
    const int boardSize = 3;
    List<int> rows = new List<int>(boardSize);
    List<int> cols = new List<int>(boardSize);
    int diag0, diag1; 
    bool playerWon;

    public void IncrementMove(Vector2 move)
    {
        // Increment column and check for win
        ++cols[move.x];
        if (cols[move.x] >= boardSize)
            playerWon = true;

        // Increment row and check for win
        ++rows[move.y];
        if (rows[move.y] >= boardSize)
            playerWon = true;

        // Increment diagonals and check for win
        if (move.x == move.y)
            ++diag0;
        if (diag0 >= boardSize)
            playerWon = true;

        // x = 2, y = 0
        // x = 1, y = 1
        // x = 0, y = 2
        if (move.y == (boardSize - 1) - move.x)
            ++diag1;
        if (diag1 >= boardSize)
            playerWon = true;
    }

    public bool CheckForThree()
    {
        return playerWon;
    }
}