Python 如何让两个功能同时激活+;计时器问题
我正在为一个基于文本的冒险游戏编写一个攻击代码,玩家可以用剑造成伤害。控制台中会显示一个随机数字,玩家必须尽快输入该数字。他们做得越快,造成的伤害就越大。到目前为止,我有:Python 如何让两个功能同时激活+;计时器问题,python,timer,text-based,adventure,Python,Timer,Text Based,Adventure,我正在为一个基于文本的冒险游戏编写一个攻击代码,玩家可以用剑造成伤害。控制台中会显示一个随机数字,玩家必须尽快输入该数字。他们做得越快,造成的伤害就越大。到目前为止,我有: import random import time from threading import Timer def damage(timeAmount, baseDamage): damageTotal = baseDamage - timeAmount def sword(): t = 0
import random
import time
from threading import Timer
def damage(timeAmount, baseDamage):
damageTotal = baseDamage - timeAmount
def sword():
t = 0
timerAmount = 0
randomNumber = random.randint(0, 1000000)
print('Type the following as fast as you can: \n' + str(randomNumber))
swordAttack = input('> ')
while t == 0:
timerAmount = timerAmount + 1
time.sleep(1)
if swordAttack == randomNumber:
t = 1
damage(timerAmount, 10)
print(timerAmount)
sword()
第一个问题是,我不知道如何让计时器计数,然后在伤害公式中使用最后的时间。线程中的计时器函数只会倒计时,我不知道如何精确地计算它的时间,尽管如果你能用简单的术语向我解释一下,这可能会起作用
第二个问题是,我还需要使其在屏幕上显示输入时计时器立即激活,但当input语句运行时,它会停止代码,直到给出输入。好,所以我将使用计时器倒计时的方式来尝试。如果你的剑的伤害是10,那么没有必要在“否定”中超过10,它只会是0,所以只要从剑的伤害开始倒数。因此,如果他们在2秒内输入,那么在这种情况下将造成8点伤害。下面是一些我使用倒计时的代码。你所要做的就是将计时器设置为任何剑的伤害
import random
import time
from threading import Timer
def damage(timeAmount, baseDamage):
damageTotal = baseDamage - timeAmount
print(format(damageTotal, '.0f'))
def sword():
user_sword_max_damage = 10
randomNumber = random.randint(0, 10)
timeout = user_sword_max_damage
t = Timer(timeout, print, ['Damage dealt = 0'])
start_time = time.time()
t.start()
while True:
try:
prompt = int(input('Enter ' + str(randomNumber) + ' as fast as you can: '))
if prompt == randomNumber:
t.cancel()
final_time = time.time()-start_time
print(format(final_time, '.0f'))
damage(final_time, user_sword_max_damage)
break
elif prompt != randomNumber:
continue
except:
continue
sword()
如果你以后增加更多的伤害物品,这也可能为你指明正确的方向。我唯一没有添加的部分是,如果时间用完,将damageTotal设置为0的逻辑,您应该能够将其放入while循环中的if语句中(请注意,这是我第一次尝试回答ha,但我希望这会有所帮助)可能在开始时获取时间-
start=time.time()
,在结束时获取时间-end=time.time()()
-并计算end-start
以获得所需的时间。如果必须将input()
与其他内容一起使用,则必须在单独的线程中运行input()
或其他内容。