Пример #1
0
    private void TrySet(int row, int col, Manager.GameMode gameMode)
    {
        if (Manager.fieldState[row, col] != Manager.CellStateType.FIELD)
        {
            return;
        }
        if (!Manager.CanSandwich(row, col, gameMode))
        {
            return;
        }

        switch (Manager.gameMode)
        {
        case Manager.GameMode.WHITE:
            Manager.fieldState[row, col] = Manager.CellStateType.WHITE;
            Manager.ChangeField(row, col);
            Manager.DrawFieldS();
            Manager.gameMode    = Manager.GameMode.BLACK;
            Message.MessageText = Manager.BLACK_TURN_MESSAGE;
            break;

        case Manager.GameMode.BLACK:
            Manager.fieldState[row, col] = Manager.CellStateType.BLACK;
            Manager.ChangeField(row, col);
            Manager.DrawFieldS();
            Manager.gameMode    = Manager.GameMode.WHITE;
            Message.MessageText = Manager.WHITE_TURN_MESSAGE;
            break;
        }
    }
Пример #2
0
    public static List <Manager.CellState> SetableList(Manager.GameMode gameMode)
    {
        List <Manager.CellState> list = new List <Manager.CellState>();

        for (int row = 0; row < Manager.ROW_COUNT; row++)
        {
            for (int col = 0; col < Manager.COL_COUNT; col++)
            {
                if (Manager.fieldState[row, col] != Manager.CellStateType.FIELD)
                {
                    continue;
                }
                if (Manager.CanSandwich(row, col, gameMode))
                {
                    list.Add(new Manager.CellState(row, col, Manager.CellStateType.FIELD));
                }
            }
        }
        return(list);
    }
Пример #3
0
    public static bool CanSandwich(int row, int col, Manager.GameMode gameMode)
    {
        Manager.CellStateType player_type = (gameMode == Manager.GameMode.BLACK) ? Manager.CellStateType.BLACK : Manager.CellStateType.WHITE;
        Manager.CellStateType enemy_type  = (gameMode == Manager.GameMode.BLACK) ? Manager.CellStateType.WHITE : Manager.CellStateType.BLACK;

        int current_row     = row;
        int current_col     = col;
        int get_enemy_count = 0;

        //north
        while (current_row > 0)
        {
            current_row--;
            if (Manager.fieldState[current_row, current_col] == enemy_type)
            {
                get_enemy_count++;
            }
            else if (Manager.fieldState[current_row, current_col] == player_type && get_enemy_count > 0)
            {
                return(true);
            }
            else
            {
                break;
            }
        }

        //reset
        current_row     = row;
        current_col     = col;
        get_enemy_count = 0;

        //east
        while (current_col < Manager.COL_COUNT - 1)
        {
            current_col++;
            if (Manager.fieldState[current_row, current_col] == enemy_type)
            {
                get_enemy_count++;
            }
            else if (Manager.fieldState[current_row, current_col] == player_type && get_enemy_count > 0)
            {
                return(true);
            }
            else
            {
                break;
            }
        }

        //reset
        current_row     = row;
        current_col     = col;
        get_enemy_count = 0;

        //south
        while (current_row < Manager.ROW_COUNT - 1)
        {
            current_row++;
            if (Manager.fieldState[current_row, current_col] == enemy_type)
            {
                get_enemy_count++;
            }
            else if (Manager.fieldState[current_row, current_col] == player_type && get_enemy_count > 0)
            {
                return(true);
            }
            else
            {
                break;
            }
        }

        //reset
        current_row     = row;
        current_col     = col;
        get_enemy_count = 0;

        //west
        while (current_col > 0)
        {
            current_col--;
            if (Manager.fieldState[current_row, current_col] == enemy_type)
            {
                get_enemy_count++;
            }
            else if (Manager.fieldState[current_row, current_col] == player_type && get_enemy_count > 0)
            {
                return(true);
            }
            else
            {
                break;
            }
        }

        //reset
        current_row     = row;
        current_col     = col;
        get_enemy_count = 0;

        //north west
        while (current_row > 0 && current_col > 0)
        {
            current_row--;
            current_col--;
            if (Manager.fieldState[current_row, current_col] == enemy_type)
            {
                get_enemy_count++;
            }
            else if (Manager.fieldState[current_row, current_col] == player_type && get_enemy_count > 0)
            {
                return(true);
            }
            else
            {
                break;
            }
        }

        //reset
        current_row     = row;
        current_col     = col;
        get_enemy_count = 0;

        //north east
        while (current_row > 0 && current_col < Manager.COL_COUNT - 1)
        {
            current_row--;
            current_col++;
            if (Manager.fieldState[current_row, current_col] == enemy_type)
            {
                get_enemy_count++;
            }
            else if (Manager.fieldState[current_row, current_col] == player_type && get_enemy_count > 0)
            {
                return(true);
            }
            else
            {
                break;
            }
        }

        //reset
        current_row     = row;
        current_col     = col;
        get_enemy_count = 0;

        //south west
        while (current_row < Manager.ROW_COUNT - 1 && current_col > 0)
        {
            current_row++;
            current_col--;
            if (Manager.fieldState[current_row, current_col] == enemy_type)
            {
                get_enemy_count++;
            }
            else if (Manager.fieldState[current_row, current_col] == player_type && get_enemy_count > 0)
            {
                return(true);
            }
            else
            {
                break;
            }
        }

        //reset
        current_row     = row;
        current_col     = col;
        get_enemy_count = 0;

        //south east
        while (current_row < Manager.ROW_COUNT - 1 && current_col < Manager.COL_COUNT - 1)
        {
            current_row++;
            current_col++;
            if (Manager.fieldState[current_row, current_col] == enemy_type)
            {
                get_enemy_count++;
            }
            else if (Manager.fieldState[current_row, current_col] == player_type && get_enemy_count > 0)
            {
                return(true);
            }
            else
            {
                break;
            }
        }

        return(false);
    }