tkinter简易迷宫游戏

tkinter简易迷宫游戏

李兴球Python tkinter颜色碰撞检测简易迷宫游戏
李兴球Python tkinter颜色碰撞检测简易迷宫游戏

李兴球Python tkinter颜色碰撞检测简易迷宫游戏

"""
   简易迷宫游戏.py
   本程序需要gameturtle模块0.2版支持。下面的gameturtle模块由于导入了tkinter和pillow命令,所以可以直接使用它们.
"""
from gameturtle import *

class Key:
    def __init__(self,cv,key):
        self._canvas = cv
        self._key = key
        self._down = False
        self._canvas.bind("" % key,self._press)        
        self._canvas.bind("" % key,self._release)
        
    def _press(self,event):
        self._down = True

    def _release(self,event):
        self._down = False

    def isdown(self):
      return self._down

RED = (255,0,0)                         # 红色表示墙壁

root = Tk()
root.title('gameturtle简易迷宫游戏by李兴球')
cv = Canvas(width=640,height=648,bg='white')
cv.pack()

# 生成背景
maze_pic = Image.open('maze1.gif')     # 注意gif,jpg等都要转换成RGBA模式
maze_pic =  maze_pic.convert("RGBA")   # 转换成RGBA模式,这样有透明通道
maze = GameTurtle(cv,maze_pic)

# 生成蓝色方块
blue_pic = Image.new("RGBA",(12,12),color='blue')
square = GameTurtle(cv,blue_pic)
square.center()                        # 到画布中心点

up_key = Key(cv,"Up")                  # 实例化向上方向箭头
down_key = Key(cv,"Down")              # 实例化向下方向箭头
right_key = Key(cv,"Right")            # 实例化向右方向箭头
left_key = Key(cv,"Left")              # 实例化向下方向箭头
cv.focus_force()                       # 设置画布焦点

cors = []                              # 记录单击时的坐标点的列表
def savexy(event):
    s = ','.join(map(str,cors))        # 把坐标转换成字符串用逗号连接
    f = open('坐标表.txt',mode='w')    # 打开文件 
    f.write(s)                         # 写s 
    f.close()                          # 关闭文件

# 绑定鼠标左键单击事件
cv.bind("",lambda event:cors.append((event.x,event.y)))
cv.bind("",savexy)

while True: 
    if right_key.isdown():              # 如果按右箭头        
            square.addx(2)
            if square.collide_color(RED):
                square.addx(-2)
    if left_key.isdown():               # 如果按左箭头        
            square.addx(-2)
            if square.collide_color(RED):
                square.addx(2)
    if up_key.isdown():                 # 如果按上箭头        
            square.addy(-2)
            if square.collide_color(RED):
                square.addy(2)
    if down_key.isdown():               # 如果按下箭头        
            square.addy(2)
            if square.collide_color(RED):
                square.addy(-2)            
    cv.update()                         # 更新画布 
    time.sleep(0.01)

李兴球

李兴球的博客是Python创意编程原创博客