我正在tkinter中构建一个瓷砖到瓷砖的步行游戏,当他们在屏幕上对敌人进行寻路时,他们会走出屏幕,不知道我设置的那些bounderies。 更令人沮丧的是,如果我只是启用单个“方向”,它就可以工作,只有当它们全部四个都处于活动状态时,图像才会从画布中走出来。 我使用canvas grid,root.after()和update_idletasks()。 渲染图像对象时是否存在微小差异?帮助appriciated。 4小时的重复简单任务,我仍然坚持这个:
def move(self):
movements = []
up = self.move_up()
down = self.move_down()
left = self.move_left()
right = self.move_right()
if up:
movements.append('U')
if down:
movements.append('D')
if left:
movements.append('L')
if right:
movements.append('R')
if len(movements) == 0:
return
else:
t = random.randint(0,len(movements)-1)
print(t)
destination = movements[t]
if destination == 'U':
canvas.move(self.image, 0, -72)
self.testBoxY = self.testBoxY - 72
self.a -= 1
if destination == 'D':
canvas.move(self.image, 0, + 72)
self.testBoxY = self.testBoxY + 72
self.a += 1
if destination == 'L':
canvas.move(self.image, -72 , 0)
self.b -= 1
self.testBoxX = self.testBoxX - 72
if destination == 'R':
canvas.move(self.image, +72, 0)
self.b += 1
self.testBoxX = box.testBoxX + 72
def move_up(self):
try:
if self.testBoxY == 36:
return
if grid[self.a - 1][self.b] == 1:
return
except IndexError:
return
else:
return True
def move_down(self):
try:
if self.testBoxY == 684:
return
if grid[self.a + 1][self.b] == 1:
return
except IndexError:
return
else:
return True
def move_left(self):
try:
if self.testBoxX == 36:
return
if grid[self.a][self.b - 1] == 1:
return
except IndexError:
return
else:
return True
def move_right(self):
try:
if self.testBoxX == 684:
return
if grid[self.a][self.b + 1] == 1:
return
except IndexError:
return
else:
return True