예제 #1
0
class Game (object):

    def __init__(self):
        """Game encompasses the entirety of all game states/objects/etc.
        Here we make our game screen and init some variables for holding our
        game objects."""
        self.screen = Screen()
        self.gameobjects = []
        #NOTE: We have to specifically set screen to self.screen otherwise
        #      it will set dimensions to self.screen, which is BAD
        self.player = Player( (25,50), screen=self.screen )
    
    def run(self):
        """The main game loop. Handles events"""
        self.screen.add_object( EvilMage( (100,100), screen=self.screen ) )
        self.screen.add_object( Text( (500,0), "Test", screen=self.screen) )
        self.screen.add_player( self.player )
        self.screen.run()
        #TODO: eventually have a prompt for saving, etc.
        self.quit()

    
    def quit(self):
        """Quit the game."""
        exit()
예제 #2
0
def run():
    pygame.init()

    screen = Screen()
    # mixer.music.load('sounds/background.wav')
    # mixer.music.play(-1)

    player = Player()
    playerX_change = 0
    playerY_change = 0
    screen.add_player(player)
    score = 0
    bullets = []

    for enemy in enemies:
        screen.add_enemy(enemy)

    # Game Loop
    running = True
    while running:
        screen.fill()
        screen.show_score(score)

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False

            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT or event.key == pygame.K_a:
                    playerX_change -= 0.5
                if event.key == pygame.K_RIGHT or event.key == pygame.K_d:
                    playerX_change += 0.5
                if event.key == pygame.K_UP or event.key == pygame.K_w:
                    playerY_change -= 0.5
                if event.key == pygame.K_DOWN or event.key == pygame.K_s:
                    playerY_change += 0.5
                if event.key == pygame.K_SPACE:
                    if len(bullets) < 50:
                        bullet = Bullet(player)
                        bullets.append(bullet)
                        mixer.Sound('sounds/laser.wav').play()

            if event.type == pygame.KEYUP:
                if event.key == pygame.K_LEFT or event.key == pygame.K_a or event.key == pygame.K_RIGHT or event.key == pygame.K_d:
                    playerX_change = 0
                if event.key == pygame.K_UP or event.key == pygame.K_w or event.key == pygame.K_DOWN or event.key == pygame.K_s:
                    playerY_change = 0

        player.move_player(playerX_change, playerY_change)
        screen.add_player(player)

        for enemy in enemies:
            enemy.move_enemy()
            screen.add_enemy(enemy)
            if enemy.check_for_collision(player):
                screen.game_over()
                running = False
            for bullet in bullets:
                screen.add_bullet(bullet)
                if bullet.Y < 0:
                    bullets.remove(bullet)
                if enemy.check_for_collision(bullet):
                    screen.kill_enemy(enemy)
                    # Show Explosion briefly
                    pygame.display.update()
                    enemies.remove(enemy)
                    mixer.Sound('sounds/explosion.wav').play()
                    score += 1

        if len(enemies) == 0:
            x = random.randint(0, 320)
            if score < 80:
                while len(enemies) < 5:
                    if score < 20:
                        create_enemyA(x)
                    if 20 <= score < 50:
                        create_enemyB(x)
                    if 50 <= score < 80:
                        create_enemyC(x)
                    x += 64
            if 80 <= score < 150:
                while len(enemies) < 10:
                    create_enemyC(x)
                    x += 64
            if 150 <= score:
                while len(enemies) < 15:
                    create_enemyC(x)
                    x += 64

        pygame.display.update()