从上次退出的屏幕启动游戏

发布于 2025-02-06 11:05:21 字数 9153 浏览 0 评论 0 原文

大家好,我需要你帮助 我正在制作Pygame(Python)的游戏项目 我的游戏具有多个级别,对于每个级别,我在此代码中进行了一个单独的文件

,这是我的游戏代码,

from button import *
from level1 import main1
from level2 import main2
from level3 import main3
from level4 import main4
from level5 import main5
from level6 import main6
from level7 import main7
from level8 import main8
from level9 import main9
from level10 import main10
from level11 import main11
from level12 import main12
import pygame
import sys

pygame.mixer.init()

pygame.init()

SCREEN = pygame.display.set_mode((1280, 720))
pygame.display.set_caption("Menu")
FONT = pygame.font.SysFont("Roboto", 100)


def level():
    pygame.display.set_caption("Levels")
    pygame.mixer.music.play()
    while True:
        OPTIONS_MOUSE_POS = pygame.mouse.get_pos()
        SCREEN.fill((3, 54, 73))
        level1 = Button(image=pygame.image.load("button.png"), font=pygame.font.SysFont("Roboto", 60), pos=(320, 60), text_input="LEVEL 1",
                        base_color="white", hovering_color=(0, 204, 0),
                        music=pygame.mixer.music.load("click sound.wav"))
        level1.color = level1.changeColor(OPTIONS_MOUSE_POS)
        level1.update(SCREEN)
        level2 = Button(image=pygame.image.load("button.png"), font=pygame.font.SysFont("Roboto", 60), pos=(320, 160), text_input="LEVEL 2",
                        base_color="white", hovering_color=(0, 204, 0),
                        music=pygame.mixer.music.load("click sound.wav"))
        level2.changeColor(OPTIONS_MOUSE_POS)
        level2.update(SCREEN)
        level3 = Button(image=pygame.image.load("button.png"), font=pygame.font.SysFont("Roboto", 60), pos=(320, 260), text_input="LEVEL 3",
                        base_color="white", hovering_color=(0, 204, 0),
                        music=pygame.mixer.music.load("click sound.wav"))
        level3.changeColor(OPTIONS_MOUSE_POS)
        level3.update(SCREEN)
        level4 = Button(image=pygame.image.load("button.png"), font=pygame.font.SysFont("Roboto", 60), pos=(320, 360), text_input="LEVEL 4",
                        base_color="white", hovering_color=(0, 204, 0),
                        music=pygame.mixer.music.load("click sound.wav"))
        level4.changeColor(OPTIONS_MOUSE_POS)
        level4.update(SCREEN)
        level5 = Button(image=pygame.image.load("button.png"), font=pygame.font.SysFont("Roboto", 60), pos=(320, 460), text_input="LEVEL 5",
                        base_color="white", hovering_color=(0, 204, 0),
                        music=pygame.mixer.music.load("click sound.wav"))
        level5.changeColor(OPTIONS_MOUSE_POS)
        level5.update(SCREEN)
        level6 = Button(image=pygame.image.load("button.png"), font=pygame.font.SysFont("Roboto", 60), pos=(320, 560), text_input="LEVEL 6",
                        base_color="white", hovering_color=(0, 204, 0),
                        music=pygame.mixer.music.load("click sound.wav"))
        level6.changeColor(OPTIONS_MOUSE_POS)
        level6.update(SCREEN)
        level7 = Button(image=pygame.image.load("button.png"), font=pygame.font.SysFont("Roboto", 60), pos=(960, 60), text_input="LEVEL 7",
                        base_color="white", hovering_color=(0, 204, 0),
                        music=pygame.mixer.music.load("click sound.wav"))
        level7.changeColor(OPTIONS_MOUSE_POS)
        level7.update(SCREEN)
        level8 = Button(image=pygame.image.load("button.png"), font=pygame.font.SysFont("Roboto", 60), pos=(960, 160), text_input="LEVEL 8",
                        base_color="white", hovering_color=(0, 204, 0),
                        music=pygame.mixer.music.load("click sound.wav"))
        level8.changeColor(OPTIONS_MOUSE_POS)
        level8.update(SCREEN)
        level9 = Button(image=pygame.image.load("button.png"), font=pygame.font.SysFont("Roboto", 60), pos=(960, 260), text_input="LEVEL 9",
                        base_color="white", hovering_color=(0, 204, 0),
                        music=pygame.mixer.music.load("click sound.wav"))
        level9.changeColor(OPTIONS_MOUSE_POS)
        level9.update(SCREEN)
        level10 = Button(image=pygame.image.load("button.png"), font=pygame.font.SysFont("Roboto", 60), pos=(960, 360), text_input="LEVEL 10",
                         base_color="white", hovering_color=(0, 204, 0),
                         music=pygame.mixer.music.load("click sound.wav"))
        level10.changeColor(OPTIONS_MOUSE_POS)
        level10.update(SCREEN)
        level11 = Button(image=pygame.image.load("button.png"), font=pygame.font.SysFont("Roboto", 60), pos=(960, 460), text_input="LEVEL 11",
                         base_color="white", hovering_color=(0, 204, 0),
                         music=pygame.mixer.music.load("click sound.wav"))
        level11.changeColor(OPTIONS_MOUSE_POS)
        level11.update(SCREEN)
        level12 = Button(image=pygame.image.load("button.png"), font=pygame.font.SysFont("Roboto", 60), pos=(960, 560), text_input="LEVEL 12",
                         base_color="white", hovering_color=(0, 204, 0),
                         music=pygame.mixer.music.load("click sound.wav"))
        level12.changeColor(OPTIONS_MOUSE_POS)
        level12.update(SCREEN)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.mixer.music.play()
                main_menu()
            if event.type == pygame.MOUSEBUTTONDOWN:
                if level1.checkForInput(OPTIONS_MOUSE_POS):
                    pygame.mixer.music.play()
                    main1()
                if level2.checkForInput(OPTIONS_MOUSE_POS):
                    pygame.mixer.music.play()
                    main2()
                if level3.checkForInput(OPTIONS_MOUSE_POS):
                    pygame.mixer.music.play()
                    main3()
                if level4.checkForInput(OPTIONS_MOUSE_POS):
                    pygame.mixer.music.play()
                    main4()
                if level5.checkForInput(OPTIONS_MOUSE_POS):
                    pygame.mixer.music.play()
                    main5()
                if level6.checkForInput(OPTIONS_MOUSE_POS):
                    pygame.mixer.music.play()
                    main6()
                if level7.checkForInput(OPTIONS_MOUSE_POS):
                    pygame.mixer.music.play()
                    main7()
                if level8.checkForInput(OPTIONS_MOUSE_POS):
                    pygame.mixer.music.play()
                    main8()
                if level9.checkForInput(OPTIONS_MOUSE_POS):
                    pygame.mixer.music.play()
                    main9()
                if level10.checkForInput(OPTIONS_MOUSE_POS):
                    pygame.mixer.music.play()
                    main10()
                if level11.checkForInput(OPTIONS_MOUSE_POS):
                    pygame.mixer.music.play()
                    main11()
                if level12.checkForInput(OPTIONS_MOUSE_POS):
                    pygame.mixer.music.play()
                    main12()
        pygame.display.update()


