def __init__(self):
        """Creates all game objects needed, loads resources, initializes
        pygame library and sound mixer, sets display mode, etc."""
        self.state = STATE_TITLE
        pygame.mixer.pre_init(buffer=SOUND_BUFFER)
        pygame.init()
        self.clock = Clock()
        self.scr = pygame.display.set_mode(SCREEN_SIZE, VID_MODE_FLAGS)
        pygame.display.set_caption(WINDOW_CAPTION)
        pygame.mouse.set_visible(False)
        LoadingScreen(self.scr).draw()
        sound_box.init()

        self.level = GameLevel()
        self.stats = GameStats(self.scr)
        self.view_pt = ViewPoint(self.scr)
        self.stars = Stars(self.scr, self.view_pt)
        self.track = Track(self.scr, self.view_pt)
        self.explosions = Explosions(self.scr, self.view_pt)
        self.ship = Ship(self.scr, self.view_pt, self.explosions)
        self.asteroids = Asteroids(self.scr, self.view_pt, self.explosions,
                                   self.track)
        self.title_screen = TitleScreen(self.scr, self.view_pt, self.stars)
        self.level_start_screen = LevelStartScreen(self.scr)
        self.level_complete_effect = LevelCompleteEffect(self.scr)
        self.game_over_effect = GameOverEffect(self.scr)
        self.pause_screen = PauseScreen(self.scr)
        self.ending_screen = EndingScreen(self.scr)

        self._init_title()
Exemple #2
0
def main_loop():
    """
    Begins the main loop of Conflict Resolution. This method calls for the title screen loop.
    :return:
    """

    title = TitleScreen()
    title.title_loop()
Exemple #3
0
def main():
    t_screen = TitleScreen()
    active_id, players, client_socket, deck = t_screen.run()

    game = Mongoose(client_socket, deck)
    game.setup_game(active_id, players)

    game.run()
def run_game():
    # Initialize pygame, settings, and screen object
    pygame.mixer.pre_init(44100, -16, 1, 512)
    pygame.init()
    ai_settings = Settings()
    screen = pygame.display.set_mode(
        (ai_settings.screen_width, ai_settings.screen_height)
    )
    game_master = GameMaster(screen)
    title_screen = TitleScreen(screen)
    pygame.display.set_caption("Space Invaders")

    # Make the Play button
    play_button = Button(screen, "Play")

    # Create an instance to store game statistics and create a scoreboard
    stats = GameStats(ai_settings)
    sb = Scoreboard(ai_settings, screen, stats)

    # Make a ship, group of bunkers, a group of bullets, and a group of aliens
    ship = Ship(ai_settings, screen)
    bunkers = Group()
    bullets = Group()
    aliens = Group()
    lasers = Group()

    game_master.last_laser_shot = pygame.time.get_ticks()
    game_master.next_laser_shot = game_master.last_laser_shot + random.randrange(250, 2000)

    gf.create_bunkers(bunkers, screen)
    gf.create_fleet(ai_settings, screen, aliens)

    # Start the main loop for the game
    while True:
        gf.check_events(ai_settings, game_master, screen, stats, sb, play_button, ship, aliens, bullets)

        if stats.game_active:
            ship.update()
            gf.update_bullets(ai_settings, game_master, screen, stats, sb, bunkers, aliens, bullets)
            gf.update_aliens(ai_settings, stats, screen, sb, ship, aliens, bullets)
            gf.update_lasers(ai_settings, screen, game_master, aliens, lasers, ship, bunkers, stats, sb, bullets)
            gf.update_screen(ai_settings, screen, sb, ship, bunkers, aliens, game_master.alien_explosions,
                             lasers, bullets, game_master.ufo)
            game_master.check_ufo_spawn(screen, bullets, stats, sb)
        else:
            gf.update_title_screen(play_button, title_screen)
Exemple #5
0
    def setup(self):
        ## setup scenes
        # 0 = title screen
        title_screen = TitleScreen(self)
        self.scenes.append(title_screen)

        # 1 = game menu
        game_menu = GameMenu(self)
        self.scenes.append(game_menu)

        # 2 = present catch
        present_catch = PresentCatch(self)
        self.scenes.append(present_catch)

        # 3 = present snap
        present_snap = PresentSnap(self)
        self.scenes.append(present_snap)

        # 4 = present match
        present_match = PresentMatch(self)
        self.scenes.append(present_match)

        # setup initial scene
        self.setup_current_scene()
