Esempio n. 1
0
	lasers = []

	# Create the enemies; choose starting location and starting speed for each sprite
	enemies = []
	for i in range(NUM_ENEMIES):
		enemies.append(Enemy(screen, randint(1, (screen.get_size()[0]/2 - 19)), 
			0, randint(1, MAX_SPEED), randint(1, MAX_SPEED)))

	# Keep track of events
	events = {'down': 0, 'up': 0, 'right': 0, 'left': 0}

	# Create battlecruiser
	cruiser = Battlecruiser(screen, SCREEN_WIDTH/2, SCREEN_HEIGHT-100, 4)

	# Create background
	bg = ScrollingBackground(screen, SCROLL_SPEED)

	# Game loop
	while True:
		if cruiser.active == False:
			render_game_over(screen, score)
			for event in pygame.event.get():
				if event.type == pygame.QUIT:
					pygame.quit()
					sys.exit()
				if event.type == KEYDOWN:
					if event.key == K_ESCAPE:
						pygame.quit()
						sys.exit()	
		else:
			time_passed = clock.tick(FPS)
Esempio n. 2
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()