猫史档案馆


【Python作品分享】第40课-饥饿的吴签-王晟懿【作品秀】

用户:我爱蝴蝶忍我爱蝴蝶忍查看:0 回复:5 评论:0 创建时间:2021-08-13T21:10:58


【作品展示】

center_image

 

【作品介绍】

吴签吃牢饭

 

【作品源代码】

# 从 arcade 导入 大部分功能
from arcade import *
import random
from arcade import key
import time

#音乐只有一分钟

#‘香肠’出品

# 定义一个类 MyWindow, 使其继承 Window 类:
class MyWindow(Window):
    def __init__(self):
        super().__init__(1300,700)
        # 设置背景颜色
        self.bg = Sprite('bg.png')
        self.bg.left = 0
        self.bg.bottom = 0
        # 创建物理引擎
        self.ppe = PymunkPhysicsEngine((0, -400))
        # 创建地面
        self.grd = Sprite("ground2.png")
        self.grd.position = 650, 20
        # 将地面加入物理引擎,并设置地面的物体类型为静态
        self.ppe.add_sprite(self.grd,body_type = self.ppe.STATIC)
        # 生成吴签
        self.j = Sprite("w3.png",0.5)
        self.j.position = 100, 300
        # 将吴签加入物理引擎
        self.ppe.add_sprite(self.j)
        # 给吴签添加造型
        shape_list = ["w4.png", "w5.png"]
        for shape in shape_list:
            self.j.append_texture(load_texture(shape))

        # 添加背景音乐并循环播放
        self.bg_msc = Sound ("bgmusic.wma")
        self.bg_msc.play()
        # 添加吴签吃掉shi的音效
        self.jiu = Sound("skr.wma")
        # 添加属性记录被吃掉的shi个数
        self.cnt = 0
        # 定时自动生成shi
        self.time = 2
        self.shi_list = SpriteList()
        schedule(self.create_shi,self.time)  

    # 自定义生成shi的方法
    def create_shi(self, time):
        for i in range(3):
            self.shi = Sprite("lf.png",0.7)
            x = random.randint(0,1300)
            y = random.randint(150,700)
            # 设置精灵 self.shi 的位置为 x, y
            self.shi.position = x,y
            # 向精灵列表 self.shi_list 中添加精灵 self.shi
            self.shi_list.append(self.shi)


    # 控制吴签移动
    def on_key_press(self, symbol, modifiers):
        if symbol == key.RIGHT:
            self.ppe.set_velocity(self.j,(200, 0))

        if symbol == key.LEFT:
            self.ppe.set_velocity(self.j, (-200, 0))

        if symbol == key.UP:
            self.ppe.set_velocity(self.j, (0, 400))
            self.j.set_texture(1)

    def on_key_release(self, symbol, modifiers):
        if symbol == key.UP :
            self.j.set_texture(2)


    def on_draw(self):
        # 开始渲染
        start_render()
        self.bg.draw()
        self.grd.draw()
        self.shi_list.draw()
        self.j.draw()
        draw_text("被吃掉laofan:" + str(self.cnt),20, 650,(255, 0, 0),30,font_name="FZY4JW.TTF")
        
    def on_update(self,time):
        self.ppe.step()
        # 吴签在地面时,切换为 0 号造型
        hit = check_for_collision(self.j, self.grd)
        if hit == True:
            self.j.set_texture(0)

        # 吴签碰到shi时, 1个shi消失,播放音效,并将被吃掉的shi的个数 增加 1
        hit_list = check_for_collision_with_list(self.j, self.shi_list) 

        if hit_list != []:
            self.shi_list.remove(hit_list[0])
            self.jiu.play()
            self.cnt += 1        
            

# 创建一个 MyWindow 类的实例 w
w = MyWindow()
# 运行
run()

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 1下一页
我爱蝴蝶忍我爱蝴蝶忍

center_imagecenter_imagecenter_imagecenter_imagecenter_imagecenter_imagecenter_image

点赞0


评论


我爱蝴蝶忍我爱蝴蝶忍

pythonXiangChang

点赞0


评论


lsk666666lsk666666

紧跟时事(滑稽)

点赞0


评论


Albert钟Albert钟

az

点赞0


评论


Python-happyyyyPython-happyyyy

wu qian

点赞0


评论