0

我正在尝试编写一个游戏,其中一条蛇在矩阵中四处移动,占据一个标志的位置(在我的野蛮语言中是 tecken)。它会改变蛇的生长量,它由 p 决定,然后您可以决定它应该水平生长还是垂直生长,并且该信息在 b 和 c 中给出。然后我想要的是我的矩阵将用我的符号更新,然后我的新位置和旧位置之间的所有位置也将被我的符号替换,也就是蛇在那个位置生长。理解我的意思可能有点困难,但这是我认为可以完成工作的 for 循环。不幸的是,这并不能填补起始位置和结束位置之间的空白,它只会替换结束位置。任何人都知道我怎么能做到这一点?

   for antal in range(p):
                       ormfält.table[self.x-p*b][self.y-p*c] = self.tecken
4

1 回答 1

1

range 函数从 0 开始索引:

>>> p = 3
>>> range(p)
[0, 1, 2]

现在看看你什么时候打开你的循环;您更改了 3 个字段,但其中一个是您已经在的字段!

snakefield.table[self.x - 0 * b][self.y - 0 * c] = self.sign  # <-- this one
snakefield.table[self.x - 1 * b][self.y - 1 * c] = self.sign
snakefield.table[self.x - 2 * b][self.y - 2 * c] = self.sign

要向前移动p步骤而不是p - 1,只需使用:

>>> range(1, p + 1)
[1, 2, 3]
于 2012-11-26T19:49:17.383 回答