如何在while循环中记录首次出现

问题描述

我有两个值b_killsp_kills代表每个团队的杀戮次数,每一个周期中每〜5秒更新一次。我想做的是记录(在一场比赛中)哪支球队被第一杀。我尝试使用prev_b_killsprev_p_kills来做到这一点,它们记录了while循环的前一个周期中每个团队的杀戮次数:

while:

...

b_kills,p_kills = ...,...

...

    if b_kills >= 1 and prev_b_kills == 0 and p_kills == 0:
        b_fkill = 1  # Binary value,1 if blue team got the first kill,0 if purple team got it
    
    elif p_kills >= 1 and prev_p_kills == 0 and b_kills == 0:
        b_fkill = 0
    
    else:
        b_fkill = 0.5  # If both team get the first kill at the same time

    prev_b_kills,prev_p_kills = b_kills,p_kills

当游戏开始时我运行此循环会出现问题,但是随后,我无法推断哪个团队获得了第一杀,因此,我还应该将值设置为0.5。

请注意,我在while循环之前定义了b_fkills = 0.5,因为它是原始值,如果我不知道哪支队伍获得了第一名的话,该值应该保持不变。另外,我尝试在while循环中添加一个计数器,以检查该迭代是否是while循环中的第一次迭代:

b_fkills = 0.5

while:
    iter_ = 1

    ...

    if iter_ == 1:
        if b_kills == 0 and p_kills == 0:
             prev_b_kills,prev_p_kills = 0,0
    
    else:
        ...

    ...

    iter_ += 1

我试图解释游戏开始时的while循环,但是我只是被卡住了。我还想将其包装在一个函数中,因为我想多次使用它,但是正如我所说,我找不到解决方法。

解决方法

我以已有的东西为基础,并且(到目前为止)可以正常工作,但是代码确实很混乱。

# Check for the score already in place
if iter_ == 1:
    if b_kills != 0 and p_kills != 0:
        b_fkills_pass = False
    else:
        b_fkills_pass = True
        prev_b_kills,prev_p_kills = 0,0

if b_fkills_pass == True:
    if b_kills >= 1 and prev_b_kills == 0 and p_kills == 0:
        b_fkills = 1
    elif p_kills >= 1 and prev_p_kills == 0 and b_kills == 0:
        b_fkills = 0
    else:
        b_fkills = 0.5
else:
    b_fkills = 0.5

prev_b_kills,prev_p_kills = b_kills,p_kills

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...