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--; } } }