def run(self): self.initialState() self.screen = pygame.display.set_mode((self.width, self.height)) pygame.display.set_caption("Galaxy Destroyer") self.p1 = player.Player(self) self.bg = pygame.image.load(u'img/bg.png') self.clock = pygame.time.Clock() self.running = True while self.running: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() if event.type == pygame.KEYDOWN: shoot = self.p1.moveKeyDown(event) if shoot: self.shoots.add(shoot) if event.key == pygame.K_p: self.paused = 1 if self.paused: self.pause() self.score() self.updateLevel(); key = pygame.key.get_pressed() self.randomAsteroids() self.p1.move(key, self.shoots) self.checkCollision() self.screen.blit(self.bg, (0, 0)) self.screen.blit(self.p1.image, self.p1.rect) for asteroid in self.asteroids: asteroid.update() self.screen.blit(asteroid.image, asteroid.rect) if asteroid.rect.top > self.screen.get_height() or\ (asteroid.rect.right < 0 and asteroid.speedx < 0) or\ (asteroid.rect.left > self.screen.get_width() and asteroid.speedx > 0): self.asteroids.remove(asteroid) for shoot in self.shoots: shoot.update() self.screen.blit(shoot.image, shoot.rect) if shoot.rect.bottom < 0: self.shoots.remove(shoot) for e in self.explosions: if hasattr(e, u'image'): self.screen.blit(e.image, e.rect) self.screen.blit(self.levelLabel, (10, 40)) self.screen.blit(self.scoreLabel, (10, 10)) self.clock.tick(40) pygame.display.flip() self.time += self.clock.get_time() self.gameover()
def run(self): self.initialState() self.screen = pygame.display.set_mode((self.width, self.height)) pygame.display.set_caption("Galaxy Destroyer") self.p1 = player.Player(self) self.bg = pygame.image.load(u'img/bg.png') self.clock = pygame.time.Clock() self.running = True while self.running: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() if event.type == pygame.KEYDOWN: shoot = self.p1.moveKeyDown(event) if shoot: self.shoots.add(shoot) if event.key == pygame.K_p: self.paused = 1 if self.paused: self.pause() self.score() self.updateLevel() key = pygame.key.get_pressed() self.randomAsteroids() self.p1.move(key, self.shoots) self.checkCollision() self.screen.blit(self.bg, (0, 0)) self.screen.blit(self.p1.image, self.p1.rect) for asteroid in self.asteroids: asteroid.update() self.screen.blit(asteroid.image, asteroid.rect) if asteroid.rect.top > self.screen.get_height() or\ (asteroid.rect.right < 0 and asteroid.speedx < 0) or\ (asteroid.rect.left > self.screen.get_width() and asteroid.speedx > 0): self.asteroids.remove(asteroid) for shoot in self.shoots: shoot.update() self.screen.blit(shoot.image, shoot.rect) if shoot.rect.bottom < 0: self.shoots.remove(shoot) for e in self.explosions: if hasattr(e, u'image'): self.screen.blit(e.image, e.rect) self.screen.blit(self.levelLabel, (10, 40)) self.screen.blit(self.scoreLabel, (10, 10)) self.clock.tick(40) pygame.display.flip() self.time += self.clock.get_time() self.gameover()
def frame_update(dt, input_actions): global level_text_brightness, hs if len(asteroids) == 0: next_level() for asteroid in asteroids: asteroid.update(dt, screen_size) player1.update(dt, screen_size) if player1.score > hs: hs = player1.score ######### input action --------------- if sum(input_actions) != 1: raise ValueError('Multiple input actions!') rt, reward0 = get_input_action(dt, input_actions) ################## actions store prev_actions_len = 512 if len(action_list) > prev_actions_len: #action_list= action_list[-2:] action_list.pop(0) action_list.append(input_actions) if len(action_list) > 0: action_last = action_list[len(action_list) - 1] count_a = 0 for action_t in action_list[:-1]: if list(action_last) == list(action_t): count_a += 1 #print('action_last== action_t',action_last,action_t) else: #print('action_last!= action_t',action_last,action_t) pass # if same actions for loop, reduce reward if count_a > 12: reward0 = reward0 - count_a * 0.05 ######### get reward ---------------- reward1 = player1.collide_bullets(asteroids, particle_system, dt) reward2, terminal = player1.collide_asteroids(asteroids, particle_system) reward = reward1 + reward2 + reward0 particle_system.update(dt) if level_text_brightness > 0.0: level_text_brightness -= dt return True, reward, terminal
def update(dt): global level_text_brightness, hs if len(asteroids) == 0 and len(asteroids2) == 0 and not more_troids2.has_been_called: more_troids2() elif len(asteroids) == 0 and len(asteroids2) == 0 and len(asteroids3) == 0 and not more_troids3.has_been_called: more_troids3() elif len(asteroids) == 0 and len(asteroids2) == 0 and len(asteroids3) == 0 and more_troids3.has_been_called and more_troids2.has_been_called: if level < 10: next_level() else: reset_game() more_troids3.has_been_called = False more_troids2.has_been_called = False for asteroid in asteroids: asteroid.update(dt, screen_size) #surface.blit(ast, astrect) for asteroid2 in asteroids2: asteroid2.update(dt, screen_size) #surface.blit(ast2, ast2rect) for asteroid3 in asteroids3: asteroid3.update(dt, screen_size) #surface.blit(ast3, ast3rect) player1.update(dt, screen_size) if player1.score > hs: hs = player1.score player1.collide_bullets(asteroids, particle_system, dt) player1.collide_asteroids(asteroids, particle_system) player1.collide_bullets(asteroids2, particle_system, dt) player1.collide_asteroids(asteroids2, particle_system) player1.collide_bullets(asteroids3, particle_system, dt) player1.collide_asteroids(asteroids3, particle_system) emitter_rocket.set_position(player1.position) ## particle_system.set_particle_occluders([asteroid.occluder for asteroid in asteroids]) particle_system.update(dt) if level_text_brightness > 0.0: level_text_brightness -= dt return True
def update(dt): global level_text_brightness, hs if len(asteroids) == 0: next_level() for asteroid in asteroids: asteroid.update(dt, screen_size) player1.update(dt, screen_size) if player1.score > hs: hs = player1.score player1.collide_bullets(asteroids, particle_system, dt) player1.collide_asteroids(asteroids, particle_system) emitter_rocket.set_position(player1.position) ## particle_system.set_particle_occluders([asteroid.occluder for asteroid in asteroids]) particle_system.update(dt) if level_text_brightness > 0.0: level_text_brightness -= dt return True