def main_menu():
    pygame.display.set_caption("Menu")
    SCREEN.fill((3, 54, 73))
    while True:
        MENU_MOUSE_POS = pygame.mouse.get_pos()
        MENU_TEXT = FONT.render("MAIN MENU", True, (0, 204, 0))
        MENU_RECT = MENU_TEXT.get_rect(center=(640, 100))
        PLAY_BUTTON = Button(image=pygame.image.load("button.png"), font=pygame.font.SysFont("Roboto", 60), pos=(640, 250), text_input="PLAY",
                             base_color="white", hovering_color=(0, 204, 0),
                             music=pygame.mixer.music.load("click sound.wav"))
        LEVELS = Button(image=pygame.image.load("button.png"), font=pygame.font.SysFont("Roboto", 60), pos=(640, 400), text_input="LEVELS", base_color="white", hovering_color=(0, 204, 0),
                        music=pygame.mixer.music.load("click sound.wav"))
        QUIT_BUTTON = Button(image=pygame.image.load("button.png"), font=pygame.font.SysFont("Roboto", 60), pos=(640, 550), text_input="QUIT",
                             base_color="white", hovering_color=(0, 204, 0),
                             music=pygame.mixer.music.load("click sound.wav"))
        SCREEN.blit(MENU_TEXT, MENU_RECT)
        for button in [PLAY_BUTTON, LEVELS, QUIT_BUTTON]:
            button.changeColor(MENU_MOUSE_POS)
            button.update(SCREEN)

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            if event.type == pygame.MOUSEBUTTONDOWN:
                if PLAY_BUTTON.checkForInput(MENU_MOUSE_POS):
                    main1()
                if LEVELS.checkForInput(MENU_MOUSE_POS):
                    level()
                if QUIT_BUTTON.checkForInput(MENU_MOUSE_POS):
                    quit()
        pygame.display.update()