Exemple #6
0
u.set_score_spots()
u.set_score_indices()
u.set_player_score_sprites()
u.assign_x_pos_to_player_score_sprites()
u.set_score_values_x()


################################################################################
# Problem setup
#Problems
question = c.NEW_QUESTION
problem = s.Problem()

################################################################################
# Menu screens setup
title = TitleScreen()
options = OptionsScreen()


################################################################################
# Game event loop
@c.GAME_WINDOW.event
def on_key_release(symbol, modifiers):

    # options screen
    if u.is_options_screen():
        if symbol == key.UP:
            options.selector_up()
        elif symbol == key.DOWN:
            options.selector_down()
        elif symbol == key.B:
Exemple #7
0
 def title(self):
     """ Display the title screen. """
     ts = TitleScreen(self.screen)
     ts.main()
     self.choice = ts.choice
     return ts.running
Exemple #8
0
 def next_scene(self):
     return TitleScreen(self.game)
Exemple #9
0
    def main(self):
        self.music.play()

        # Screen base
        self.screen.fill((0, 0, 0))
        self.screen.blit(self.img_background, self.img_background_rect)

        highscores = Highscores()

        # Main instances
        pavement = Pavement(self.unit)
        snake = Snake(self.unit)
        foods = Foods(self.unit)
        walls = Walls(self.unit)
        score = Score(self.unit, self.surface_rect)

        nextgold = random.randint(
            *Constants.TIMERANGE_GOLD
        ) * Constants.FPS  # first gold between 30 & 60 seconds
        makegold = False
        nextwall = random.randint(
            *Constants.TIMERANGE_WALL
        ) * Constants.FPS  # first gold between 30 & 60 seconds
        makewall = False

        updatestats = True

        counter = 0

        flag_music = True
        flag_pause = False
        #MAIN LOOP
        while self.running:
            time = pygame.time.get_ticks()

            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    self.running = False
                elif event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_ESCAPE:
                        self.running = False

                    elif event.key == pygame.K_m:
                        flag_music = not flag_music
                        if flag_music:
                            self.music.play()
                        else:
                            self.music.stop()

                    elif event.key == pygame.K_1:
                        pygame.image.save(self.screen, "screenshot.jpg")

                    elif event.key == pygame.K_SPACE or event.key == pygame.K_p:
                        flag_pause = True
                        self.print_text("PAUSE")
                        while flag_pause:
                            for event in pygame.event.get():
                                if event.type == pygame.KEYDOWN:
                                    if event.key == pygame.K_p or event.key == pygame.K_SPACE:
                                        flag_pause = False

                    else:
                        # Time to change direction
                        action = 0
                        if event.key == pygame.K_UP or event.key == pygame.K_w:
                            action = 1
                        elif event.key == pygame.K_DOWN or event.key == pygame.K_s:
                            action = 2
                        elif event.key == pygame.K_LEFT or event.key == pygame.K_a:
                            action = 3
                        elif event.key == pygame.K_RIGHT or event.key == pygame.K_d:
                            action = 4
                        if action:
                            self.sounds.play("move")
                            snake.action(action)

            # Snake movements and pavement reactions
            snake.move()
            pavement.passage(snake.head)
            pavement.make_regrow(snake.tail)

            # Snake has eaten?
            if foods.check(snake.head):
                updatestats = True
                snake.grow(Constants.GROW)
                score.add_score(foods.score)
                self.sounds.play("eat")

            # Snake
            if walls.check(snake.head):
                snake.alive = False

            # Snake is dead?
            if not snake.alive:
                #blood splash (bin on head, little on body)
                pavement.bloodsplat(snake.head)
                [
                    pavement.bloodsplat(x, 1) for x in snake.body
                    if random.randint(0, 2) == 0
                ]
                #redraw all the snake
                snake.set_dirty(1)
                self.sounds.play("splat")
                self.running = False

            # Gold generator (After pseudo-random time a golden apple will appear)
            nextgold -= 1
            if nextgold < 0:
                makegold = True
                nextgold = random.randint(
                    *Constants.TIMERANGE_GOLD) * Constants.FPS

            # Wall generator (After pseudo-random time a wall will appear)
            nextwall -= 1
            if nextwall < 0:
                makewall = True
                nextwall = random.randint(
                    *Constants.TIMERANGE_WALL) * Constants.FPS

            # Foods request to create an apple
            # Game has to provide to Foods the list of forbidden blocks
            if foods.needapple or makegold or makewall:
                forbidden = [[-1, -1]]
                forbidden.extend(foods.get_forbidden())
                forbidden.extend(snake.get_forbidden())
                forbidden.extend(walls.get_forbidden())

                # Creates the apples and make the pavement Grass
                if foods.needapple:
                    newpos = foods.make_apple(forbidden)
                    pavement.make_grass(newpos)
                    forbidden.extend(newpos)
                if makegold:
                    self.sounds.play('ding')
                    newpos = foods.make_gold(forbidden)
                    pavement.make_grass(newpos)
                    forbidden.extend(newpos)
                    makegold = False
                if makewall:
                    self.sounds.play('fall')
                    newpos = walls.make_solid(forbidden)
                    pavement.make_none(newpos)
                    forbidden.extend(newpos)
                    makewall = False

            # Foods request pavement update
            for pos in foods.refresh:
                pavement.passage(pos)
                foods.refresh.remove(pos)
                del pos

            # Updates and draws
            pavement.update()
            pavement.draw(self.surface)
            walls.update()
            walls.draw(self.surface)
            snake.update()
            snake.draw(self.surface)
            foods.update()
            foods.draw(self.surface)

            if updatestats or not counter % Constants.FPS:
                score.set_length(snake.length)
                score.update()
                score.draw(self.screen)
                updatestats = False

            if not counter % Constants.FPS:
                score.add_second()
                counter = 0

            # Surface on surface... weeee!
            self.screen.blit(self.surface, self.surface_rect)

            pygame.display.update()
            self.clock.tick(self.tick)
            counter += 1
            #END OF MAIN LOOP

        if not snake.alive:

            self.print_text("GAME OVER")

            if highscores.check(score.score, score.elapse):
                current_string = ''
                complete = False

                inputbox = InputBox(self.unit)
                inputbox.rect.centerx = self.screen.get_rect().centerx
                inputbox.rect.centery = self.screen.get_rect().centery
                inputbox.draw(self.screen)

                pygame.display.update()
                pygame.event.clear()
                redraw = False
                while not complete:
                    event = pygame.event.wait()
                    if event.type == pygame.QUIT:
                        return
                    if event.type != pygame.KEYDOWN:
                        continue
                    if event.key == pygame.K_BACKSPACE:
                        current_string = current_string[:-1]
                        redraw = True
                    elif event.key == pygame.K_RETURN:
                        if len(current_string) == 0:
                            current_string = 'Mysterious player'
                        complete = True
                    elif event.unicode:
                        if len(current_string) <= 15:
                            c = ord(event.unicode)
                            if c >= 32 and c <= 126 or c == 8:
                                current_string += event.unicode
                                redraw = True
                    if redraw:
                        redraw = False
                        inputbox.set_text(current_string)
                        inputbox.update()
                        inputbox.draw(self.screen)
                        pygame.display.update()
                position = highscores.insert(current_string, score.score,
                                             score.elapse)
                highscores.save()
                scored = {'index': position, 'scored': True}
            else:
                counter = Constants.FPS * 3  # 3 seconds
                pygame.display.update()
                while counter > 0:
                    for event in pygame.event.get():
                        if event.type == pygame.QUIT or event.type == pygame.KEYDOWN:
                            counter = 0
                    self.clock.tick(self.tick)
                    pygame.display.update()
                    counter -= 1

                scored = {
                    'elapse': score.elapse,
                    'score': score.score,
                    'scored': False
                }

            ts = TitleScreen(self.screen, self.unit, self.preferences)
            ts.highscores(scored)
            del ts

        self.music.stop()
        return
 def next_scene(self):
     if self.refresh:
         return HighScores(self.game)
     return TitleScreen(self.game)