
李兴球Python测试pixel_collide像素碰撞方法_蝴蝶闯隧道游戏
"""
测试pixel_collide像素碰撞方法_蝴蝶闯隧道游戏.py。
本程序需要gameturtle模块0.2版及以上支持。
Image,tkinter,time模块等都在gameturtle模块中已导入 ,所以可以直接使用。
"""
__author__ = '李兴球'
__date__ = '2020/10/16'
__blog__ = 'www.lixingqiu.com'
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
# 加载蝴蝶图形资源
hudie = ['b1.png','b2.png']
hudie = [Image.open(im) for im in hudie]
# 加载背景图形资源
bgs = ['bg1.png','bg2.png','bg3.png']
bgs = [Image.open(im) for im in bgs]
root = Tk()
root.title('测试pixel_collide像素碰撞方法_蝴蝶闯隧道游戏')
root.resizable(False,False) # 窗口宽高不可调
cv = Canvas(width=640,height=480,bg='#f0f0f0') # 带背景色的画布
cv.pack()
bg = Sprite(cv,bgs) # 实例化背景
h1 = Sprite(cv,hudie) # 实例化蝴蝶2
h1.shapesize(0.2,0.2)
up_key = Key(cv,"Up")
down_key = Key(cv,"Down")
right_key = Key(cv,"Right")
left_key = Key(cv,"Left")
cv.focus_force()
while True:
h1.nextshape()
if up_key.isdown():
#print('向上箭头按下')
h1.addy(-1)
if h1.collide(bg):h1.addy(1)
if down_key.isdown():
#print('向下箭头按下')
h1.addy(1)
if h1.collide(bg):h1.addy(-1)
if right_key.isdown():
#print('向右箭头按下')
h1.setheading(0)
h1.addx(1)
if h1.collide(bg):h1.addx(-1)
if h1.xcor()> 640:
bg.nextshape()
h1.setx(0)
if left_key.isdown():
#print('向左箭头按下')
h1.setheading(180)
h1.addx(-1)
if h1.collide(bg):h1.addx(1)
cv.update() # 更新画布显示
time.sleep(0.01)