测试pixel_collide像素碰撞方法_蝴蝶闯隧道游戏

测试pixel_collide像素碰撞方法_蝴蝶闯隧道游戏

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


李兴球

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