from pgzrun import *
WIDTH = 720
HEIGHT = 540
music.play("bg.mp3")
#创建各种角色
#{
bg = Actor("背景.png")
p = Actor("光标.png")
wave = Actor("海浪前一层", [340, 242])
wave2 = Actor("海浪后一层", [380, 237])
wave3 = Actor("海浪前一层", [350, 412])
wave4 = Actor("海浪后一层", [370, 402])
bomb = Actor("炸弹.png", [1200, 242])
bomb2 = Actor("炸弹.png", [1600, 402])
over = Actor("结束页.png", [1100, 270])
#}
duck = Actor("鸭子0.png", [1000, 235])
duck2 = Actor("鸭子1.png", [1000, 405])
def draw():
#绘制角色
#{
bg.draw()
duck.draw()
duck2.draw()
wave2.draw()
wave.draw()
wave4.draw()
wave3.draw()
bomb.draw()
bomb2.draw()
p.draw()
over.draw()
if end:
screen.draw.text(str(score), [414, 298], fontsize=70, color=(255,20,147))
music.stop()
#}
#让光标跟随鼠标移动
def on_mouse_move(pos):
p.pos = pos
end = False
score = 0
def on_mouse_down(pos):
global score, end
#点击鼠标时,如果光标p碰到duck则击中duck,得分
if p.colliderect(duck):
duck.left = 800 #移出屏幕
duck.y = 235 #出现高度
score = score + 1
sounds.lucky.play()
#另一只鸭子
#{
if p.colliderect(duck2):
duck2.left = 800
duck2.y = 405
score = score + 1
sounds.lucky.play()
#}
#点击鼠标时,如果光标p碰到bomb则击中bomb,玩儿完
if p.colliderect(bomb):
over.left = 0
end = True
sounds.fail.play()
#另一个炸弹
#{
if p.colliderect(bomb2):
over.left = 0
end = True
sounds.fail.play()
#}
#海浪速度
#{
wave_speed = 2
wave2_speed = 2
wave3_speed = 2
wave4_speed = 2
#}
def update():
global score
#海浪的移动逻辑
#{
global wave_speed, wave2_speed, wave3_speed, wave4_speed
wave.x = wave.x - wave_speed
if wave.left < -80:
wave_speed = -wave_speed
if wave.right > 800:
wave_speed = -wave_speed
wave2.x = wave2.x - wave2_speed
if wave2.left < -80:
wave2_speed = -wave2_speed
if wave2.right > 800:
wave2_speed = -wave2_speed
wave3.x = wave3.x - wave3_speed
if wave3.left < -80:
wave3_speed = -wave3_speed
if wave3.right > 800:
wave3_speed = -wave3_speed
wave4.x = wave4.x - wave4_speed
if wave4.left < -80:
wave4_speed = -wave4_speed
if wave4.right > 800:
wave4_speed = -wave4_speed
#}
#小鸭子的移动逻辑
duck.x = duck.x - 4
if duck.right < 0:
duck.left = 800 #移出屏幕
duck.y = 235 #出现高度
duck2.x = duck2.x - 4
if duck2.right < 0:
duck2.left = 800
duck2.y = 235
#炸弹的移动逻辑
bomb.x = bomb.x - 5
if bomb.right < 0:
bomb.left = 800
bomb.y = 235
#另一个炸弹
#{
bomb2.x = bomb2.x - 5
if bomb2.right < 0:
bomb2.left = 800
bomb2.y = 405
#}
go()