【发布时间】:2019-07-16 23:41:36
【问题描述】:
所以我正在制作一个 PyGame,棒球从上往下掉,底部的用户必须接住球。球以随机的速度下落,但我很难让球以不同的速度下落。
例如,我当前的球代码是:
def update(self):
if self.is_falling:
"""Move the ball down."""
self.y += random.randint(10, 200) / 100
self.rect.y = self.y
在这里,当我运行程序时,球以不同的速度下落,但几乎没有什么不同。如果我将数字更改为 (10, 20000) / 100,那么每个球的下落速度都非常快。原因是什么?似乎随机数不是那么随机。我是不是用错了函数?
我想让每个球以非常不同的速度下落,比如一个非常快,另一个非常慢。而且我希望它是随机数,以便用户可以以多种不同的速度玩...
我想知道,是否有随机函数可以在生成的随机数之间设置特定间隔?还是我应该尝试不同的方法?如果是这样,我该怎么做?
我是Python的初学者,所以如果你能尽可能简单地解释一下,那将不胜感激!
【问题讨论】:
-
尝试使用
import random;speed = random.random() * 15或类似的东西。random.random()返回一个介于 0 和 1 之间的数字,您可以将其乘以您想要的最大数字! -
@Reedinationer 所以我尝试了这种方法,但我仍然得到相同的结果。如果像
random.random() *2那样做让它变慢,所有的球都在减速,但差别很小。如果我像random.random()*15那样做,那么所有的球都会变得更快,但同样,速度也略有不同。 -
将下落速度存储在某处,以查看它们的实际差异。错误可能完全在其他地方。
-
@Sam 实际上,这是个好主意。我开始认为随机函数很奇怪,但它可能是我的全部。谢谢!
-
@Sarah 首先,
random.random()*15返回一个介于 0 和 15 之间的数字,因此它可能会将速度提高 0.00001,而您只知道您是否要使用print()的值。其次,它取决于初始速度的规模。如果你的球是 300 并且你将它增加 0.5 你不会注意到它。如果它是 0.5 并且你将它增加 15 它将使你的游戏无法玩。由您来微调这些参数