Exemple #1
0
        public void ClickCell(int x, int y)
        {
            switch (game_model.GetStatusApplication())
            {
            case StatusApplication.game:
                if (game_model.GetStatusPlayer() == StatusPlayer.human)
                {
                    if (game_model.HumanStep(x, y) == true)    //если человек сходил
                    {
                        game_model.NextPlayer();

                        if (game_model.SearchAnyMove())           //есть ходы?
                        {
                            switch (game_model.GetStatusPlayer()) //да
                            {
                            case StatusPlayer.human:
                                // надо ли есть?
                                if (game_model.SearchEatingAndWriteToMove())
                                {
                                    game_model.SetStatusGame(StatusGame.waitEat);
                                }
                                return;

                            case StatusPlayer.bot:
                                //включили таймер
                                form_view.timer.Enabled = true;
                                return;
                            }
                        }
                        else
                        {
                            //нет: конец игры
                            if (game_model.GetStatusGame() != StatusGame.gameOver)
                            {
                                game_model.SetStatusGame(StatusGame.gameOver);
                                if (game_model.GetColor() == Color.white)
                                {
                                    GameEnd();
                                    MessageBox.Show("Game over. Black won");
                                }
                                else if (game_model.GetColor() == Color.black)
                                {
                                    GameEnd();
                                    MessageBox.Show("Game over. White won");
                                }
                                return;
                            }
                            return;
                        }
                    }
                }
                break;


            case StatusApplication.constructor:
                if (form_view.IsCheckedButtonAdd())    //если выбраны настройки для шашки и не выбран Delete
                {
                    if ((x + y) % 2 == 1)
                    {
                        Color col = form_view.GetChosenColor();
                        if (form_view.count[(int)col] < 12 || col == game_model.GetColOfCh(x, y))
                        {
                            form_view.count[(int)game_model.GetColOfCh(x, y)] += game_model.DeleteChecker(x, y);   //удаляй старую шашку
                        }
                        if (form_view.count[(int)col] < 12)
                        {
                            form_view.count[(int)col] += game_model.CreateChecker(new Checker(col, form_view.GetChosenFigure(), x, y));    //вставляй новую
                        }
                    }
                }
                else if (form_view.IsCheckedButtonDelete())    //если выбрана кнопка delete - удаляй шашку.
                {
                    form_view.count[(int)game_model.GetColOfCh(x, y)] += game_model.DeleteChecker(x, y);
                }
                if (form_view.count[0] > 0 && form_view.count[1] > 0)
                {
                    form_view.SetButtonPlayEnabled(true);
                }
                else
                {
                    form_view.SetButtonPlayEnabled(false);
                }
                break;
                //default: MessageBox.Show("Error, status != game or constructor, status == "+ game_model.GetStatusApplication().ToString()); break;
            }
        }