Exemplo n.º 1
0
        internal void NextTurn()
        {
            CurrentBot = 1;

            Step1 = Bot1.Mind.doSmth();
            CurrentBot = 2;
            Step2 = Bot2.Mind.doSmth();

            //обработка стрельбы
            if (Step1.getTypeOfStep() == Steps.BLASTER)
            {
                if (Bot1.canShoot && map.canBlasterShootBeetween(Bot1.Position, Step1.getCoord()))
                {
                    if (Step1.getCoord().X1 == Bot1.Position.X1 && Step1.getCoord().Y1 == Bot1.Position.Y1)
                    {
                        Bot1.Health -= 10;
                    }
                    else
                    {
                        if (Step1.getCoord().X1 == Bot2.Position.X1 && Step1.getCoord().Y1 == Bot2.Position.Y1)
                        {
                            Bot2.Health -= 10;
                            Bot1.Points += 5;
                        }
                        else
                        {

                        }
                    }
                }
                else
                {
                    BotLose = 1;
                    reason = "Бот 1 не может стрелять сюда бластером";
                }
            }

            if (Step1.getTypeOfStep() == Steps.ROCKET)
            {
                if (Bot1.canShoot)
                {
                    if (Step1.getCoord().X1 == Bot1.Position.X1 && Step1.getCoord().Y1 == Bot1.Position.Y1)
                    {
                        Bot1.Health -= 50;
                        Bot1.TurnsToShoot = 5;
                    }
                    else
                    {
                        if (Step1.getCoord().X1 == Bot2.Position.X1 && Step1.getCoord().Y1 == Bot2.Position.Y1)
                        {
                            Bot2.Health -= 50;
                            Bot1.Points += 25;
                            Bot1.TurnsToShoot = 5;
                        }
                        else
                        {
                            Bot1.TurnsToShoot = 5;
                        }
                    }
                }
                else
                {
                    BotLose = 1;
                    reason = "Бот 1 не может стрелять сюда ракетой";
                }
            }

            if (Step2.getTypeOfStep() == Steps.BLASTER)
            {
                if (Bot2.canShoot && map.canBlasterShootBeetween(Bot2.Position, Step2.getCoord()))
                {
                    if (Step2.getCoord().X1 == Bot2.Position.X1 && Step2.getCoord().Y1 == Bot2.Position.Y1)
                    {
                        Bot2.Health -= 10;
                    }
                    else
                    {
                        if (Step2.getCoord().X1 == Bot1.Position.X1 && Step2.getCoord().Y1 == Bot1.Position.Y1)
                        {
                            Bot1.Health -= 10;
                            Bot2.Points += 5;
                        }
                        else
                        {

                        }
                    }
                }
                else
                {
                    BotLose = 2;
                    reason = "Бот 2 не может стрелять сюда бластером";
                }
            }

            if (Step2.getTypeOfStep() == Steps.ROCKET)
            {
                if (Bot2.canShoot)
                {
                    if (Step2.getCoord().X1 == Bot2.Position.X1 && Step2.getCoord().Y1 == Bot2.Position.Y1)
                    {
                        Bot2.Health -= 50;
                        Bot2.TurnsToShoot = 5;
                    }
                    else
                    {
                        if (Step2.getCoord().X1 == Bot1.Position.X1 && Step2.getCoord().Y1 == Bot1.Position.Y1)
                        {
                            Bot1.Health -= 50;
                            Bot2.Points += 25;
                            Bot2.TurnsToShoot = 5;
                        }
                        else
                        {
                            Bot2.TurnsToShoot = 5;
                        }
                    }
                }
                else
                {
                    BotLose = 2;
                    reason = "Бот 2 не может стрелять сюда ракетой";
                }
            }
            // обработка ходов
            //if(CMap.isAllied(Bot1.Position,Step1.getCoord()))
            if ((Step1.getTypeOfStep() == Steps.STEP && Bot1.canGo && Step2.getTypeOfStep() == Steps.STEP && Bot2.canGo &&  //лбы
                Step1.getCoord().X1 == Step2.getCoord().X1 && Step1.getCoord().Y1 == Step2.getCoord().Y1) ||
                (Step1.getTypeOfStep() == Steps.STEP && Step2.getTypeOfStep() == Steps.STEP && Bot2.canGo &&
                Step1.getCoord().X1 == Step2.getCoord().X1 && Step1.getCoord().Y1 == Step2.getCoord().Y1) ||
                (Step1.getTypeOfStep() == Steps.STEP && Bot1.canGo && Step2.getTypeOfStep() == Steps.STEP &&
                Step1.getCoord().X1 == Step2.getCoord().X1 && Step1.getCoord().Y1 == Step2.getCoord().Y1))
                {
                    Bot1.Health--;
                    Bot2.Health--;
                }
            else
            {
                // первый
                if (Step1.getTypeOfStep() == Steps.STEP)
                {
                    if (Bot1.canGo)
                    {
                        if (isNorm(Step1.getCoord()) && isAllied(Step1.getCoord(), Bot1.Position) && map.map[Step1.getCoord().X1, Step1.getCoord().Y1] != TypesOfField.WALL)
                        {
                            map.map[Bot1.Position.X1, Bot1.Position.Y1] = TypesOfField.NOTHING;
                            Bot1.Position = Step1.getCoord();
                            if (!Bot1.isDead && map.map[Step1.getCoord().X1, Step1.getCoord().Y1] == TypesOfField.MEDKIT)
                            {
                                map.Medics--;
                                map.Spaces++;
                                Bot1.Health += 20;
                                if (Bot1.Health > 100)
                                    Bot1.Health = 100;
                            }
                            if (map.map[Step1.getCoord().X1, Step1.getCoord().Y1] == TypesOfField.BONUS)
                            {
                                map.Bonuses--;
                                map.Spaces++;
                                Bot1.Points += 100;
                            }
                            map.map[Bot1.Position.X1, Bot1.Position.Y1] = TypesOfField.ME;

                        }
                        else
                        {
                            BotLose = 1;
                            reason = "Бот 1 не может сюда ходить";
                        }
                    }
                    else
                    {
                        if (!(Step1.getCoord().X1 == Bot1.Position.X1 && Step1.getCoord().Y1 == Bot1.Position.Y1))
                        {
                            BotLose = 1;
                            reason = "Бот 1 ранен и не может сюда ходить";
                        }

                    }
                }
                // второй
                if (Step2.getTypeOfStep() == Steps.STEP)
                {
                    if (Bot2.canGo)
                    {
                        if (isNorm(Step2.getCoord()) && isAllied(Step2.getCoord(), Bot2.Position) && map.map[Step2.getCoord().X1, Step2.getCoord().Y1] != TypesOfField.WALL)
                        {
                            map.map[Bot2.Position.X1, Bot2.Position.Y1] = TypesOfField.NOTHING;
                            Bot2.Position = Step2.getCoord();
                            if (!Bot2.isDead && map.map[Step2.getCoord().X1, Step2.getCoord().Y1] == TypesOfField.MEDKIT)
                            {
                                map.Medics--;
                                map.Spaces++;
                                Bot2.Health += 20;
                                if (Bot2.Health > 100)
                                    Bot2.Health = 100;
                            }
                            if (map.map[Step2.getCoord().X1, Step2.getCoord().Y1] == TypesOfField.BONUS)
                            {
                                map.Bonuses--;
                                map.Spaces++;
                                Bot2.Points += 100;
                            }
                            map.map[Bot2.Position.X1, Bot2.Position.Y1] = TypesOfField.HI;
                        }
                        else
                        {
                            BotLose = 2;
                            reason = "Бот 2 не может сюда ходить";
                        }
                    }
                    else
                    {
                        if (!(Step2.getCoord().X1 == Bot2.Position.X1 && Step2.getCoord().Y1 == Bot2.Position.Y1))
                        {
                            BotLose = 2;
                            reason = "Бот 2 ранен и не может сюда ходить";
                        }
                    }
                }

                //финализация

                TimeToEnd--;
                GameEnd = Bot1.isDead || Bot2.isDead || TimeToEnd == 0 || BotLose != -1;
                if (!GameEnd)
                {
                    if (Bot1.isSlow)
                        if (Bot1.TurnsToStep == 0)
                            Bot1.TurnsToStep = 1;
                        else
                            Bot1.TurnsToStep = 0;

                    if (Bot2.isSlow)
                        if (Bot2.TurnsToStep == 0)
                            Bot2.TurnsToStep = 1;
                        else
                            Bot2.TurnsToStep = 0;

                    if (Bot1.TurnsToShoot > 0)
                        Bot1.TurnsToShoot--;
                    if (Bot2.TurnsToShoot > 0)
                        Bot2.TurnsToShoot--;
                }

            }
        }