def __init__(self, colour, respawnpoint, algorithm, visible=True): pygame.sprite.Sprite.__init__(self, self.containers) self.image = self.images[colour * 6] self.rect = self.image.get_rect() x = GameData.battleground[ GameData.battlegroundnr].respawnpoints[respawnpoint][0] + 6 y = GameData.battleground[ GameData.battlegroundnr].respawnpoints[respawnpoint][1] + 4 angle = GameData.battleground[ GameData.battlegroundnr].respawnpoints[respawnpoint][2] newpos = self.rect.move((x, y)) self.rect = newpos self.colour = colour self.algorithm = algorithm self.visible = visible self.angle = angle self.gear = 0 self.bullets = 0 self.deaths = 0 self.kills = 0 self.state = 0 self.command_queue = [] self.original = self.image center = self.rect.center rotate = pygame.transform.rotate self.image = rotate(self.original, self.angle) self.rect = self.image.get_rect(center=center) self.x = self.rect.left self.y = self.rect.top self.gun_cooldown = GameData.bulletloadtime self.gear_cooldown = GameData.gearcooldown # display tank on scoreboard self.icon_display = TankCopy(self.colour) if pygame.font: self.kills_display = Score("kills : %d", "orange", 870, 190 + self.colour * 75) self.deaths_display = Score("deaths : %d", "red", 870, 222 + self.colour * 75) # Make A.I. tanks come out of their spawn point at the start of a new game if self.colour <> GameData.red: self.command_queue = [] for i in range(0, 20): self.command_queue.append("up") self.command_queue.append("shoot") self.command_queue.append("flush")
def __init__(self, colour, respawnpoint, algorithm, visible=True): #делаем спрайтом pygame.sprite.Sprite.__init__(self, self.containers) #подгружаем нужную картинку self.image = self.images[colour * 6] #помещаем в прямоугольник self.rect = self.image.get_rect() # в респаун на последнее поля боя с нужным углом x = GameData.battleground[ GameData.battlegroundnr].respawnpoints[respawnpoint][0] + 6 y = GameData.battleground[ GameData.battlegroundnr].respawnpoints[respawnpoint][1] + 4 angle = GameData.battleground[ GameData.battlegroundnr].respawnpoints[respawnpoint][2] #ставим танк спомощью move((x, y)) newpos = self.rect.move((x, y)) self.rect = newpos #сохраняем здесь цвет, переданный этому танку-спрайту(может и синий,а может и красный) self.colour = colour #алгоритм self.algorithm = algorithm #делаем видимым self.visible = visible #его ориентация в 2D self.angle = angle #пока он стоит на месте = нулевая передача self.gear = 0 #не стрелял self.bullets = 0 #не умирал self.deaths = 0 #не убивал self.kills = 0 #вначале он отображается и на окне заставки(можно убрать) self.state = 0 #заводим для него очередь команд self.command_queue = [] #распологаем его правильно в респауне, по параметру self.angle ставим спиной к стене self.original = self.image center = self.rect.center rotate = pygame.transform.rotate self.image = rotate(self.original, self.angle) self.rect = self.image.get_rect(center=center) self.x = self.rect.left self.y = self.rect.top #передача и нагрев для танка self.gun_cooldown = GameData.bulletloadtime self.gear_cooldown = GameData.gearcooldown # отображение танка на панели очков #делаем копию танкатого же цвета self.icon_display = TankCopy(self.colour) #в пустом цикле if pygame.font: #отображаем число смертей и число убитых танков self.kills_display = Score("kills : %d", "orange", 870, 190 + self.colour * 75) self.deaths_display = Score("deaths : %d", "red", 870, 222 + self.colour * 75) # создаём ботов в их респаунах в начале игры #если не красныйтанк if self.colour != GameData.red: #передаём очередь команд self.command_queue = [] #и здесь самый простеший "искусственный интелект" говорящий,как выйти боту из респауна for i in range(0, 20): #вверх self.command_queue.append("up") #стрельни self.command_queue.append("shoot") #стой self.command_queue.append("flush")