我正在写一个小游戏,由迷宫、玩家角色和一定数量的敌人组成。PC 和敌人都属于一个给定的类别,它们根据我指定的标准每隔几毫秒更新一次移动。(所有这些限制都是作业的一部分)。现在,我正在尝试编写一个标准,以便敌人和 PC 都不会移动到被迷宫墙占据的方格。为此,我使用了以下方法(所有这些都在我正在制作的 Game 类中):
def isNotWall(self,x,y):
self.wallXI = 0
self.wallXF = 0
self.wallYI = 0
self.wallYF = 0
for wall in self.wallList:
self.wallXI = wall[0]*self.grid + 1
self.wallXF = (wall[0]+1)*self.grid
self.wallYI = wall[1]*self.grid + 1
self.wallYF = (wall[1]+1)*self.grid
if self.wallXI < x < self.wallXF and self.wallYI < y < self.wallYF:
return False
return True
其中 wallList 是一个列表,其中包含数组坐标中每面墙的 x 和 y 坐标,而 grid 是每个网格正方形的大小(在本例中为 32 像素)。
现在,举一个我如何实现它的例子:
if snake[1] > self.heroe_x:
if self.isNotWall(snake[1] - 30,snake[2]):
snake[1] = snake[1] - 30 * segundos
其中snake[1]是以像素为单位的x坐标,snake[2]是y,segundos是经过了多少毫秒,这样敌人就会移动适当数量的像素。
据此,如果蛇(和角色)在移动结束时的位置被墙占据,则它们不应朝某个方向移动。然而,这只是部分起作用,行为不稳定,一些墙只在一个方向上起作用,而且角色经常被卡在墙内或无缘无故地停止寒冷。
任何修复这些缺陷的帮助将不胜感激。我意识到这个问题不是很简洁,但是由于我对语言的缺乏经验,我想不出一种方法来使问题更具体,并且以前的答案对我没有帮助。提前致谢!