Beispiel #1
0
    def main(self, screen,bot_mode):
        clock = pygame.time.Clock()
        if bot_mode == "Neural": 
            self.bot = Neural_Bot()
        else:
            self.bot = Bot()
        menu = kezmenu.KezMenu(
            ['Play!', lambda: self.game_create(menu) ],
            ['Quit', lambda: setattr(self, 'running', False)],event_gameover = GAMEOVER
            )       
        menu.position = (50, 50)
        menu.enableEffect('enlarge-font-on-focus', font=None, size=60, enlarge_factor=1.2, enlarge_time=0.3)
        menu.color = (255,255,255)
        menu.focus_color = (40, 200, 40)
        nightmare = construct_nightmare(screen.get_size())
        highscoresurf = self.construct_highscoresurf()
        timepassed = clock.tick(30) / 1000.
        print("New Game")
        while self.running:
    
            events = pygame.event.get()

            for event in events:
                if event.type == pygame.QUIT:
                    exit()

            menu.update(self.gameover,events, timepassed)
            timepassed = clock.tick(30) / 1000. #30 original           
            if timepassed > 1: # A game has most likely been played 2e
                highscoresurf = self.construct_highscoresurf()

            screen.blit(nightmare, (0,0))
            screen.blit(highscoresurf, highscoresurf.get_rect(right=WIDTH-50, bottom=HEIGHT-50))
            menu.draw(screen) 
            pygame.display.flip()
Beispiel #2
0
    def main(self, screen):
        clock = pygame.time.Clock()
        menu = kezmenu.KezMenu(
            ['Play!', lambda: Game().main(screen)],
            ['Quit', lambda: setattr(self, 'running', False)],
        )
        menu.position = (50, 50)
        menu.enableEffect('enlarge-font-on-focus', font=None, size=60, enlarge_factor=1.2, enlarge_time=0.3)
        menu.color = (255,255,255)
        menu.focus_color = (40, 200, 40)
        
        nightmare = construct_nightmare(screen.get_size())
        highscoresurf = self.construct_highscoresurf() #Loads highscore onto menu

        timepassed = clock.tick(30) / 1000.

        while self.running:
            events = pygame.event.get()

            for event in events:
                if event.type == pygame.QUIT:
                    exit()

            menu.update(events, timepassed)

            timepassed = clock.tick(30) / 1000.

            if timepassed > 1: # A game has most likely been played 
                highscoresurf = self.construct_highscoresurf()

            screen.blit(nightmare, (0,0))
            screen.blit(highscoresurf, highscoresurf.get_rect(right=WIDTH-50, bottom=HEIGHT-50))
            menu.draw(screen)
            pygame.display.flip()
Beispiel #3
0
    def main(self, screen):
        clock = pg.time.Clock()
        menu = kezmenu.KezMenu(
            ['Play Game (easy)',   lambda: Game(screen.get_size(), difficulty=0).main(screen)],
            ['Play Game (medium)', lambda: Game(screen.get_size(), difficulty=1).main(screen)],
            ['Play Game (hard)',   lambda: Game(screen.get_size(), difficulty=3).main(screen)],
            ['Quit', lambda: setattr(self, 'running', False)],
        )
        menu.position = (50, 50)
        menu.enableEffect('enlarge-font-on-focus', font=None, size=60, enlarge_factor=1.2, enlarge_time=0.3)
        menu.color = (150,150,150)
        menu.focus_color = (40, 40, 240)

        highscoresurf = self.construct_highscoresurf()
        background = self.contruct_menu_background(screen.get_size())

        while self.running:
            events = pg.event.get()
            timepassed = clock.tick(30) / 1000.

            if timepassed > 1:
                highscoresurf = self.construct_highscoresurf()

            for event in events:
                if event.type == pg.QUIT:
                    exit()

            menu.update(events, timepassed)

            screen.blit(background, (0,0))
            screen.blit(highscoresurf, highscoresurf.get_rect(right=WIDTH-50, bottom=HEIGHT-50))
            menu.draw(screen)
            pg.display.flip()
