使用Python的游戏-添加“重新启动游戏”选项

dhxwm5r4  于 2023-03-28  发布在  Python
关注(0)|答案(2)|浏览(147)

我用Pygame Zero和MU IDE创建了一个小游戏。游戏结束后,应该询问用户是否想再玩一次。如果他选择是,游戏应该从头开始。我知道我可以用While循环来做到这一点,但我不知道怎么做。
我试图插入一个while循环。在while循环中,游戏函数被调用,但它不起作用。我尝试了这个:

play_again = raw_input("If you'd like to play again, please type 'yes'")
while playagain == "yes"
      draw()
      place_banana()
      on_mouse_down(pos)
      update_time_left()

....
我知道这样做是不对的,但我不知道如何做才对

from random import randint 
import time
import pygame

HEIGHT = 800
WIDTH = 800
score = 0 
time_left = 10

banana = Actor("banana")
monkey = Actor("monkey")

def draw():
    screen.clear()
    screen.fill("white")
    banana.draw()
    monkey.draw()
    screen.draw.text("Number of bananas collected: " + str(score),      color = "black", topleft=(10,10))
    screen.draw.text("Time: " + str(time_left), color = "black", topleft=(10,50))

def place_banana():
    banana.x = randint(125, 790)
    banana.y = randint(186, 790)
    monkey.x = 50
    monkey.y = 740

def on_mouse_down(pos):
    global score
    if banana.collidepoint(pos): 
        score = score + 1 
        place_banana()

 def update_time_left():
    global time_left
    if time_left:  
         time_left = time_left - 1
    else:  
        screen.fill("pink")  # code is not executed
        game_over() 

place_banana() 
clock.schedule_interval(update_time_left, 1.0)

def game_over():
    screen.fill("pink") # code is not executed
    global time_left
    message = ("Ende. Number of bananas collected")   # code is not   executed
    time_left = 0
    time.sleep(5.5)
    quit()
7xzttuei

7xzttuei1#

有一个问题肯定会阻止你的代码运行,那就是你建议的while循环中所有四个函数末尾的冒号。冒号是用来定义函数或if/else语句等的,而不是用来执行函数的。
我不确定是否有其他问题阻止它运行,因为你没有给出所有的源代码,但是你的while循环应该看起来像这样:

play_again = "yes"
while play_again == "yes":
    draw()
    place_banana()
    on_mouse_down(pos)
    update_time_left()
    play_again = raw_input("If you'd like to play again, please type 'yes'")

另一件事是,对pygame程序使用shell输入不是最好的,因为通常用户不知道要看终端,所以要考虑将输入构建到游戏的实际UI中的选项。

irlmq6kh

irlmq6kh2#

你需要将你的代码 Package 在一个while循环中,并在开始时有一个输入,它将要求play_again。在while循环外将play_again设置为'yes',但在while循环内调用play_again的输入。

相关问题