コード例 #1
0
def show_controls():
    #Sets the title text for this UI page
    help_text = "Help"
    help_text_render = c.menu_font.render(help_text, 1, c.red, 150)
    #Sets the help text
    controls_text = "Controls:\nMenus:\nEsc --- Return\n1/2/3/4 --- Menu Buttons\nEnter --- Submit Name\n\nIn-Game:\nClassic:\nEsc --- Pause\nR --- Restart\nW/Up --- Charge Jump\nA/Left --- Move Left\nS/Down --- Move Down Faster\nD/Right --- Move Right\n\nPractice:\nPage Up --- Increase Score\nPage Down --- Decrease Score\n\nVersus:\nWASD --- BLUE player\nArrow Keys --- RED player"
    gamemodes_text = "Gamemodes:\n\nClassic: As per the title, the original experience of Skybound, charge your jumps and aim for that top spot on the leaderboard.\n\nPractice: The testing grounds for Skybound, feel free to set your score to whatever you want to see how well you can do with a fast camera.\n\nVersus: The local multiplayer gamemode to go head to head against your friends, see who can survive the longest."
    global on_controls
    while on_controls:
        for event in pygame.event.get():
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_ESCAPE:
                    c.screen.fill(c.black)
                    on_controls = False
            if event.type == pygame.display.quit:
                main_menu.quit_game()
                
        c.screen.fill(c.black)

        help_text_rect = help_text_render.get_rect()
        help_text_rect.center = (c.screen_width/2, 50)
        c.screen.blit(help_text_render, help_text_rect)
        
        c.blit_multiline_text(c.screen, controls_text, (30, 50), c.all_help_font)
        c.blit_multiline_text(c.screen, gamemodes_text, (400, c.screen_height/6), c.all_help_font)
        

        
        main_menu.button("Return", 0, c.screen_height-75, 200, 80, c.blue, c.darker_blue, "return")
        pygame.display.update()
    c.screen.fill(c.black)
コード例 #2
0
ファイル: pause.py プロジェクト: Nano6G/Skybound
def paused_vs():
    paused_text = "Paused"
    paused_text_render = c.menu_font.render(paused_text, 1, c.white, 150)
    pygame.display.set_caption("Skybound")
    global is_paused
    while is_paused:
        for event in pygame.event.get():
            if event.type == pygame.display.quit:
                main_menu.quit_game()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_ESCAPE:
                    is_paused = False
                if event.key == pygame.K_1:
                    is_paused = False
                elif event.key == pygame.K_2:
                    is_paused = False
                    c.screen.fill(c.black)
                    time.sleep(0.05)
                    main_menu.menu()
                    
        paused_text_rect = paused_text_render.get_rect()
        paused_text_rect.center = ((c.screen_width/2, (c.screen_height/3)/2))
        c.screen.blit(paused_text_render, paused_text_rect)

        main_menu.button("Resume", c.screen_width/2-155, c.screen_height/2.6, 310, 100, c.blue, c.darker_blue, "resume")
        main_menu.button("Exit to Main Menu", c.screen_width/2-155, c.screen_height/1.625, 310, 100, c.blue, c.darker_blue, "return_from_game")

        pygame.display.update()
    c.screen.fill(c.black)
コード例 #3
0
ファイル: leaderboard.py プロジェクト: Nano6G/Skybound
def leaderboard():
    global show_leaderboard
    leaderboard = open("..\\res\\leaderboard.txt", "r+")
    while show_leaderboard:
        pygame.display.set_caption("Skybound")
        c.screen.fill(c.black)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                main_menu.quit_game()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_ESCAPE:
                    c.screen.fill(c.black)
                    show_leaderboard = False
                    
        leaderboard_text = "Leaderboard"
        leaderboard_text_render = c.menu_font.render(leaderboard_text, 1, c.red, 150)
        leaderboard_text_rect = leaderboard_text_render.get_rect()
        leaderboard_text_rect.center = (c.screen_width/2, 50)
        c.screen.blit(leaderboard_text_render, leaderboard_text_rect)

        lines = [line.rstrip('\n') for line in open('..\\res\\leaderboard.txt')]
        
        lines.sort(key=lambda x: int(x.split("-----")[-1]), reverse=True)
                        
        score_y = 0
        scores = 0
        for name_and_score in lines:
            if scores < 10:
                name = name_and_score.split(" ----- ")
                name = name[0]
                score = name_and_score.split("----- ")
                score = score[1]
                
                name_text_render = c.leaderboard_font.render(name, 1, c.white, 150)
                name_text_rect = name_text_render.get_rect()
                name_text_width = name_text_render.get_width()
                name_text_height = name_text_render.get_height()
                name_text_rect.x = c.screen_width/2-150-name_text_width
                name_text_rect.y = 97.5 + score_y
                c.screen.blit(name_text_render, name_text_rect)

                score_text_render = c.score_font.render(score, 1, c.white, 150)
                score_text_rect = score_text_render.get_rect()
                score_text_rect.center = (c.screen_width/2+200, (120 + score_y))
                c.screen.blit(score_text_render, score_text_rect)

                pygame.draw.line(c.screen, c.white, [c.screen_width/2-125, 122 + score_y], [c.screen_width/2+125, 122 + score_y], 5)
                
                score_y += 50
                scores += 1
            
        main_menu.button("Return", 0, c.screen_height-75, 200, 80, c.blue, c.darker_blue, "return")
        pygame.display.update()
