class Game: def __init__(self): pygame.init() utils.reset_step() self.paused = False self.clock = pygame.time.Clock() pygame.display.set_caption("Sito Force") self.screen = pygame.display.set_mode((1024, 700), HWSURFACE) # Background size 1024x600 self.background = utils.load_image("misc/" + utils.type_terrain + "_background.png") self.cp_background = self.background.copy() self.screen.blit(self.background, (0, 0)) self.menu = utils.load_image("misc/battle_menu.png") self.cp_menu = self.menu.copy() self.screen.blit(self.menu, (0, 600)) pygame.display.flip() def print_deb(self): font_text = pygame.font.SysFont(pygame.font.get_default_font(), 20) surface_text = font_text.render("FPS: " + str(self.clock.get_fps()), True, (0, 0, 0)) self.screen.blit(surface_text, (0, 0)) font_text = pygame.font.SysFont(pygame.font.get_default_font(), 20) surface_text = font_text.render("Step: " + str(utils.step), True, (0, 0, 0)) self.screen.blit(surface_text, (0, 15)) def pause(self): self.paused = not self.paused def capture_events(self): for event in pygame.event.get(): if event.type == QUIT: exit() elif event.type == KEYDOWN: if event.key == K_ESCAPE: exit() elif event.key == K_F1: pygame.display.toggle_fullscreen() elif event.key == K_F9: utils.is_debug = utils.is_debug == False elif event.key == K_F10: self.pause() elif event.type == MOUSEBUTTONDOWN: if event.button == 1: self.cursor.check_click(self.allunits, self.battle_menu) elif event.type == utils.LEFT_ABILITY_EVENT: if event.name == "magic_l1": # We need to move the magics to be attributtes of the general m = ApplyStatus( TargetFunction(1, self, "enemies", "everyone"), self.left_general, 0, BlindStatus, ["Lightness", 50], ) m.cast() elif event.name == "magic_l2": m = Nuke( TargetFunction(1, self, "all", "random_bomb", radius=50, outer_radius=400), self.left_general, 0, 100, "magical", ) m.cast(self.allunits) def left_minions(self): l = [] for i in range(1, 10): for j in range(1, 11): pos = [40 + i * 40, 80 + j * 40] m = Minion("soldiermonkey", pos, 1) l.append(m) self.units_l.add(l) self.allunits.add(l) def rigth_minions(self): l = [] for i in range(1, 10): for j in range(1, 11): pos = [940 - i * 40, 80 + j * 40] m = Minion("flyingninja", pos, -1) l.append(m) self.units_r.add(l) self.allunits.add(l) def other_sprites(self): self.left_general = General("gamekaa", (6, 256), 1) self.allunits.add(self.left_general) self.cursor = Cursor() self.gcursor = pygame.sprite.GroupSingle(self.cursor) def start(self): utils.update_step() self.units_l = pygame.sprite.Group([]) self.units_r = pygame.sprite.Group([]) self.allunits = pygame.sprite.LayeredUpdates([]) self.left_minions() self.rigth_minions() self.other_sprites() self.allunits.update() t1 = AdvanceTactic() t2 = StopTactic() t3 = RetreatTactic() t1.apply(self.units_l) t1.apply(self.units_r) # t1.apply(self.units_l, queue=False) # t3.apply(self.units_r, queue=True) self.battle_menu = Battle_Menu(self.menu, self.cursor, self.left_general) while 1: self.capture_events() if self.paused: continue utils.step = utils.step + 1 self.clock.tick(utils.tick_rate) for m in self.allunits: # if m != self.cursor: m.friends = [] m.enemies = [] collides_l = pygame.sprite.groupcollide(self.units_l, self.units_r, False, False) collides_r = pygame.sprite.groupcollide(self.units_r, self.units_l, False, False) for m in collides_l: m.enemies = collides_l[m] m.fight() for m in collides_r: m.enemies = collides_r[m] m.fight() for m in self.units_l: collides_l = pygame.sprite.spritecollide(m, self.units_l, False, pygame.sprite.collide_rect) m.add_friends(collides_l) for m in self.units_r: collides_r = pygame.sprite.spritecollide(m, self.units_r, False, pygame.sprite.collide_rect) m.add_friends(collides_r) self.allunits.update() self.cursor.update() self.battle_menu.update() self.screen.blit(self.background, (0, 0)) if utils.is_debug: self.print_deb() self.screen.blit(self.menu, (0, 600)) self.allunits.draw(self.screen) self.gcursor.draw(self.screen) pygame.display.flip()
def start(self): utils.update_step() self.units_l = pygame.sprite.Group([]) self.units_r = pygame.sprite.Group([]) self.allunits = pygame.sprite.LayeredUpdates([]) self.left_minions() self.rigth_minions() self.other_sprites() self.allunits.update() t1 = AdvanceTactic() t2 = StopTactic() t3 = RetreatTactic() t1.apply(self.units_l) t1.apply(self.units_r) # t1.apply(self.units_l, queue=False) # t3.apply(self.units_r, queue=True) self.battle_menu = Battle_Menu(self.menu, self.cursor, self.left_general) while 1: self.capture_events() if self.paused: continue utils.step = utils.step + 1 self.clock.tick(utils.tick_rate) for m in self.allunits: # if m != self.cursor: m.friends = [] m.enemies = [] collides_l = pygame.sprite.groupcollide(self.units_l, self.units_r, False, False) collides_r = pygame.sprite.groupcollide(self.units_r, self.units_l, False, False) for m in collides_l: m.enemies = collides_l[m] m.fight() for m in collides_r: m.enemies = collides_r[m] m.fight() for m in self.units_l: collides_l = pygame.sprite.spritecollide(m, self.units_l, False, pygame.sprite.collide_rect) m.add_friends(collides_l) for m in self.units_r: collides_r = pygame.sprite.spritecollide(m, self.units_r, False, pygame.sprite.collide_rect) m.add_friends(collides_r) self.allunits.update() self.cursor.update() self.battle_menu.update() self.screen.blit(self.background, (0, 0)) if utils.is_debug: self.print_deb() self.screen.blit(self.menu, (0, 600)) self.allunits.draw(self.screen) self.gcursor.draw(self.screen) pygame.display.flip()