表示对象的tkinter图像离开屏幕

时间:2017-12-21 21:48:50

标签: python image tkinter coordinates move

我正在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

0 个答案:

没有答案