如何让两个功能同时激活+计时器问题

2024-09-27 00:15:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为一个基于文本的冒险游戏编写一个攻击代码,玩家可以用剑造成伤害。控制台中会显示一个随机数,玩家必须尽快输入该数字。他们做得越快,造成的伤害就越大。到目前为止,我有:

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语句运行时,它会停止代码,直到给出输入


Tags: 代码importtimedefas玩家random计时器
1条回答
网友
1楼 · 发布于 2024-09-27 00:15:51

好的,我要用定时器倒计时的方式来尝试一下。如果你的剑的伤害是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,但我确实希望这有帮助)

相关问题 更多 >

    热门问题