Example #1
0
    def run(self):
        """The main game loop"""
        while True:
            """-------------------------------MENU------------------------------------"""

            if self.state == S_MENU:
                self.menu.draw()

            self.keys = pygame.key.get_pressed()

            if self.state == S_MENU:
                for event in pygame.event.get():
                    # Handle generic events
                    for event_type, callback in self.events.items():
                        if event.type == event_type:
                            callback(event)

                    # Handle keyboard events
                    if event.type == pygame.KEYDOWN:
                        for event_key in self.keymap_singlepress.keys():
                            if event.key == event_key:
                                self.keymap_singlepress[(event_key)](event)
            """-------------------------------PREGAME MENU-----------------------------"""

            self.keys = pygame.key.get_pressed()

            if self.state == S_PREGAME:
                if self.pregame_menu == False:
                    del (self.menu)
                    self.menu = False
                    self.pregame_menu = PreGameMenu(self)

                self.pregame_menu.draw()

                for event in pygame.event.get():
                    # Handle generic events
                    for event_type, callback in self.events.items():
                        if event.type == event_type:
                            callback(event)

                    # Handle keyboard events
                    if event.type == pygame.KEYDOWN:
                        for event_key in self.keymap_singlepress.keys():
                            if event.key == event_key:
                                self.keymap_singlepress[(event_key)](event)
            """-------------------------------GAME------------------------------------"""

            if self.state == S_GAME:
                if not self.paused:
                    for event in pygame.event.get():
                        for event_type, callback in self.events.items():
                            if event.type == event_type:
                                callback(event)

                        if event.type == pygame.KEYDOWN:
                            for event_key in self.keymap_singlepress.keys():
                                if event.key == event_key:
                                    self.keymap_singlepress[(event_key)](event)

                    for event_key in self.keymap.keys():
                        if self.keys[event_key]:
                            self.keymap[(event_key)]()

                else:
                    pass

                self.map.draw()

                for bullet in self.ammo:
                    bullet.update()
                    bullet.draw()

                for player in self.agents:
                    player.update()
                    player.draw()

                for animation in Animation.List:
                    animation.animate()
                    animation.draw()

                if len(self.agents) < 2:
                    if self.wait > 0:
                        self.wait -= self.clock.get_time()
                    else:
                        self.wait = 1500
                        if len(self.agents) == 1:
                            self.stats.inform(self.agents[0].name, score=1)
                            logging.debug(self.stats.data)
                            self.agents[0].dead = True
                        else:
                            print("draw")
                        if self.debug:
                            print(
                                str(self.stats.data[self.all_player_names[0]].
                                    get('score', 0)) + " - " +
                                str(self.stats.data[
                                    self.all_player_names[1]].get('score', 0)))
                            print('Distance: {}, Distance: {}'.format(
                                self.stats.data[self.all_player_names[0]].get(
                                    'move', '0'),
                                self.stats.data[self.all_player_names[1]].get(
                                    'move', '0')))
                            print('Shots: {}, Shots: {}'.format(
                                self.stats.data[self.all_player_names[0]].get(
                                    'shots_fired', '0'),
                                self.stats.data[self.all_player_names[1]].get(
                                    'shots_fired', '0')))
                            print('Stickybombs: {}, Stickybombs: {}'.format(
                                self.stats.data[self.all_player_names[0]].get(
                                    'stickybomb_fired', '0'),
                                self.stats.data[self.all_player_names[1]].get(
                                    'stickybomb_fired', '0')))

                        self.agents = []
                        self.ammo = []
                        Animation.List = []

                        self.betweengame_menu = False
                        self.state = S_BETWEENGAME
            """------------------------------BETWEEN-----------------------------------"""
            if self.state == S_BETWEENGAME:
                if self.betweengame_menu == False:
                    del (self.menu)
                    self.menu = False
                    self.betweengame_menu = BetweenGameMenu(self)

                self.betweengame_menu.draw()

            self.keys = pygame.key.get_pressed()

            if self.state == S_BETWEENGAME:
                for event in pygame.event.get():
                    for event_type, callback in self.events.items():
                        if event.type == event_type:
                            callback(event)

                if event.type == pygame.KEYDOWN:
                    for event_key in self.keymap_singlepress.keys():
                        if event.key == event_key:
                            self.keymap_singlepress[(event_key)](event)
            """-------------------------------AFTER---------------------------------------"""
            if self.state == S_AFTERGAME:
                if self.aftergame_menu == False:
                    del (self.menu)
                    self.menu = False
                    self.aftergame_menu = AfterGameMenu(self)

                self.aftergame_menu.draw()

            self.keys = pygame.key.get_pressed()

            if self.state == S_AFTERGAME:
                for event in pygame.event.get():
                    for event_type, callback in self.events.items():
                        if event.type == event_type:
                            callback(event)

                if event.type == pygame.KEYDOWN:
                    for event_key in self.keymap_singlepress.keys():
                        if event.key == event_key:
                            self.keymap_singlepress[(event_key)](event)
            """-------------------------------UPGRADES------------------------------------"""

            if self.state == S_UPGRADES:
                pygame.quit()
                sys.exit()
            """-------------------------------ABOUT------------------------------------"""

            if self.state == S_ABOUT:
                self.menu = Menu()
                self.menu.about()
            """-------------------------------SETTINGS------------------------------------"""

            if self.state == S_SETTINGS:
                self.menu = Menu()
                self.menu.settings()

            if self.displaytime:
                self.screen.blit(
                    self.font.render(str(int(self.clock.get_fps())), True,
                                     (255, 255, 255)), (10, 10))

            pygame.display.flip()
            self.clock.tick(self.fps)