コード例 #4
0
def gamemode():
    gamemode_text = "Gamemode"
    gamemode_text_render = c.menu_font.render(gamemode_text, 1, c.red, 150)
    global show_gamemode
    show_gamemode = True
    pygame.display.set_caption("Skybound")
    while show_gamemode:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                main_menu.quit_game()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_ESCAPE:
                    main_menu.show_menu = True
                    main_menu.menu()
                if event.key == pygame.K_1:
                    main_menu.start_solo()
                elif event.key == pygame.K_2:
                    main_menu.start_practice()
                elif event.key == pygame.K_3:
                    main_menu.start_vs()

        c.screen.fill(c.black)
        c.clock.tick(c.fps)

        gamemode_text_rect = gamemode_text_render.get_rect()
        gamemode_text_rect.center = (c.screen_width / 2, 50)
        c.screen.blit(gamemode_text_render, gamemode_text_rect)

        main_menu.button("Classic", (c.screen_width / 2) - 125,
                         c.screen_height / 4.33, main_menu.box_w,
                         main_menu.box_h, c.blue, c.darker_blue, "solo")
        main_menu.button("Practice", (c.screen_width / 2) - 125,
                         c.screen_height / 2.36, main_menu.box_w,
                         main_menu.box_h, c.blue, c.darker_blue, "practice")
        main_menu.button("Versus", (c.screen_width / 2) - 125,
                         c.screen_height / 1.625, main_menu.box_w,
                         main_menu.box_h, c.blue, c.darker_blue, "vs")

        main_menu.button("Return", 0, c.screen_height - 75, 200, 80, c.blue,
                         c.darker_blue, "return")

        pygame.display.update()
    c.screen.fill(c.black)
コード例 #5
0
ファイル: game_over.py プロジェクト: Nano6G/Skybound
def game_over(submitted):
    pygame.display.set_caption("Skybound")
    global over
    removing_timer = 1
    removing_timer_max = 60
    removing = False
    while over:
        c.clock.tick(60)
        c.screen.fill(c.black)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                main_menu.quit_game()
            if event.type == pygame.KEYDOWN:
                #If the user presses enter and hasn't submitted their name to the leaderboard yet, that happens
                if event.key == pygame.K_RETURN and submitted == False:
                    main_menu.submit_to_leaderboard(c.score)
                    game_over(True)
                #Backspace to remove characters from the name
                if event.key == pygame.K_BACKSPACE:
                    removing_timer = removing_timer_max
                    removing = True
                if len(c.name) < 15 and submitted == False:
                    c.name += event.unicode
                if event.key == pygame.K_ESCAPE:
                    over = False
                    c.screen.fill(c.black)
                    time.sleep(0.1)
                    main_menu.menu()
                if event.key == pygame.K_2:
                    if submitted:
                        over = False
                        c.screen.fill(c.black)
                        time.sleep(0.1)
                        main_menu.menu()
                if event.key == pygame.K_1 or event.key == pygame.K_r:
                    if submitted:
                        main_menu.start_solo()
            if event.type == pygame.KEYUP:
                if event.key == pygame.K_BACKSPACE:
                    removing = False

        if removing and removing_timer % removing_timer_max == 0:
            c.name = c.name[:-1]

        over_text = "Game Over"
        over_text_render = c.menu_font.render(over_text, 1, c.red, 150)
        over_text_rect = over_text_render.get_rect()
        over_text_rect.center = ((c.screen_width / 2, 50))
        c.screen.blit(over_text_render, over_text_rect)

        score_text = "Final Score:{0:.0f}".format(c.score)
        scoretext_render = c.final_score_font.render(score_text, 1, c.white,
                                                     150)
        scoretext_rect = scoretext_render.get_rect()
        scoretext_rect.center = c.screen_width / 2, c.screen_height / 2 - 200
        c.screen.blit(scoretext_render, scoretext_rect)

        name_text = ("Name: " + c.name)
        name_text_render = c.controls_font.render(name_text, 1, c.white, 150)
        name_text_rect = name_text_render.get_rect()
        name_text_rect.center = ((c.screen_width / 2,
                                  c.screen_height / 2 - 100))
        c.screen.blit(name_text_render, name_text_rect)

        if submitted:
            submitted_text_render = c.boxfont.render(
                "Name and Score Submitted to Leaderboard", 1, c.white, 150)
            submitted_text_rect = submitted_text_render.get_rect()
            submitted_text_rect.center = (c.screen_width / 2,
                                          (c.screen_height / 2) - 25)
            c.screen.blit(submitted_text_render, submitted_text_rect)
        else:
            main_menu.button("Submit", c.screen_width / 2 - 90,
                             c.screen_height / 2 - 50, 180, 100, c.blue,
                             c.darker_blue, "submit_name")

        main_menu.button("Play Again", c.screen_width / 2 - 150,
                         c.screen_height / 2 + 80, 300, 100, c.blue,
                         c.darker_blue, "restart")
        main_menu.button("Exit to Main Menu", c.screen_width / 2 - 150,
                         c.screen_height / 2 + 200, 300, 100, c.blue,
                         c.darker_blue, "return_from_over")

        pygame.display.update()

        removing_timer += 1