我有主菜单屏幕,在单击play按钮级别1开始时,我的play按钮开始。如您在上述导入语句中所见,每个级别每个级别的MAIN1和LEVEL2 ITS MAIN2具有单独的主函数。

现在的问题是,当我单击play按钮级别1在完成Level1之后开始时,Level2启动等等。

但是,当我在任何级别上退出游戏时(例如在Level4上)。游戏从Level1再次开始。

因此,我需要在上述代码中进行的更改,如果我在Level4上退出,那么下一次游戏再次单击“播放”按钮将继续从Level4而不是从Level1开始。

请帮忙

hello guys i need you help
i am working on a game project in pygame(python)
my game has multiple levels and for each level i make a separate file

here is the code of my game

from button import *
from level1 import main1
from level2 import main2
from level3 import main3
from level4 import main4
from level5 import main5
from level6 import main6
from level7 import main7
from level8 import main8
from level9 import main9
from level10 import main10
from level11 import main11
from level12 import main12
import pygame
import sys

pygame.mixer.init()

pygame.init()

SCREEN = pygame.display.set_mode((1280, 720))
pygame.display.set_caption("Menu")
FONT = pygame.font.SysFont("Roboto", 100)


def level():
    pygame.display.set_caption("Levels")
    pygame.mixer.music.play()
    while True:
        OPTIONS_MOUSE_POS = pygame.mouse.get_pos()
        SCREEN.fill((3, 54, 73))
        level1 = Button(image=pygame.image.load("button.png"), font=pygame.font.SysFont("Roboto", 60), pos=(320, 60), text_input="LEVEL 1",
                        base_color="white", hovering_color=(0, 204, 0),
                        music=pygame.mixer.music.load("click sound.wav"))
        level1.color = level1.changeColor(OPTIONS_MOUSE_POS)
        level1.update(SCREEN)
        level2 = Button(image=pygame.image.load("button.png"), font=pygame.font.SysFont("Roboto", 60), pos=(320, 160), text_input="LEVEL 2",
                        base_color="white", hovering_color=(0, 204, 0),
                        music=pygame.mixer.music.load("click sound.wav"))
        level2.changeColor(OPTIONS_MOUSE_POS)
        level2.update(SCREEN)
        level3 = Button(image=pygame.image.load("button.png"), font=pygame.font.SysFont("Roboto", 60), pos=(320, 260), text_input="LEVEL 3",
                        base_color="white", hovering_color=(0, 204, 0),
                        music=pygame.mixer.music.load("click sound.wav"))
        level3.changeColor(OPTIONS_MOUSE_POS)
        level3.update(SCREEN)
        level4 = Button(image=pygame.image.load("button.png"), font=pygame.font.SysFont("Roboto", 60), pos=(320, 360), text_input="LEVEL 4",
                        base_color="white", hovering_color=(0, 204, 0),
                        music=pygame.mixer.music.load("click sound.wav"))
        level4.changeColor(OPTIONS_MOUSE_POS)
        level4.update(SCREEN)
        level5 = Button(image=pygame.image.load("button.png"), font=pygame.font.SysFont("Roboto", 60), pos=(320, 460), text_input="LEVEL 5",
                        base_color="white", hovering_color=(0, 204, 0),
                        music=pygame.mixer.music.load("click sound.wav"))
        level5.changeColor(OPTIONS_MOUSE_POS)
        level5.update(SCREEN)
        level6 = Button(image=pygame.image.load("button.png"), font=pygame.font.SysFont("Roboto", 60), pos=(320, 560), text_input="LEVEL 6",
                        base_color="white", hovering_color=(0, 204, 0),
                        music=pygame.mixer.music.load("click sound.wav"))
        level6.changeColor(OPTIONS_MOUSE_POS)
        level6.update(SCREEN)
        level7 = Button(image=pygame.image.load("button.png"), font=pygame.font.SysFont("Roboto", 60), pos=(960, 60), text_input="LEVEL 7",
                        base_color="white", hovering_color=(0, 204, 0),
                        music=pygame.mixer.music.load("click sound.wav"))
        level7.changeColor(OPTIONS_MOUSE_POS)
        level7.update(SCREEN)
        level8 = Button(image=pygame.image.load("button.png"), font=pygame.font.SysFont("Roboto", 60), pos=(960, 160), text_input="LEVEL 8",
                        base_color="white", hovering_color=(0, 204, 0),
                        music=pygame.mixer.music.load("click sound.wav"))
        level8.changeColor(OPTIONS_MOUSE_POS)
        level8.update(SCREEN)
        level9 = Button(image=pygame.image.load("button.png"), font=pygame.font.SysFont("Roboto", 60), pos=(960, 260), text_input="LEVEL 9",
                        base_color="white", hovering_color=(0, 204, 0),
                        music=pygame.mixer.music.load("click sound.wav"))
        level9.changeColor(OPTIONS_MOUSE_POS)
        level9.update(SCREEN)
        level10 = Button(image=pygame.image.load("button.png"), font=pygame.font.SysFont("Roboto", 60), pos=(960, 360), text_input="LEVEL 10",
                         base_color="white", hovering_color=(0, 204, 0),
                         music=pygame.mixer.music.load("click sound.wav"))
        level10.changeColor(OPTIONS_MOUSE_POS)
        level10.update(SCREEN)
        level11 = Button(image=pygame.image.load("button.png"), font=pygame.font.SysFont("Roboto", 60), pos=(960, 460), text_input="LEVEL 11",
                         base_color="white", hovering_color=(0, 204, 0),
                         music=pygame.mixer.music.load("click sound.wav"))
        level11.changeColor(OPTIONS_MOUSE_POS)
        level11.update(SCREEN)
        level12 = Button(image=pygame.image.load("button.png"), font=pygame.font.SysFont("Roboto", 60), pos=(960, 560), text_input="LEVEL 12",
                         base_color="white", hovering_color=(0, 204, 0),
                         music=pygame.mixer.music.load("click sound.wav"))
        level12.changeColor(OPTIONS_MOUSE_POS)
        level12.update(SCREEN)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.mixer.music.play()
                main_menu()
            if event.type == pygame.MOUSEBUTTONDOWN:
                if level1.checkForInput(OPTIONS_MOUSE_POS):
                    pygame.mixer.music.play()
                    main1()
                if level2.checkForInput(OPTIONS_MOUSE_POS):
                    pygame.mixer.music.play()
                    main2()
                if level3.checkForInput(OPTIONS_MOUSE_POS):
                    pygame.mixer.music.play()
                    main3()
                if level4.checkForInput(OPTIONS_MOUSE_POS):
                    pygame.mixer.music.play()
                    main4()
                if level5.checkForInput(OPTIONS_MOUSE_POS):
                    pygame.mixer.music.play()
                    main5()
                if level6.checkForInput(OPTIONS_MOUSE_POS):
                    pygame.mixer.music.play()
                    main6()
                if level7.checkForInput(OPTIONS_MOUSE_POS):
                    pygame.mixer.music.play()
                    main7()
                if level8.checkForInput(OPTIONS_MOUSE_POS):
                    pygame.mixer.music.play()
                    main8()
                if level9.checkForInput(OPTIONS_MOUSE_POS):
                    pygame.mixer.music.play()
                    main9()
                if level10.checkForInput(OPTIONS_MOUSE_POS):
                    pygame.mixer.music.play()
                    main10()
                if level11.checkForInput(OPTIONS_MOUSE_POS):
                    pygame.mixer.music.play()
                    main11()
                if level12.checkForInput(OPTIONS_MOUSE_POS):
                    pygame.mixer.music.play()
                    main12()
        pygame.display.update()


