Продолжаем тему примеров стратегий для CodeTanks. В данном примере привожу стратегию, написанную на Python 2. Стратегия простая, являющаясая базовой основой, для тех, кто хочет быстро понять принципы программирования AI для RAIC-CT. Суть стратегии заключается в поиске бонусов и езде за ними, попутно выбирая цели для обстрела. Выиграть с такой стратегий вряд ли удастся, но это хороший базис для начинающих ботоводов.
Пишем стратегию для Russian AI Cup - CodeTanks на Python
from math import *
from model.FireType import FireType
from model.TankType import TankType
class MyStrategy:
def move(self, me, world, move):
minAngleToEnemy = 100
for tank in world.tanks:
if tank.teammate:
continue
angleToEnemy = abs(me.get_turret_angle_to_unit(tank))
if angleToEnemy < minAngleToEnemy and tank.crew_health > 0 and tank.hull_durability > 0:
minAngleToEnemy = angleToEnemy
minAngleTank = tank
angleToEnemy = me.get_turret_angle_to_unit(minAngleTank)
if angleToEnemy > pi / 180:
move.turret_turn = 1
elif angleToEnemy < -pi / 180:
move.turret_turn = -1
else:
if me.premium_shell_count > 0:
move.fire_type = FireType.PREMIUM_PREFERRED
else:
move.fire_type = FireType.REGULAR
minBonusAngle = pi / 180 * 5
minBonus = 0
minDistanceToBonus = 123456789
for bonus in world.bonuses:
distanceToBonus = me.get_distance_to_unit(bonus)
if distanceToBonus < minDistanceToBonus:
minDistanceToBonus = distanceToBonus
minBonus = bonus
if minBonus:
angleToBonus = me.get_angle_to_unit(minBonus)
angleToBonusDegrees = angleToBonus * 180 / pi
print minDistanceToBonus
trackSpeed = 1;
trackSpeed2 = 0.3;
if abs(angleToBonusDegrees) > 90:
trackSpeed = -trackSpeed
trackSpeed2 = -trackSpeed2
if angleToBonus > minBonusAngle:
move.left_track_power = trackSpeed
move.right_track_power = trackSpeed2
elif angleToBonus < -minBonusAngle:
move.left_track_power = trackSpeed2
move.right_track_power = trackSpeed
else:
move.left_track_power = trackSpeed
move.right_track_power = trackSpeed
def select_tank(self, tank_index, team_size):
return TankType.MEDIUM
Комментариев нет:
Отправить комментарий