小学生Python编程 ----- 打鸭子

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()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信息化未来

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值