def main_menu():
    pygame.display.set_caption("Menu")
    SCREEN.fill((3, 54, 73))
    while True:
        MENU_MOUSE_POS = pygame.mouse.get_pos()
        MENU_TEXT = FONT.render("MAIN MENU", True, (0, 204, 0))
        MENU_RECT = MENU_TEXT.get_rect(center=(640, 100))
        PLAY_BUTTON = Button(image=pygame.image.load("button.png"), font=pygame.font.SysFont("Roboto", 60), pos=(640, 250), text_input="PLAY",
                             base_color="white", hovering_color=(0, 204, 0),
                             music=pygame.mixer.music.load("click sound.wav"))
        LEVELS = Button(image=pygame.image.load("button.png"), font=pygame.font.SysFont("Roboto", 60), pos=(640, 400), text_input="LEVELS", base_color="white", hovering_color=(0, 204, 0),
                        music=pygame.mixer.music.load("click sound.wav"))
        QUIT_BUTTON = Button(image=pygame.image.load("button.png"), font=pygame.font.SysFont("Roboto", 60), pos=(640, 550), text_input="QUIT",
                             base_color="white", hovering_color=(0, 204, 0),
                             music=pygame.mixer.music.load("click sound.wav"))
        SCREEN.blit(MENU_TEXT, MENU_RECT)
        for button in [PLAY_BUTTON, LEVELS, QUIT_BUTTON]:
            button.changeColor(MENU_MOUSE_POS)
            button.update(SCREEN)

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            if event.type == pygame.MOUSEBUTTONDOWN:
                if PLAY_BUTTON.checkForInput(MENU_MOUSE_POS):
                    main1()
                if LEVELS.checkForInput(MENU_MOUSE_POS):
                    level()
                if QUIT_BUTTON.checkForInput(MENU_MOUSE_POS):
                    quit()
        pygame.display.update()