Beispiel #4
0
    def __init__(self):
        self.score = 0

        self.loader = loader.Loader()
        self.gamemode = fsm([('Playing', 'GameOver', lambda x: x == 'GameOver'),
                             ('MainMenu', 'Playing', lambda x: x == 'NewGame', lambda x, y: self.newgame()),
                             ('MainMenu', 'Playing', lambda x: x == 'Resume'),
                             ('Playing', 'MainMenu', lambda x: x == 'MainMenu'),
                             ('GameOver', 'Playing', lambda x: x == 'GameOver')])
        self.gamemode.start('MainMenu')

        self.menu = kezmenu.KezMenu(['SPACE ACE!', lambda: True],
                                    ['New Game', lambda: self.gamemode.event('NewGame')],
                                    ['Exit', lambda: pygame.event.post(pygame.event.Event(pygame.QUIT))])
        self.menu.center = True  # enable horizontal menu item centering
        self.menu.color = WHITE
        self.menu.focus_color = GREEN
        self.menu.options[0]['focus_color'] = RED
        self.menu.options[0]['color'] = RED
        self.menu.options[0]['font'] = pygame.font.Font("fonts/OverdriveInline.ttf", 75)
        self.menu._fixSize()
        self.menu.center_at(SCREEN_CENTER)  # center entire menu to screen

        self.enemy_list = pygame.sprite.Group()
        self.player_list = pygame.sprite.Group()
        self.all_sprites_list = pygame.sprite.Group()

        self.events = None

        # Create the player
        self.player = sprites.Player(self.loader.PLAYER_IMAGE)
        self.all_sprites_list.add(self.player)
        self.player_list.add(self.player)
Beispiel #5
0
    def main(self, screen):
        pygame.mixer.init()
        clock = pygame.time.Clock()
        background = load_image('menu_background.png')
        music = load_sound('music_credits.ogg')
        menu = kezmenu.KezMenu(
            ['Engage', lambda: Quantum().mainLoop(40)],
            ['Enlighten', lambda: Tutorial().mainLoop(40)],
            ['Archive', lambda: Highscore().mainLoop(40)],
            ['Collaborating Minds', lambda: Credits().mainLoop(40)],
            ['Abort', lambda: setattr(self, 'running', False)],
        )
        menu.x = 10
        menu.y = 10
        menu.enableEffect('raise-col-padding-on-focus', enlarge_time=0.1)
        menu.color = (0, 0, 255)
        menu.focus_color = (174, 23, 92)
        menu.font = load_font('adelle.ttf', 20)

        music.play(-1)

        while self.running:
            menu.update(pygame.event.get(), clock.tick(30) / 1000.)
            screen.blit(background, (0, 0))
            menu.draw(screen)
            pygame.display.flip()
Beispiel #6
0
    def main(self, screen):
        clock = pygame.time.Clock()
        background = pygame.image.load('background.png')
        menu = kezmenu.KezMenu(
            ['Play!', lambda: Game().main(screen)],
            ['Quit', lambda: setattr(self, 'running', False)],
        )
        menu.x = 200
        menu.y = 100
        menu.enableEffect('raise-col-padding-on-focus', enlarge_time=0.1)

        while self.running:
            menu.update(pygame.event.get(), clock.tick(30) / 1000.)
            screen.blit(background, (0, 0))
            menu.draw(screen)
            pygame.display.flip()
Beispiel #7
0
    def main(self, screen):
        clock = pygame.time.Clock()
        self.screen = screen
        menu = kezmenu.KezMenu(
            ['Play!', self.rungame],
            ['Quit', lambda: setattr(self, 'running', False)],
        )
        menu.x = 400
        menu.y = 300
        menu.enableEffect('raise-col-padding-on-focus', enlarge_time=0.1)
        menu.font = pygame.font.Font(data_file('VT220-mod.ttf'), 50)
        menu.color = (200, 200, 200)

        while self.running:
            menu.update(pygame.event.get(), clock.tick(30) / 1000.)
            screen.fill((0, 0, 0))
            menu.draw(screen)
            pygame.display.flip()