コード例 #6
0
ファイル: game_over.py プロジェクト: Nano6G/Skybound
def vs_over(colour_of_winner, submitted):
    pygame.display.set_caption("Skybound")
    over = True
    removing_timer = 1
    removing_timer_max = 60
    removing = False
    while over:
        c.clock.tick(60)
        c.screen.fill(c.black)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                main_menu.quit_game()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_RETURN and submitted == False:
                    main_menu.submit_to_leaderboard(c.winner_score)
                    vs_over(c.colour_of_winner, True)
                if event.key == pygame.K_BACKSPACE:
                    removing_timer = removing_timer_max
                    removing = True
                if len(c.name) < 15 and submitted == False:
                    c.name += event.unicode
                if event.key == pygame.K_ESCAPE or event.key == pygame.K_2:
                    game_over.over = False
                    c.screen.fill(c.black)
                    time.sleep(0.1)
                    main_menu.menu()
                if event.key == pygame.K_1 or event.key == pygame.K_r:
                    if submitted:
                        main_menu.start_vs()
            if event.type == pygame.KEYUP:
                if event.key == pygame.K_BACKSPACE:
                    removing = False

        if removing and removing_timer % removing_timer_max == 0:
            c.name = c.name[:-1]

        c.colour_of_winner = colour_of_winner

        if colour_of_winner == "Red":
            winner_text_colour = c.red
            loser_text_colour = c.blue
            c.winner_score = c.score
            loser_score = c.score2
            colour_of_loser = "Blue"
        elif colour_of_winner == "Blue":
            winner_text_colour = c.blue
            loser_text_colour = c.red
            c.winner_score = c.score2
            loser_score = c.score
            colour_of_loser = "Red"
        else:
            winner_text_colour = c.red
            c.winner_score = 10
            loser_score = 5
            colour_of_loser = "Green"

        score_text = "{}'s Score:{}".format(colour_of_winner,
                                            round(c.winner_score))
        scoretext_render = c.score_font.render(score_text, 1,
                                               winner_text_colour, 150)
        scoretext_rect = scoretext_render.get_rect()
        scoretext_rect.center = 625, c.screen_height / 2 - 220
        c.screen.blit(scoretext_render, scoretext_rect)

        score_text2 = "{}'s Score:{}".format(colour_of_loser,
                                             round(loser_score))
        scoretext_render2 = c.score_font.render(score_text2, 1,
                                                loser_text_colour, 150)
        scoretext_rect2 = scoretext_render2.get_rect()
        scoretext_rect2.center = 625, c.screen_height / 2 - 170
        c.screen.blit(scoretext_render2, scoretext_rect2)

        over_text = "{} Player Wins".format(colour_of_winner)
        over_text_render = c.menu_font.render(over_text, 1, winner_text_colour,
                                              150)
        over_text_rect = over_text_render.get_rect()
        over_text_rect.center = ((c.screen_width / 2,
                                  (c.screen_height / 3) - 180))
        c.screen.blit(over_text_render, over_text_rect)

        name_text = ("Name: " + c.name)
        name_text_render = c.controls_font.render(name_text, 1, c.white, 150)
        name_text_rect = name_text_render.get_rect()
        name_text_rect.center = ((c.screen_width / 2,
                                  c.screen_height / 2 - 100))
        c.screen.blit(name_text_render, name_text_rect)

        if submitted:
            submitted_text_render = c.boxfont.render(
                "Name and Score Submitted to Leaderboard", 1, c.white, 150)
            submitted_text_rect = submitted_text_render.get_rect()
            submitted_text_rect.center = (c.screen_width / 2,
                                          (c.screen_height / 2))
            c.screen.blit(submitted_text_render, submitted_text_rect)
        else:
            main_menu.button("Submit", c.screen_width / 2 - 90,
                             c.screen_height / 2 - 50, 180, 100, c.blue,
                             c.darker_blue, "submit_name_vs")

        main_menu.button("Play Again", c.screen_width / 2 - 150, 400, 300, 100,
                         c.blue, c.darker_blue, "restart_vs")
        main_menu.button("Exit to Main Menu", c.screen_width / 2 - 150, 525,
                         300, 100, c.blue, c.darker_blue, "return_from_over")

        pygame.display.update()
        removing_timer += 1