首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在游戏中实现攻击频率?

如何在游戏中实现攻击频率?
EN

Stack Overflow用户
提问于 2010-01-03 10:18:07
回答 2查看 168关注 0票数 2

在RPG游戏中,假设有角色A和B。

A将每秒进行x次攻击

B每秒进行y次攻击

如果我们假设发起攻击,最后的攻击可能是:

A,A,B,A,B.

如何计算攻击的顺序?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-01-03 10:28:29

这里有一种在Python3.0中使用生成器和分数的方法:

代码语言:javascript
复制
def get_attack_sequence(a, b):
    from fractions import Fraction
    count_a = count_b = 0
    rate_a = Fraction(1, a)
    rate_b = Fraction(1, b)
    while 1:
        new_count_a = count_a + rate_a
        new_count_b = count_b + rate_b

        if new_count_a < new_count_b:
           yield "A"
           count_a = new_count_a
        elif new_count_a > new_count_b:
           yield "B"
           count_b = new_count_b
        else:
           yield "A|B"
           count_a = new_count_a
           count_b = new_count_b

attack_sequence = get_attack_sequence(3, 2)
print(' '.join(next(attack_sequence) for _ in range(10)))

输出:

代码语言:javascript
复制
A B A A|B A B A A|B A B

需要检查攻击频率为0。为了简单起见,我在上面的代码中没有这样做过,但是它很容易修复,并且可能最好在这个函数之外处理(一个玩家无法攻击的战斗无论如何也不会很有趣)。

这个想法的一个优点是,它可以很容易地扩展到两个以上的同时玩家。

另一个优点是,它还可以处理每秒少于一次的攻击速率,而不需要任何修改(例如,B攻击每2秒一次,即攻击频率= 0.5)。

票数 3
EN

Stack Overflow用户

发布于 2010-01-03 10:24:21

数一数谁有更多的攻击。再打给他。分得多/少,结果是= N,则对于越多的N攻击,越少的攻击加一个,完成后的攻击次数越多。那是每一秒。

示例:

代码语言:javascript
复制
MORE = 5
LESS = 2
MORE/LESS floor = 2

Then:
MORE MORE LESS MORE MORE LESS MORE

另一个例子是:

代码语言:javascript
复制
MORE = 3
LESS = 2
MORE/LESS floor = 1

Then:
MORE LESS MORE LESS MORE
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1994512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档