
"""
跳高台接金币.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)