in this code i have main menu screen in which i have play button on clicking play button level 1 start. as you can see in above import statements each level has separate main function for level1 its main1 and for level2 its main2.

now problem is this when i click on play button level1 starts after completing level1, level2 starts and so on.

but when i quit the game on any level (for example on level4). the game start again from level1.

so what changes i need to do in above code that if i quit on level4 than after clicking play button again next time game continues from level4 and not from level1.

please help

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

忆悲凉 2025-02-13 11:05:21

对于此问题,您需要有一个数据库,并且需要在此处保存用户状态,并且每次打开游戏首先获取用户状态,以便您可以拥有当前的用户级别,但是现在您也应该进行重置按钮,以便用户可以使用用户重新启动游戏,如果他愿意,您可以拥有数据库文档。我通常更喜欢NOSQL数据库,但您可以选择其中任何一个

,您可以在此处获得参考

For this problem you need to have a database and need to save user status there and every time you open game first get user status so that you can have the current level of user but there now you should also make reset button too so that user can restart game if he wants you can have database documentations. i usually prefer NoSQL database but you can go for any of them

you can get reference here https://www.mongodb.com/languages/python#:~:text=The%20first%20step%20to%20connect,text%20editor%20like%20Textpad%2FNotepad.&text=Use%20the%20connection_string%20to%20create,get%20the%20MongoDB%20database%20connection.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文