我希望能够在python脚本中接收来自用户的命令行输入,同时向用户显示一些动态信息。 用户应该能够输入文本,但这不应该阻止信息的显示。
我的目标是创建一个游戏,我会在用户有时间输入答案时向用户显示倒计时。
这可以实现吗?
答案 0 :(得分:0)
呀。要在控制台中创建倒计时,您可以执行以下操作:
from time import sleep
for num in reversed(range(0,11)):
print(num)
sleep(1.0)
或
from time import sleep
time = 10
while time != 0:
print(time)
time = time - 1
sleep(1.0)
要么从10倒数到0,每个数字之间有一秒钟。由于您可能希望用户能够在达到0之前快速或缓慢地输入答案...您可能希望同时运行两个循环。 this thread可能对此有所帮助。如果用户得到正确的答案(并且有一些东西表明他们得到了正确的答案),或者如果用户没时间用完,你将想知道如何摆脱两个循环。
答案 1 :(得分:0)
听起来像是一个有趣的事情,所以我做了,很快遇到了一些问题。
首先,我能够制作一个正在运行的计数器,但问题是,因为它是一个循环,下一层计数器循环将重置你在前一层上回答的所有内容,除非你按下输入输入答案(在1秒钟内回答+输入)。
如果你正在制作基于反射的东西,你只需要按下单个键就可以通过使用模块getch成功使用我的代码。
我可以使用很少的模块来使计时器和程序同时运行,线程化和多处理(使用线程获得更好的结果)。
如果你只是删除添加循环的计数器功能,它基本上是一个工作的东西,但你不会看到计时器。
Pygame可能是一件好事,但是我自己没有使用它,但我认为是这样。
import time
import threading
import os
timel = 5
def question():
q = input("",)
print(q)
if q == "2":
print("\nCorrect")
else:
exit("\nFalse, You lose!!")
def counter():
timel = 5
for i in range(0, timel):
print("How much is 1+1?", timel)
timel -= 1
time.sleep(1)
os.system("cls")
def timer(seconds):
time.sleep(seconds)
exit("\nTIMES UP, You lose!!")
def exit(msg):
print(msg)
os._exit(1)
def main():
thread = threading.Thread(target=timer, args=(int("{}".format(timel)),))
thread2 = threading.Thread(target=counter)
thread.start()
thread2.start()
question()
if __name__ == "__main__":
main()