我正在做一个游戏,我想要波动的伤害。有两个敌人。对于敌人1,他们会损失一定数量的生命值(5点)。对于敌人2,玩家有可能在80%的时间内造成少量伤害(3分),在20%的时间内造成大量伤害(10分)。你知道吗
我试着从一组数字中选择一个,但是我发现它会从这些随机数中选择一个(例如3),并且会一直坚持到游戏重新开始。我希望每次玩家攻击时伤害数值都会改变,这样看起来更像“-3,-3,-3,-10,-3”。你知道吗
在主回路中,我有:
hits = pg.sprite.groupcollide(self.enemy1s, self.shards, False, True)
for hit in hits:
hit.health -= SHARD_DAMAGE1
hit.vel = vec(0, 0)
hits = pg.sprite.groupcollide(self.enemy2s, self.shards, False, True)
for hit in hits:
hit.health -= SHARD_DAMAGE1
hit.vel = vec(0, 0)
碎片损坏在另一个文件中单独定义为:
CONSTANT = [5, 5, 5, 5, 5]
RAND = [3, 3, 3, 3, 10]
SHARD_DAMAGE1 = choice(CONSTANT)
SHARD_DAMAGE2 = choice(RAND)
在这两个文件的最上面,我有:from random import uniform, choice
。你知道吗
就像我说的,游戏将锁定在3或10,并使伤害,直到整个事情重新开始。即使我有5个随机数,它也只会选择一个,直到我重新开始。你知道吗
这是因为当一个变量被分配了一个随机数时,程序只引用了这个存储的值,这个值已经被选取了一次。当做出选择时,比如:
存储在
SHARD_DAMAGE1
中的值永远不会被重新分配,因为SHARD_DAMAGE1 = choice(CONSTANT)
在开始时只读取一次。你知道吗正如评论中所建议的,每次需要点击时,你都需要做出一个随机的选择,比如:
以这种方式进行,每次命中都将执行一个新的计算。你知道吗
我不认为有任何必要持有一个预先定义的数字列表。你知道吗
写一个考虑敌人类型的小函数。然后对于“其他”类型,根据20%/80%分割的伤害计算:
相关问题 更多 >
编程相关推荐