对于非常模糊的标题感到抱歉,我不确定如何描述我的问题。
我制作的游戏涉及大量微小的细胞,它们会在屏幕上随机移动,但问题是它们似乎都倾向于屏幕的左上角。不仅仅是我不走运,他们总是走到左上角。
以下是相关代码:
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)
答案 0 :(得分:3)
随机数生成器没有任何问题。 cell.rect.x
和cell.rect.y
是整数,而cell.speed
则不是。当您将cell.speed
添加到cell.rect.x
或cell.rect.y
时,结果会四舍五入 - 可能带有一个底层函数,因此偏向左上角。请注意,如果将单元格速度硬编码为1(或任何整数),问题就会消失。如果您想保持单元格速度的微小变化,可以创建cell.x
和cell.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.x
和cell.y
也会跟踪"真实"位置并没有偏见。如果您不需要在速度上有小的变化,只需使用randint来生成它。