Example #2
0
class Controller():
    """The core game logic that switches states and connects all other internal modules"""
    def __init__(self, debug=False):

        self.debug = debug

        ## Centers game window, needs to be before pygame.init()
        os.environ['SDL_VIDEO_CENTERED'] = '1'

        self.state = S_MENU
        self.fps = FPS
        self.paused = False
        self.all_player_names = []

        self.wait = 1500  #WAITING TIME AFTER FIRST PLAYER DIES, BEFORE MENU SHOWS UP. IN MILLISECONDS.

        self.keymap = {}  #REGISTER KEPRESS CONSTANTLY
        self.keymap_singlepress = {}  #REGISTER KEYPRESS ONE TIME
        self.events = {}  #REGISTER EVENT

        #PYGAME INIT REQUIRED
        pygame.init()
        self.screen = pygame.display.set_mode(SCREEN_SIZE)
        pygame.display.set_caption(CAPTION)
        self.font = pygame.font.Font("fonts/04b.ttf", 18)
        self.scorefont = pygame.font.Font("fonts/04b.ttf", 42)
        self.keys = pygame.key.get_pressed()
        self.clock = pygame.time.Clock()

        self.register_eventhandler(pygame.QUIT, self.quit)
        self.register_key(pygame.K_ESCAPE, self.quit, singlepress=True)

        #self.menu = MainMenu(self)
        self.pregame_menu = False
        self.betweengame_menu = False
        self.aftergame_menu = False
        #Sound.sounds_init()
        #Sound.Sounds["menumusic"].play()

        self.displaytime = False
        self.ammo = []

        self.maps = ["grass", "sand"]

        if self.debug:
            self.displaytime = True

    def run(self):
        """The main game loop"""
        while True:
            """-------------------------------MENU------------------------------------"""

            if self.state == S_MENU:
                self.menu.draw()

            self.keys = pygame.key.get_pressed()

            if self.state == S_MENU:
                for event in pygame.event.get():
                    # Handle generic events
                    for event_type, callback in self.events.items():
                        if event.type == event_type:
                            callback(event)

                    # Handle keyboard events
                    if event.type == pygame.KEYDOWN:
                        for event_key in self.keymap_singlepress.keys():
                            if event.key == event_key:
                                self.keymap_singlepress[(event_key)](event)
            """-------------------------------PREGAME MENU-----------------------------"""

            self.keys = pygame.key.get_pressed()

            if self.state == S_PREGAME:
                if self.pregame_menu == False:
                    del (self.menu)
                    self.menu = False
                    self.pregame_menu = PreGameMenu(self)

                self.pregame_menu.draw()

                for event in pygame.event.get():
                    # Handle generic events
                    for event_type, callback in self.events.items():
                        if event.type == event_type:
                            callback(event)

                    # Handle keyboard events
                    if event.type == pygame.KEYDOWN:
                        for event_key in self.keymap_singlepress.keys():
                            if event.key == event_key:
                                self.keymap_singlepress[(event_key)](event)
            """-------------------------------GAME------------------------------------"""

            if self.state == S_GAME:
                if not self.paused:
                    for event in pygame.event.get():
                        for event_type, callback in self.events.items():
                            if event.type == event_type:
                                callback(event)

                        if event.type == pygame.KEYDOWN:
                            for event_key in self.keymap_singlepress.keys():
                                if event.key == event_key:
                                    self.keymap_singlepress[(event_key)](event)

                    for event_key in self.keymap.keys():
                        if self.keys[event_key]:
                            self.keymap[(event_key)]()

                else:
                    pass

                self.map.draw()

                for bullet in self.ammo:
                    bullet.update()
                    bullet.draw()

                for player in self.agents:
                    player.update()
                    player.draw()

                for animation in Animation.List:
                    animation.animate()
                    animation.draw()

                if len(self.agents) < 2:
                    if self.wait > 0:
                        self.wait -= self.clock.get_time()
                    else:
                        self.wait = 1500
                        if len(self.agents) == 1:
                            self.stats.inform(self.agents[0].name, score=1)
                            logging.debug(self.stats.data)
                            self.agents[0].dead = True
                        else:
                            print("draw")
                        if self.debug:
                            print(
                                str(self.stats.data[self.all_player_names[0]].
                                    get('score', 0)) + " - " +
                                str(self.stats.data[
                                    self.all_player_names[1]].get('score', 0)))
                            print('Distance: {}, Distance: {}'.format(
                                self.stats.data[self.all_player_names[0]].get(
                                    'move', '0'),
                                self.stats.data[self.all_player_names[1]].get(
                                    'move', '0')))
                            print('Shots: {}, Shots: {}'.format(
                                self.stats.data[self.all_player_names[0]].get(
                                    'shots_fired', '0'),
                                self.stats.data[self.all_player_names[1]].get(
                                    'shots_fired', '0')))
                            print('Stickybombs: {}, Stickybombs: {}'.format(
                                self.stats.data[self.all_player_names[0]].get(
                                    'stickybomb_fired', '0'),
                                self.stats.data[self.all_player_names[1]].get(
                                    'stickybomb_fired', '0')))

                        self.agents = []
                        self.ammo = []
                        Animation.List = []

                        self.betweengame_menu = False
                        self.state = S_BETWEENGAME
            """------------------------------BETWEEN-----------------------------------"""
            if self.state == S_BETWEENGAME:
                if self.betweengame_menu == False:
                    del (self.menu)
                    self.menu = False
                    self.betweengame_menu = BetweenGameMenu(self)

                self.betweengame_menu.draw()

            self.keys = pygame.key.get_pressed()

            if self.state == S_BETWEENGAME:
                for event in pygame.event.get():
                    for event_type, callback in self.events.items():
                        if event.type == event_type:
                            callback(event)

                if event.type == pygame.KEYDOWN:
                    for event_key in self.keymap_singlepress.keys():
                        if event.key == event_key:
                            self.keymap_singlepress[(event_key)](event)
            """-------------------------------AFTER---------------------------------------"""
            if self.state == S_AFTERGAME:
                if self.aftergame_menu == False:
                    del (self.menu)
                    self.menu = False
                    self.aftergame_menu = AfterGameMenu(self)

                self.aftergame_menu.draw()

            self.keys = pygame.key.get_pressed()

            if self.state == S_AFTERGAME:
                for event in pygame.event.get():
                    for event_type, callback in self.events.items():
                        if event.type == event_type:
                            callback(event)

                if event.type == pygame.KEYDOWN:
                    for event_key in self.keymap_singlepress.keys():
                        if event.key == event_key:
                            self.keymap_singlepress[(event_key)](event)
            """-------------------------------UPGRADES------------------------------------"""

            if self.state == S_UPGRADES:
                pygame.quit()
                sys.exit()
            """-------------------------------ABOUT------------------------------------"""

            if self.state == S_ABOUT:
                self.menu = Menu()
                self.menu.about()
            """-------------------------------SETTINGS------------------------------------"""

            if self.state == S_SETTINGS:
                self.menu = Menu()
                self.menu.settings()

            if self.displaytime:
                self.screen.blit(
                    self.font.render(str(int(self.clock.get_fps())), True,
                                     (255, 255, 255)), (10, 10))

            pygame.display.flip()
            self.clock.tick(self.fps)

    def quit(self, event):
        logging.info('Quitting!')
        pygame.quit()
        sys.exit()

    def start_game(self, map_type):
        self.agents = [
            Player(self, 'green', pygame.K_d, pygame.K_s, pygame.K_a,
                   pygame.K_w, pygame.K_f, pygame.K_g, 100, 100, 180),
            Robot(self, 'purple', pygame.K_RIGHT, pygame.K_DOWN, pygame.K_LEFT,
                  pygame.K_UP, pygame.K_k, pygame.K_l, 900, 600)
        ]
        self.map = map.World(self, map_type)
        self.map.generate()
        self.stats = Stats(*self.agents)
        self.state = S_GAME

    def continue_game(self):
        self.agents = [
            Player(self, 'green', pygame.K_d, pygame.K_s, pygame.K_a,
                   pygame.K_w, pygame.K_f, pygame.K_g, 100, 100),
            Player(self, 'purple', pygame.K_RIGHT, pygame.K_DOWN,
                   pygame.K_LEFT, pygame.K_UP, pygame.K_k, pygame.K_l, 900,
                   600)
        ]
        self.agents[0].name = self.all_player_names[0]
        self.agents[1].name = self.all_player_names[1]
        self.map = map.World(self, random.choice(self.maps))
        self.map.generate()
        self.state = S_GAME

    def start_pregame(self):
        self.pregame_menu = False  # Make sure there's no old menu
        self.state = S_PREGAME

    def register_key(self, event_key, callback, singlepress=False):
        """Binds keys to callback-functions"""
        if singlepress == False:
            self.keymap[(event_key)] = callback
        else:
            self.keymap_singlepress[(event_key)] = callback

    def register_eventhandler(self, event_type, callback):
        """Binds events to callback-functions"""
        logging.debug('{}: Registering eventhandler ({}, {})'.format(
            self.__class__.__name__, event_type, callback))
        self.events[event_type] = callback

    def unregister_eventhandler(self, event_type, callback):
        value = self.events.get(event_type)
        if value is not None and value == callback:
            logging.debug('{}: Unregistering eventhandler ({}, {})'.format(
                self.__class__.__name__, event_type, callback))
            del (self.events[event_type])
