Example #1
0
    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()
Example #2
0
    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()
Example #3
0
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
Example #4
0
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
Example #5
0
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
Example #6
0
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