2022寒假7天课之跳高台接金币课程源代码

0 Comments

李兴球Python精灵模块弹球跳高台演示

"""
   跳高台接金币.py
   请完善程序,让小球接到金币后会显示游戏结束几个字。
"""
from sprites import Sprite,Key,Clock

ball = Sprite(1,pos=(-150,30))               # 新建球
ball.scale(0.5)                # 球缩小
screen = ball.getscreen()      # 得到屏幕
screen.setup(480,360)          # 设定宽高 
screen.bgpic('res/sky.png')

g1 = Sprite('square',pos=(100,100),tag='ground')# 新建平台,标签为ground
g1.color('brown')
g1.shapesize(0.5,5)                             # 变形 

g2 = Sprite('square',pos=(-50,-50),tag='ground')# 新建平台,标签为ground
g2.color('brown')
g2.shapesize(0.5,5)                             # 变形 

g3 = Sprite('square',pos=(150,-100),tag='ground')
g3.color('brown')
g3.shapesize(0.5,5)

# 这是下面最长的那个地面
g4 = Sprite('square',pos=(0,-165),tag='ground')
g4.color('brown')
g4.shapesize(0.5,24)

g5 = Sprite('square',pos=(-150,45),tag='ground')
g5.color('brown')
g5.shapesize(0.5,4)

# 以下会把'coins'当成一个路径去寻找下面有没有0.png,1.png,然后加载为角色的造型
coin = Sprite('coins',pos=(100,130))
coin.scale(0.2)
 
akey = Key('a')           # 实例化a键
dkey = Key('d')           # 实例化d键
wkey = Key('w')           # 实例化w键
screen.listen()           # 监听按键检测      
dx = 0
dy = -1
clock = Clock()           # 新建时钟对象
while True:
    
    x = ball.xcor() + dx
    y = ball.ycor() + dy
    old_x = ball.xcor()    # 记录先前球的x坐标
    old_y = ball.ycor()    # 记录先前球的y坐标
    ball.goto(x,y)
    if ball.collide_others('ground'): # 如果小球碰到标签为'ground'的平台
        if akey.down():dx=dx - 0.2
        elif dkey.down():dx=dx + 0.2
        else:dx= dx*0.9               # 实现有点滑行的效果
        dy = 0                        # 小球碰到地面那么垂直速度设为0,就不会往下掉了
        ball.goto(old_x,old_y)        # 并且还回到上一次x,y坐标
        if wkey.down():dy = 10        # 如果这个时候按w键,则dy为10,实现起跳
    else:
        dy = dy - 0.5

    coin.nextshape()                  # 金币切换到下一个造型
    if coin.collide(ball):
        coin.play('collect.wav')
        coin.hide()
    screen.update()
    clock.tick(60)

标签:

发表评论