Example #3
0
class Controller:
    """The core game logic that switches states and connects all other internal modules"""

    def __init__(self, debug=False):

        self.debug = debug

        ## Centers game window, needs to be before pygame.init()
        os.environ["SDL_VIDEO_CENTERED"] = "1"

        self.state = S_MENU
        self.fps = FPS
        self.paused = False
        self.all_player_names = []

        self.wait = 1500  # WAITING TIME AFTER FIRST PLAYER DIES, BEFORE MENU SHOWS UP. IN MILLISECONDS.

        self.keymap = {}  # REGISTER KEPRESS CONSTANTLY
        self.keymap_singlepress = {}  # REGISTER KEYPRESS ONE TIME
        self.events = {}  # REGISTER EVENT

        # PYGAME INIT REQUIRED
        pygame.init()
        self.screen = pygame.display.set_mode(SCREEN_SIZE)
        pygame.display.set_caption(CAPTION)
        self.font = pygame.font.Font("fonts/04B.TTF", 18)
        self.scorefont = pygame.font.Font("fonts/04B.TTF", 42)
        self.keys = pygame.key.get_pressed()
        self.clock = pygame.time.Clock()

        self.register_eventhandler(pygame.QUIT, self.quit)
        self.register_key(pygame.K_ESCAPE, self.quit, singlepress=True)

        self.menu = MainMenu(self)
        self.pregame_menu = False
        self.betweengame_menu = False
        self.aftergame_menu = False
        Sound.sounds_init()
        Sound.Sounds["menumusic"].play()

        self.displaytime = False
        self.ammo = []

        self.maps = ["grass", "sand"]

        if self.debug:
            self.displaytime = True

    def run(self):
        """The main game loop"""
        while True:

            """-------------------------------MENU------------------------------------"""

            if self.state == S_MENU:
                self.menu.draw()

            self.keys = pygame.key.get_pressed()

            if self.state == S_MENU:
                for event in pygame.event.get():
                    # Handle generic events
                    for event_type, callback in self.events.iteritems():
                        if event.type == event_type:
                            callback(event)

                    # Handle keyboard events
                    if event.type == pygame.KEYDOWN:
                        for event_key in self.keymap_singlepress.iterkeys():
                            if event.key == event_key:
                                self.keymap_singlepress[(event_key)](event)

            """-------------------------------PREGAME MENU-----------------------------"""

            self.keys = pygame.key.get_pressed()

            if self.state == S_PREGAME:
                if self.pregame_menu == False:
                    del (self.menu)
                    self.menu = False
                    self.pregame_menu = PreGameMenu(self)

                self.pregame_menu.draw()

                for event in pygame.event.get():
                    # Handle generic events
                    for event_type, callback in self.events.iteritems():
                        if event.type == event_type:
                            callback(event)

                    # Handle keyboard events
                    if event.type == pygame.KEYDOWN:
                        for event_key in self.keymap_singlepress.iterkeys():
                            if event.key == event_key:
                                self.keymap_singlepress[(event_key)](event)

            """-------------------------------GAME------------------------------------"""

            if self.state == S_GAME:
                if not self.paused:
                    for event in pygame.event.get():
                        for event_type, callback in self.events.iteritems():
                            if event.type == event_type:
                                callback(event)

                        if event.type == pygame.KEYDOWN:
                            for event_key in self.keymap_singlepress.iterkeys():
                                if event.key == event_key:
                                    self.keymap_singlepress[(event_key)](event)

                    for event_key in self.keymap.iterkeys():
                        if self.keys[event_key]:
                            self.keymap[(event_key)]()

                else:
                    pass

                self.map.draw()

                for bullet in self.ammo:
                    bullet.update()
                    bullet.draw()

                for player in self.agents:
                    player.update()
                    player.draw()

                for animation in Animation.List:
                    animation.animate()
                    animation.draw()

                if len(self.agents) < 2:
                    if self.wait > 0:
                        self.wait -= self.clock.get_time()
                    else:
                        self.wait = 1500
                        if len(self.agents) == 1:
                            self.stats.inform(self.agents[0].name, score=1)
                            logging.debug(self.stats.data)
                            self.agents[0].dead = True
                        else:
                            print ("draw")
                        if self.debug:
                            print str(self.stats.data[self.all_player_names[0]].get("score", 0)) + " - " + str(
                                self.stats.data[self.all_player_names[1]].get("score", 0)
                            )
                            print "Distance: {}, Distance: {}".format(
                                self.stats.data[self.all_player_names[0]].get("move", "0"),
                                self.stats.data[self.all_player_names[1]].get("move", "0"),
                            )
                            print "Shots: {}, Shots: {}".format(
                                self.stats.data[self.all_player_names[0]].get("shots_fired", "0"),
                                self.stats.data[self.all_player_names[1]].get("shots_fired", "0"),
                            )
                            print "Stickybombs: {}, Stickybombs: {}".format(
                                self.stats.data[self.all_player_names[0]].get("stickybomb_fired", "0"),
                                self.stats.data[self.all_player_names[1]].get("stickybomb_fired", "0"),
                            )

                        self.agents = []
                        self.ammo = []
                        Animation.List = []
                        #                    if self.round_check(self.score1, self.score2):
                        #                        if self.score1 > self.score2:
                        #                            print("Purple Wins The Game!")
                        #                        else:
                        #                            print("Green Wins The Game!")
                        #                        self.aftergame_menu = False
                        #                        self.state = S_AFTERGAME
                        #                    else:
                        self.betweengame_menu = False
                        self.state = S_BETWEENGAME

            """------------------------------BETWEEN-----------------------------------"""
            if self.state == S_BETWEENGAME:
                if self.betweengame_menu == False:
                    del (self.menu)
                    self.menu = False
                    self.betweengame_menu = BetweenGameMenu(self)

                self.betweengame_menu.draw()

            self.keys = pygame.key.get_pressed()

            if self.state == S_BETWEENGAME:
                for event in pygame.event.get():
                    for event_type, callback in self.events.iteritems():
                        if event.type == event_type:
                            callback(event)

                if event.type == pygame.KEYDOWN:
                    for event_key in self.keymap_singlepress.iterkeys():
                        if event.key == event_key:
                            self.keymap_singlepress[(event_key)](event)

            """-------------------------------AFTER---------------------------------------"""
            if self.state == S_AFTERGAME:
                if self.aftergame_menu == False:
                    del (self.menu)
                    self.menu = False
                    self.aftergame_menu = AfterGameMenu(self)

                self.aftergame_menu.draw()

            self.keys = pygame.key.get_pressed()

            if self.state == S_AFTERGAME:
                for event in pygame.event.get():
                    for event_type, callback in self.events.iteritems():
                        if event.type == event_type:
                            callback(event)

                if event.type == pygame.KEYDOWN:
                    for event_key in self.keymap_singlepress.iterkeys():
                        if event.key == event_key:
                            self.keymap_singlepress[(event_key)](event)

            """-------------------------------UPGRADES------------------------------------"""

            if self.state == S_UPGRADES:
                pygame.quit()
                sys.exit()

            """-------------------------------ABOUT------------------------------------"""

            if self.state == S_ABOUT:
                self.menu = Menu()
                self.menu.about()

            """-------------------------------SETTINGS------------------------------------"""

            if self.state == S_SETTINGS:
                self.menu = Menu()
                self.menu.settings()

            if self.displaytime:
                self.screen.blit(self.font.render(str(int(self.clock.get_fps())), True, (255, 255, 255)), (10, 10))

            pygame.display.flip()
            self.clock.tick(self.fps)

    def quit(self, event):
        logging.info("Quitting!")
        pygame.quit()
        sys.exit()

    def start_game(self, map_type):
        self.agents = [
            Player(
                self, "green", pygame.K_d, pygame.K_s, pygame.K_a, pygame.K_w, pygame.K_f, pygame.K_g, 100, 100, 180
            ),
            Player(
                self,
                "purple",
                pygame.K_RIGHT,
                pygame.K_DOWN,
                pygame.K_LEFT,
                pygame.K_UP,
                pygame.K_k,
                pygame.K_l,
                900,
                600,
            ),
        ]
        self.map = map.World(self, map_type)
        self.map.generate()
        self.stats = Stats(*self.agents)
        self.state = S_GAME

    def continue_game(self):
        self.agents = [
            Player(self, "green", pygame.K_d, pygame.K_s, pygame.K_a, pygame.K_w, pygame.K_f, pygame.K_g, 100, 100),
            Player(
                self,
                "purple",
                pygame.K_RIGHT,
                pygame.K_DOWN,
                pygame.K_LEFT,
                pygame.K_UP,
                pygame.K_k,
                pygame.K_l,
                900,
                600,
            ),
        ]
        self.agents[0].name = self.all_player_names[0]
        self.agents[1].name = self.all_player_names[1]
        self.map = map.World(self, random.choice(self.maps))
        self.map.generate()
        self.state = S_GAME

    def start_pregame(self):
        self.pregame_menu = False  # Make sure there's no old menu
        self.state = S_PREGAME

    def register_key(self, event_key, callback, singlepress=False):
        """Binds keys to callback-functions"""
        if singlepress == False:
            self.keymap[(event_key)] = callback
        else:
            self.keymap_singlepress[(event_key)] = callback

    def register_eventhandler(self, event_type, callback):
        """Binds events to callback-functions"""
        logging.debug("{}: Registering eventhandler ({}, {})".format(self.__class__.__name__, event_type, callback))
        self.events[event_type] = callback

    def unregister_eventhandler(self, event_type, callback):
        value = self.events.get(event_type)
        if value is not None and value == callback:
            logging.debug(
                "{}: Unregistering eventhandler ({}, {})".format(self.__class__.__name__, event_type, callback)
            )
            del (self.events[event_type])
