代表物体的图片离开屏幕

2024-10-04 01:27:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我在tkinter中创建了一个瓦片对瓦片的行走游戏,当在屏幕上寻找敌人的路径时,他们习惯于走出屏幕,不管我给他们设置了什么边界。 更令人沮丧的是,如果我只是启用个人的“方向”,它的工作,只有当所有四个是积极的,然后图像走出画布。 我使用canvas grid、root.after()和update\u idletasks()。 渲染图像对象时是否可能存在微小差异?帮助得到认可。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

Tags: selfmovereturnifdefleftdestinationelse