Ejemplo n.º 1
0
    # handle events
    input(pygame.event.get())
    time_passed = clock.tick(FPS)

    # manage the background
    screen.blit(background, (0,background_pos))
    background_pos -= 1
    if background_pos <= SCREEN_HEIGHT - background.get_height():
        background_pos = 0

    # draw the score
    text = font.render("Score:" + str(score), 1, (0,255,0))
    screen.blit(text, COUNTER_LOCATION)

    # manage the cruiser
    my_cruiser.update()
    my_cruiser.draw()

    # manage the enemies
    enemies.update()
    time_to_respawn += 1
    if time_to_respawn >= 100 and not gameover:
        for j in range (randint(0, 10)):
            enemies.add(Enemy(screen, randint(1, SCREEN_WIDTH), 0, randint(1, 5), randint(1,5)))
        time_to_respawn = 0
    for e in enemies:
        e.draw()
        # detect laser-enemy collisions
        if pygame.sprite.spritecollide(e, my_cruiser.lasers, True):
            score += e.die()
    
Ejemplo n.º 2
0
						enemy.hit()
						laser.hit()
						score += 100
				
			# Redraw the background
			screen.fill(BACKGROUND_COLOR)

			# Draw scrolling background
			bg.update()
			bg.draw()

			# Show score
			screen.blit(text, SCORE_LOCATION)

			# Update & draw battle cruiser
			cruiser.update(events)
			cruiser.draw()
		
			# Update and redraw all sprites
			for laser in lasers:
				laser.update()
				laser.draw()

			for enemy in enemies:
				enemy.update()
				enemy.draw()
			
			# Draw sprites
			pygame.display.flip()
		
Ejemplo n.º 3
0
         if event.key == K_UP:
             ship_events.append(event)
         if event.key == K_DOWN:
             ship_events.append(event)
         if event.key == K_LEFT:
             ship_events.append(event)
         if event.key == K_RIGHT:
             ship_events.append(event)
     
      
 screen.fill(BACKGROUND_COLOR)
 ram_aras.update()
 end_aras.update()
 ram_aras.draw()
 
 ship.update(ship_events)
 ship_events = []
 ship.draw()
 
 for zerg in swarm:
     zerg.update()
     zerg.draw()
     if pygame.sprite.collide_rect(ship, zerg) and ship.active == True and zerg.active == True:
         ship.death()
         game_over = True
     
     
     for shot in ship.lasers:
         if pygame.sprite.collide_rect(shot,zerg) and zerg.active == True:
             score+=100
             ship.lasers.remove(shot)
Ejemplo n.º 4
0
class Game:
    DEBUG = False

    def __init__(self, title, screen_width, screen_height):
        # Initialize Pygame
        pygame.init()

        # Set up screen
        self.SCREEN_WIDTH = screen_width
        self.SCREEN_HEIGHT = screen_height

        self.window = pygame.display.set_mode((self.SCREEN_WIDTH, self.SCREEN_HEIGHT))
        pygame.display.set_caption(title) # Set the window bar title
        self.screen = pygame.display.get_surface() # This is where images are displayed

        # Set up font
        self.font = pygame.font.Font(None, 36)

        # Generate Battlecruiser
        self.battlecruiser = Battlecruiser(self.screen,
                                           self.SCREEN_WIDTH / 2,
                                           self.SCREEN_HEIGHT * 5 / 7)

        # Generate 10 enemies
        self.enemies = []
        for i in range(10):
            self.enemies.append(Enemy(self.screen, randint(0, self.SCREEN_WIDTH), randint(0, self.SCREEN_HEIGHT - 300), self.battlecruiser))

        # Add all sprites to group
        self.sprites = pygame.sprite.Group(self.battlecruiser, self.enemies)

        # Set up clock
        self.clock = pygame.time.Clock()
        self.FPS = 30
        self.seconds = 0
        pygame.time.set_timer(USEREVENT + 1, 1000) # Used to correctly implement seconds

    def run(self):
        while True: # for each frame
            self.handle_input()
            for sprite in self.sprites:
                sprite.update()

            self.clock.tick(self.FPS)
            self.screen.fill((255, 255, 255))

            for sprite in self.sprites:
                sprite.draw()

            score = (11 - len(self.sprites)) * 100
            ending_font = self.font.render("Score: {0}".format(score), 1, (0, 0, 255))
            self.screen.blit(ending_font, (10, 10))

            pygame.display.flip()

    def handle_input(self):
        for event in pygame.event.get():
            if event.type == QUIT:
                self.quit()
            elif event.type == KEYDOWN:
                if event.key == K_ESCAPE:
                    self.quit()
                elif event.key == K_LEFT:
                    self.battlecruiser.update("LEFT")
                elif event.key == K_RIGHT:
                    self.battlecruiser.update("RIGHT")
                elif event.key == K_UP:
                    self.battlecruiser.update("UP")
                elif event.key == K_DOWN:
                    self.battlecruiser.update("DOWN")
                elif event.key == K_SPACE:
                    self.battlecruiser.update("FIRE")
            elif event.type == USEREVENT + 1:
                self.seconds += 1

    def quit(self):
        quit()
