turtle和pymunk愤怒的小鸟发射准备程序by李兴球

"""为了用python海龟画图模块和pymunk模块制作愤怒的小鸟,
先编写了这个发射程序。操作方法:拖曳绿球,然后松开即可发射。
读者可以根据这个原型作品用海龟作图模块制作很多小游戏哦。
"""

__author__ = "李兴球"
__date__ = "2019/4/4"
__website__ = "www.lixingqiu.com"
from turtle import *

def draw_line(x,y):
    """画线"""
    fixed_dot.clear()
    fixed_dot.pendown()
    fixed_dot.goto(x,y)
    fixed_dot.penup()    
    fixed_dot.goto(fixed_position)
    ball.goto(x,y)    
    
def shoot(x,y):
    ball.ondrag(None)
    dx =  (fixed_dot.xcor() - ball.xcor())/5    
    dy =  (fixed_dot.ycor() - ball.ycor())/5
    fixed_dot.clear()
    def move():
        nonlocal dy
        x = ball.xcor() + dx
        y = ball.ycor() + dy
        dy = dy - 0.5
        ball.goto(x,y)
        if abs(x)>width//2 or abs(y)>height//2:
            ball.ht()
        else:
            screen.ontimer(move,10)
    move() 
     
    
fixed_position = -300,-150          # 固定点
width,height = 1024,600
screen = Screen()
screen.delay(0)
screen.bgcolor("navy")
screen.setup(width,height)
screen.title("turtle和pymunk愤怒的小鸟发射准备程序by李兴球")
screen.addshape("绿球.gif")

fixed_dot = Turtle(visible=False)
fixed_dot.penup()
fixed_dot.goto(fixed_position)
fixed_dot.pensize(5)
fixed_dot.color("cyan")

ball = Turtle("绿球.gif")
ball.penup()
ball.goto(fixed_position)

ball.ondrag(draw_line)
ball.onrelease(shoot)

"""下面是物理引擎要用到的循环 
while True:
    print(10)
    screen.update()
"""
    
screen.mainloop()