class GameWindow(pyglet.window.Window): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.set_location(400, 100) self.frame_rate = 1/60.0 self.player = GameObject( posx = 200, posy = 200 ,image = "Mario_Super.png") self.enemie1 = Enemies(posx=500, posy=200, image="goomba_1.png") self.enemie2 = Enemies(posx=300, posy=200, image="goomba_1.png") self.background = BackgroundObject(posx = 0, posy = 0, image ='background_0.jpg') self.brick = BackgroundObject(posx=0, posy=0, image='brick.png') def on_key_press(self, symbol, modifiers): if symbol == key.RIGHT: self.player.velx = 150 self.background.velx = -150 if symbol == key.LEFT: self.player.velx = -150 self.background.velx = 150 if symbol == key.UP: self.player.vely = 150 if symbol == key.DOWN: self.player.vely = -150 if symbol == key.A: self.player.imageList = self.player.image_list_attack if symbol == key.W: self.player.imageList = self.player.image_list_walk self.background.velx = -150 if symbol == key.S: self.player.imageList = self.player.image_list_swim if symbol == key.D: self.player.imageList = self.player.image_list_dash if symbol == key.J: self.player.imageList = self.player.image_list_jump if symbol == key.C: self.player.imageList = self.player.image_list_climb def on_key_release(self, symbol, modifiers): if symbol in (key.RIGHT, key.LEFT): self.player.velx = 0 self.background.velx = 0 if symbol in (key.UP, key.DOWN, key.C): self.player.vely =0 if symbol in (key.A, key.W, key.S, key.D, key.J, key.C): self.player.imageList = self.player.image_list_default self.background.velx = 0 def on_draw(self): self.clear() self.background.draw() self.brick.draw() self.player.draw() self.enemie1.draw() self.enemie2.draw() def update(self, dt): self.player.update(dt) self.background.update()
def main(): #SCREEN_SIZEの画面を作成 screen = pygame.display.set_mode(global_data.SCREEN_SIZE) #タイトルバーの文字列をセット pygame.display.set_caption(u"シューティングゲーム") #FPSの取得 clock = pygame.time.Clock() myship = MyShip(50,50) enemies = Enemies() while True: #FPSを60に設定 clock.tick(60) #背景色の設定 screen.fill((255,255,255)) # ***いろんな処理*** # myship.move() enemies.move() enemies.reloadEnemy() myship.draw(pygame,screen) enemies.draw(pygame,screen) #画面の更新 pygame.display.update() for event in pygame.event.get(): if event.type == QUIT: pygame.quit(); sys.exit() elif event.type == KEYDOWN: if event.key == K_RIGHT: myship.direction["right"] = True elif event.key == K_LEFT: myship.direction["left"] = True if event.key == K_UP: myship.direction["up"] = True elif event.key == K_DOWN: myship.direction["down"] = True elif event.type == KEYUP: if event.key == K_RIGHT: myship.direction["right"] = False elif event.key == K_LEFT: myship.direction["left"] = False if event.key == K_UP: myship.direction["up"] = False elif event.key == K_DOWN: myship.direction["down"] = False
class Game: def __init__(self): self.map = Map() self.towers = Towers(self.map) self.enemies = Enemies(self.map, self.towers) self.menu = Menu(self.map, self.towers, self.enemies, screen_width, screen_height) self.dragging_tower = False self.round = 1 self.start_round() def start_round(self, round=0): difficulty = round + 3 self.enemies.new_round(difficulty=difficulty) def round_traker(self): if all([ enemy.deprecated == True or enemy.in_the_end == True for enemy in self.enemies.enemies ]): self.round += 1 self.start_round(round=self.round) def on_mouse_motion(self, x, y, dx, dy): self.map.on_mouse_motion(x, y, dx, dy) def on_mouse_drag(self, x, y, dx, dy, buttons, modifiers): self.menu.on_mouse_drag(x, y, dx, dy, buttons, modifiers) def update(self, dt): self.round_traker() self.towers.update(dt, self.enemies) self.enemies.update(dt, self.towers) def user_text_draw(self): self.enemies_left = pyglet.text.Label( f'{len([enemy for enemy in self.enemies.enemies if not enemy.deprecated or enemy.in_the_end])} over {len(self.enemies.enemies)} enemies left', font_name='Helvetica', font_size=12, x=window.width - 200, y=window.height - 100, anchor_x='center', anchor_y='center') self.enemies_left.draw() self.round_nb = pyglet.text.Label(f'round {self.round}', font_name='Helvetica', font_size=12, x=window.width - 200, y=window.height - 120, anchor_x='center', anchor_y='center') self.round_nb.draw() def draw(self): window.clear() self.map.draw() self.towers.draw() self.enemies.draw() self.menu.draw() self.user_text_draw() def on_mouse_press(self, x, y, button, modifiers): self.menu.on_mouse_press(x, y) def on_mouse_release(self, x, y, button, modifiers): self.menu.on_mouse_release(x, y)