Example #4
0
    def run(self):
        """The main game loop"""
        while True:

            """-------------------------------MENU------------------------------------"""

            if self.state == S_MENU:
                self.menu.draw()

            self.keys = pygame.key.get_pressed()

            if self.state == S_MENU:
                for event in pygame.event.get():
                    # Handle generic events
                    for event_type, callback in self.events.iteritems():
                        if event.type == event_type:
                            callback(event)

                    # Handle keyboard events
                    if event.type == pygame.KEYDOWN:
                        for event_key in self.keymap_singlepress.iterkeys():
                            if event.key == event_key:
                                self.keymap_singlepress[(event_key)](event)

            """-------------------------------PREGAME MENU-----------------------------"""

            self.keys = pygame.key.get_pressed()

            if self.state == S_PREGAME:
                if self.pregame_menu == False:
                    del (self.menu)
                    self.menu = False
                    self.pregame_menu = PreGameMenu(self)

                self.pregame_menu.draw()

                for event in pygame.event.get():
                    # Handle generic events
                    for event_type, callback in self.events.iteritems():
                        if event.type == event_type:
                            callback(event)

                    # Handle keyboard events
                    if event.type == pygame.KEYDOWN:
                        for event_key in self.keymap_singlepress.iterkeys():
                            if event.key == event_key:
                                self.keymap_singlepress[(event_key)](event)

            """-------------------------------GAME------------------------------------"""

            if self.state == S_GAME:
                if not self.paused:
                    for event in pygame.event.get():
                        for event_type, callback in self.events.iteritems():
                            if event.type == event_type:
                                callback(event)

                        if event.type == pygame.KEYDOWN:
                            for event_key in self.keymap_singlepress.iterkeys():
                                if event.key == event_key:
                                    self.keymap_singlepress[(event_key)](event)

                    for event_key in self.keymap.iterkeys():
                        if self.keys[event_key]:
                            self.keymap[(event_key)]()

                else:
                    pass

                self.map.draw()

                for bullet in self.ammo:
                    bullet.update()
                    bullet.draw()

                for player in self.agents:
                    player.update()
                    player.draw()

                for animation in Animation.List:
                    animation.animate()
                    animation.draw()

                if len(self.agents) < 2:
                    if self.wait > 0:
                        self.wait -= self.clock.get_time()
                    else:
                        self.wait = 1500
                        if len(self.agents) == 1:
                            self.stats.inform(self.agents[0].name, score=1)
                            logging.debug(self.stats.data)
                            self.agents[0].dead = True
                        else:
                            print ("draw")
                        if self.debug:
                            print str(self.stats.data[self.all_player_names[0]].get("score", 0)) + " - " + str(
                                self.stats.data[self.all_player_names[1]].get("score", 0)
                            )
                            print "Distance: {}, Distance: {}".format(
                                self.stats.data[self.all_player_names[0]].get("move", "0"),
                                self.stats.data[self.all_player_names[1]].get("move", "0"),
                            )
                            print "Shots: {}, Shots: {}".format(
                                self.stats.data[self.all_player_names[0]].get("shots_fired", "0"),
                                self.stats.data[self.all_player_names[1]].get("shots_fired", "0"),
                            )
                            print "Stickybombs: {}, Stickybombs: {}".format(
                                self.stats.data[self.all_player_names[0]].get("stickybomb_fired", "0"),
                                self.stats.data[self.all_player_names[1]].get("stickybomb_fired", "0"),
                            )

                        self.agents = []
                        self.ammo = []
                        Animation.List = []
                        #                    if self.round_check(self.score1, self.score2):
                        #                        if self.score1 > self.score2:
                        #                            print("Purple Wins The Game!")
                        #                        else:
                        #                            print("Green Wins The Game!")
                        #                        self.aftergame_menu = False
                        #                        self.state = S_AFTERGAME
                        #                    else:
                        self.betweengame_menu = False
                        self.state = S_BETWEENGAME

            """------------------------------BETWEEN-----------------------------------"""
            if self.state == S_BETWEENGAME:
                if self.betweengame_menu == False:
                    del (self.menu)
                    self.menu = False
                    self.betweengame_menu = BetweenGameMenu(self)

                self.betweengame_menu.draw()

            self.keys = pygame.key.get_pressed()

            if self.state == S_BETWEENGAME:
                for event in pygame.event.get():
                    for event_type, callback in self.events.iteritems():
                        if event.type == event_type:
                            callback(event)

                if event.type == pygame.KEYDOWN:
                    for event_key in self.keymap_singlepress.iterkeys():
                        if event.key == event_key:
                            self.keymap_singlepress[(event_key)](event)

            """-------------------------------AFTER---------------------------------------"""
            if self.state == S_AFTERGAME:
                if self.aftergame_menu == False:
                    del (self.menu)
                    self.menu = False
                    self.aftergame_menu = AfterGameMenu(self)

                self.aftergame_menu.draw()

            self.keys = pygame.key.get_pressed()

            if self.state == S_AFTERGAME:
                for event in pygame.event.get():
                    for event_type, callback in self.events.iteritems():
                        if event.type == event_type:
                            callback(event)

                if event.type == pygame.KEYDOWN:
                    for event_key in self.keymap_singlepress.iterkeys():
                        if event.key == event_key:
                            self.keymap_singlepress[(event_key)](event)

            """-------------------------------UPGRADES------------------------------------"""

            if self.state == S_UPGRADES:
                pygame.quit()
                sys.exit()

            """-------------------------------ABOUT------------------------------------"""

            if self.state == S_ABOUT:
                self.menu = Menu()
                self.menu.about()

            """-------------------------------SETTINGS------------------------------------"""

            if self.state == S_SETTINGS:
                self.menu = Menu()
                self.menu.settings()

            if self.displaytime:
                self.screen.blit(self.font.render(str(int(self.clock.get_fps())), True, (255, 255, 255)), (10, 10))

            pygame.display.flip()
            self.clock.tick(self.fps)
Example #5
0
 def start_pre_game(self):
     self.preGameMenu = PreGameMenu(self.w, self.h)
     self.mode = self.preGameMenu
     self.screen.blit(self.mode.bg, (0, 0))
     disp.update()