
李兴球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)