Beispiel #8
0
class Game():
    menu = kezmenu.KezMenu()

    def __init__(self):
        self.score = 0

        self.loader = loader.Loader()
        self.gamemode = fsm([('Playing', 'GameOver', lambda x: x == 'GameOver'),
                             ('MainMenu', 'Playing', lambda x: x == 'NewGame', lambda x, y: self.newgame()),
                             ('MainMenu', 'Playing', lambda x: x == 'Resume'),
                             ('Playing', 'MainMenu', lambda x: x == 'MainMenu'),
                             ('GameOver', 'Playing', lambda x: x == 'GameOver')])
        self.gamemode.start('MainMenu')

        self.menu = kezmenu.KezMenu(['SPACE ACE!', lambda: True],
                                    ['New Game', lambda: self.gamemode.event('NewGame')],
                                    ['Exit', lambda: pygame.event.post(pygame.event.Event(pygame.QUIT))])
        self.menu.center = True  # enable horizontal menu item centering
        self.menu.color = WHITE
        self.menu.focus_color = GREEN
        self.menu.options[0]['focus_color'] = RED
        self.menu.options[0]['color'] = RED
        self.menu.options[0]['font'] = pygame.font.Font("fonts/OverdriveInline.ttf", 75)
        self.menu._fixSize()
        self.menu.center_at(SCREEN_CENTER)  # center entire menu to screen

        self.enemy_list = pygame.sprite.Group()
        self.player_list = pygame.sprite.Group()
        self.all_sprites_list = pygame.sprite.Group()

        self.events = None

        # Create the player
        self.player = sprites.Player(self.loader.PLAYER_IMAGE)
        self.all_sprites_list.add(self.player)
        self.player_list.add(self.player)

    def newgame(self):
        self.loader.SOUND_START.play()
        self.asteroid_field()
        self.menu.insert(2, ['Resume Game', lambda: self.gamemode.event('Resume')])

    def asteroid_field(self):
        for i in range(10):
            asteroid = sprites.Asteroid(4, 100, self.loader.ASTEROID_ANIMATION)

            asteroid.rect.x = random.randrange(100, SCREEN_WIDTH-100)
            asteroid.rect.y = random.randrange(-300, SCREEN_HEIGHT//3)

            self.enemy_list.add(asteroid)
            self.all_sprites_list.add(asteroid)

    def print_hud(self,screen):
        font = pygame.font.Font(None, 36)

        text = font.render("Score:  {:07}".format(self.score), 1, WHITE)
        textpos = text.get_rect(right=screen.get_width()-20, y=10)
        screen.blit(text, textpos)

        for life in range(self.player.life):
            image = pygame.transform.scale(self.player.image, (self.player.rect.width//3, self.player.rect.height//3))
            rect = image.get_rect(y=10, x=15)
            rect.x += rect.width*life
            screen.blit(image, rect)

    def quit(self):
        """Run Stuff needed before exit"""
        print("We Quit!")

    def process_events(self):
        """ Process all of the events. Return a "True" if we need to close the window. """
        self.events = pygame.event.get()
        for e in self.events:
            if e.type == pygame.QUIT:
                self.quit()
                return True
            elif e.type == pygame.KEYDOWN:
                if e.key == pygame.K_q:
                    pygame.event.post(pygame.event.Event(pygame.QUIT))

                elif self.gamemode.currentState == 'Playing':
                    if e.key == pygame.K_ESCAPE:
                        self.gamemode.event('MainMenu')

        return False  # not done

    def run_logic(self):
        if self.gamemode.currentState == 'MainMenu':
            self.menu.update(self.events)

        elif self.gamemode.currentState == 'Playing':
            self.all_sprites_list.update(self.events, self)

    def display_frame(self, screen):
        screen.fill(BLACK)
        starfield.move_and_draw_stars(screen)

        if self.gamemode.currentState == 'MainMenu':
            pygame.mouse.set_visible(True)
            self.menu.draw(screen)
        elif self.gamemode.currentState == 'Playing':
            self.enemy_list.draw(screen)
            self.player.bullet_list.draw(screen)
            self.player_list.draw(screen)
            self.print_hud(screen)


        pygame.display.update()