Ejemplo n.º 5
0
def main():
    # Check if sound and font are supported
    if not pygame.font:
        print "Warning, fonts disabled"
    if not pygame.mixer:
        print "Warning, sound disabled"

        # Constants
    FPS = 50
    SCREEN_WIDTH, SCREEN_HEIGHT = 800, 600
    BACKGROUND_COLOR = (0, 0, 0)
    LASER_SPEED = 300
    SHIP_SPEED = 300
    SCROLL_SPEED = 50
    SCORE_POS = (20, 20)
    ENEMY_RELEASE_DELAY = 750
    MIN_SPEED = 100
    MAX_SPEED = 350

    # Initialize Pygame, the clock, a font, and a screen
    pygame.init()
    pygame.display.set_caption("Game.py")
    screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT), 0, 32)
    clock = pygame.time.Clock()
    font = pygame.font.Font(None, 36)
    endfont = pygame.font.Font(None, 60)

    # Create the sprite group
    lasers = pygame.sprite.Group()
    enemies = pygame.sprite.Group()
    player = Battlecruiser(screen, (SCREEN_WIDTH / 2), -1, SHIP_SPEED)
    background = ScrollingBackground(screen, SCROLL_SPEED)

    # Initialize variables
    score = 0
    delay_counter = 0

    # Game loop
    while True:
        time_passed = clock.tick(FPS)

        # Event handling here (to quit)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            elif event.type == KEYDOWN:
                if event.key == K_ESCAPE:
                    pygame.quit()
                    sys.exit()
                if event.key == K_SPACE and player.get_state() == "Flying":
                    lasers.add(player.shoot())
                if event.key == K_UP:
                    player.up()
                if event.key == K_DOWN:
                    player.down()
                if event.key == K_LEFT:
                    player.left()
                if event.key == K_RIGHT:
                    player.right()
                if event.key == K_r and player.get_state() == "Dead":
                    enemies.empty()
                    lasers.empty()
                    background.kill()
                    background = ScrollingBackground(screen, SCROLL_SPEED)
                    player.kill()
                    player = Battlecruiser(screen, (SCREEN_WIDTH / 2), -1, SHIP_SPEED)
            elif event.type == KEYUP:
                if event.key == K_UP:
                    if player.get_direction()[1] < 0:
                        player.zero_vert()
                if event.key == K_DOWN:
                    if player.get_direction()[1] > 0:
                        player.zero_vert()
                if event.key == K_LEFT:
                    if player.get_direction()[0] < 0:
                        player.zero_hort()
                if event.key == K_RIGHT:
                    if player.get_direction()[0] > 0:
                        player.zero_hort()

                        # Update if player still alive
        if player.get_state() == "Flying":

            delay_counter += time_passed
            if delay_counter >= ENEMY_RELEASE_DELAY:
                enemies.add(
                    Enemy(
                        screen,
                        randint(1, SCREEN_WIDTH),
                        0,
                        randint(MIN_SPEED, MAX_SPEED),
                        randint(MAX_SPEED * -1, MAX_SPEED),
                        randint(MIN_SPEED, MAX_SPEED) * -1,
                    )
                )
                delay_counter = 0

                # Redraw the background
            background.update(time_passed)
            background.draw()

            # Draw score
            fontscore = font.render(str(score), 1, (255, 255, 255))
            screen.blit(fontscore, SCORE_POS)

            # Check for collisions
            player_collision = pygame.sprite.spritecollideany(player, enemies)
            if player_collision is not None:
                if player_collision.get_state() is not "Dead":
                    player.explode()

            collided = pygame.sprite.groupcollide(enemies, lasers, False, False)
            for enemy in collided:
                if enemy.get_state() == "Flying":
                    enemy.explode()
                    score += 100

                    # Update and redraw all enemies
            enemies.update(time_passed)
            for enemy in enemies.sprites():
                enemy.draw()

                # Update and redraw all lasers
            lasers.update(time_passed)
            for laser in lasers.sprites():
                laser.draw()

            player.update(time_passed)
            player.draw()

            # Allow death to progress
        else:
            player.update(time_passed)
            player.draw()

            if player.get_active():
                endtext = endfont.render("Final Score: " + str(score), 1, (255, 255, 255))
                screen.blit(endtext, (240, 180))
            else:
                endtext = endfont.render(("'r' to restart."), 1, (255, 255, 255))
                screen.blit(endtext, (240, 250))

                # Draw the sprites
        pygame.display.update()
Ejemplo n.º 6
0
        ''' Generate a new enemy every so often '''
        if (len(enemies) <= 10 and counter % (FPS / ENEMY_GEN) == 0):
            enemies.append(Enemy(screen, ENEMY_IMAGE, EXPLODE_IMAGE, randint(0, SCREEN_WIDTH), 1, randint(-1*ENEMY_MAX_SPEED, ENEMY_MAX_SPEED), ENEMY_MAX_SPEED, ))
        
        #update stuff
        enemy_index = 0
        for enemy in enemies:
            if enemy.active == False:
                enemies.pop(enemy_index)
            else:
                enemy.update(FPS)
                enemy.draw()
            enemy_index += 1
            

        player.update(FPS)
        player.draw()

        counter += 1
        y_pos_on_scroll += 1

        ''' collision detection '''
        for enemy in enemies:
            for laser in player.lasers:
                if (pygame.sprite.collide_rect(laser, enemy) and enemy.exploding == False):
                    score += 100
                    enemy.explode()
                    break
        #check if player lost
        for enemy in enemies:
            if (pygame.sprite.collide_rect(player, enemy) == True):