RNG表现不如我所料

时间:2015-07-03 21:06:17

标签: python pygame

对于非常模糊的标题感到抱歉,我不确定如何描述我的问题。

我制作的游戏涉及大量微小的细胞,它们会在屏幕上随机移动,但问题是它们似乎都倾向于屏幕的左上角。不仅仅是我不走运,他们总是走到左上角。

以下是相关代码:

    for cell in cell_list:

            direction = randint(0, 3)

            if direction == 0:
                    cell.rect.x += cell.speed
            elif direction == 1:
                        cell.rect.x -= cell.speed
            elif direction == 2:
                    cell.rect.y += cell.speed
            elif direction == 3:
                    cell.rect.y -= cell.speed

以下是我的完整代码:http://pastebin.com/3hK4s2qL(使用Python 3.4)

1 个答案:

答案 0 :(得分:3)

随机数生成器没有任何问题。 cell.rect.xcell.rect.y是整数,而cell.speed则不是。当您将cell.speed添加到cell.rect.xcell.rect.y时,结果会四舍五入 - 可能带有一个底层函数,因此偏向左上角。请注意,如果将单元格速度硬编码为1(或任何整数),问题就会消失。如果您想保持单元格速度的微小变化,可以创建cell.xcell.y然后执行此操作:

for cell in cell_list:
    direction = randint(0, 3)

    if direction == 0:
        cell.x += cell.speed
    elif direction == 1:
        cell.x -= cell.speed
    elif direction == 2:
        cell.y += cell.speed
    elif direction == 3:
        cell.y -= cell.speed
    cell.rect.x = cell.x
    cell.rect.y = cell.y

这样,即使显示四舍五入为整数,cell.xcell.y也会跟踪"真实"位置并没有偏见。如果您不需要在速度上有小的变化,只需使用randint来生成它。