【问题标题】:How to stop a program once player has reached a set time on Python game一旦玩家达到 Python 游戏的设定时间,如何停止程序
【发布时间】:2019-05-23 09:47:00
【问题描述】:

我刚刚进入 python 并正在尝试创建一个问答游戏。我想在我的测验中添加一个 2 分钟的倒数计时器,这样当计时器达到零时,问题就会停止并说你没时间了。我也试过用秒表来做这件事,但不知道如何终止游戏,所以如果你知道怎么做,那也一样好。

注意:我没有使用 pygame。许多其他用户在之前的帖子中提出过问题。

这是我从其他文档中收集的代码,但它不会在达到 2 分钟或 0 分钟后停止。

def countdown():
    t = 60
    while t:
        mins, secs = divmod(t, 60)
        timeformat = '{:02d}:{:02d}'.format(mins, secs)
        print(timeformat, end='\r')
        time.sleep(1)
        t -= 1
    print("You're out of time!\n")
    sys.exit ("goodbye")

def main_game():
    count_thread = threading.Thread(None, countdown)
    question_4 = ("question 1?")
    option_4 = (" a. 1 \n b. 5 \n c. 3 \n d. 7")
    print(question_4)
    print(option_4)            
    answer_4 = input (">")
    if answer_4.lower()== "b":
        score = score + 100
    else:
        print("Incorrect")
import time
start1 = time.time()
if start1 >= 120:
      import sys
      sys.exit
question_a = ("question?")
option_a = (" a. 7 \n b. 8 \n c. 2 \n d. 1")
print(question_a)
print(option_a)            
answer_a = input (">")
if answer_a.lower()== "b":
     score = score + 100
else:
    print("Incorrect")
###rest of questions

end1 = time.time()

这两个代码都是我尝试过的两个不同版本。两个代码都不起作用。底部代码对播放进行计时,但不会在 2 分钟标记处停止。

我们将不胜感激任何帮助、建议或反馈!

【问题讨论】:

  • 你必须使用count_thread.run()来运行线程。
  • 查找函数getchar() - 它不会阻塞控制台,因此您可以创建检查键盘和检查时间的循环 - 它不需要线程。但它不是标准功能:stackoverflow.com/questions/2408560/…
  • 我会在哪里添加这个?
  • 您必须在创建 count_thread 之后使用 run() 并在使用 input() 之前使用它来阻止代码。

标签: python python-3.x pygame


【解决方案1】:

由于您使用Pygame

您可能拥有的simplest code 应该(按照良好的编码标准)包括pygame.quit()。像这样:

import pygame, sys
from pygame.locals import *
pygame.init()
DISPLAYSURF = pygame.display.set_mode((400, 300))
pygame.display.set_caption('Hello World!')
while True: # main game loop
    for event in pygame.event.get():
        if event.type == QUIT:
               pygame.quit()
               sys.exit()
               pygame.display.update()

后跟 Python sys.exit 函数。

退出 Python。这是通过引发 SystemExit 异常来实现的,因此由 try 语句的 finally 子句指定的清理操作会被兑现,并且可以在外部级别拦截退出尝试。

您可以在不显式使用 Python 线程的情况下制作问答游戏,但如果您打算使用 Python 线程,则可以先查看来自here 的快速而肮脏的示例。

希望这会有所帮助。您已经可以在 pygame online 中找到测验并可能对其进行修改。

【讨论】:

  • 感谢您的帮助!您建议在哪里添加 sys.exit 函数以及添加到哪个代码中?
  • 我并没有特别关注@bella 的问题,我会编辑我的答案,因为您使用 pygame,并且您使用线程并且您已经拥有 sys.exit。 :)
  • 好的,抱歉。附言。我没有使用 pygame 我还没有学过那种模式。
  • 别担心@bella,继续努力。你会得到比这更好的答案,我相信。我正在添加pygame 标签。
猜你喜欢
  • 1970-01-01
  • 2022-01-10
  • 2021-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-24
相关资源
最近更新 更多