猫史档案馆


【Python作品分享】第40课-代码框架【作业帖】

用户:威武的阿尔法qorq威武的阿尔法qorq查看:0 回复:0 评论:0 创建时间:2021-10-31T14:04:21


【作品展示】

center_image

 

【作品介绍】

上左右

 

【作品源代码】

# 导入库中大部分功能
from arcade import *
from random import*
from arcade import key
# 子类继承父类Window
class MyWindow(Window):
    # 初始化方法,也叫构造函数
    def __init__(self):  # 该方法在类被实例化的时候会被自动调用一次
        super().__init__(950,610)  # 继承父类里面原有的初始化方法
        set_background_color((137,207,240))
        self.q1=PymunkPhysicsEngine((0,-900))
        self.el=SpriteList()
        self.q=Sprite("ground.png")
        self.q.left=0
        self.q.bottom=0
        self.q1.add_sprite(self.q,body_type=self.q1.STATIC)
        self.y=Sprite("jkl.jpg",0.85)
        self.y.left=0
        self.y.bottom=0
        self.w=Sprite("j1.png")
        self.w.position=100,300
        self.w.append_texture(load_texture("j2.png"))
        self.w.append_texture(load_texture("j3.png"))
        self.q1.add_sprite(self.w)
        schedule(self.ce,2)
        self.r=Sound("bgmusic.mp3")
        self.r.play(10,loop=True)
        self.t=Sound("jiu.wav")
        self.num=0
    # 重写【键盘按键按下】方法,英文输入的状态下,每当按下键盘上面的按键时,该方喵自动被执行1次,symbol 参数是按下按键的值
    def on_key_press(self, symbol, modifiers):
        if symbol==key.RIGHT:
            self.q1.set_velocity(self.w,(100,0))
        if symbol == key.LEFT:
            self.q1.set_velocity(self.w, (-100, 0))
        if symbol == key.UP:
            self.q1.set_velocity(self.w, (0, 500))
            self.w.set_texture(1)
    # 重写【键盘按键弹起】方法,英文输入的状态下,每当键盘上面的按键弹起时,该方喵自动被执行1次,symbol 参数是按下弹起的按键值
    def ce(self,time):
        for i in range(30):
            self.e=Sprite("en.jpg",0.15)
            self.e.position=randint(0,800),randint(150,600)
            self.el.append(self.e)
    def hit(self):
        self.h=check_for_collision_with_list(self.w,self.el)
        if self.h:
            for i in self.h:
                self.el.remove(i)
                self.t.play(10)
                self.num+=1
        self.c=check_for_collision(self.w,self.q)
        if self.c:
            self.w.set_texture(0)
    def on_key_release(self, symbol, modifiers):
        if symbol==key.UP:
            self.w.set_texture(2)
    # 重写【鼠标按下】方法,当鼠标在arcade窗口中按下的时候,会自动调用
    def on_mouse_press(self, x, y, button, modifiers):
        pass
    # 重写绘制方法,这个方法在程序执行run()指令后,会每秒被执行60次
    def on_draw(self):
        start_render()  # 清屏并重新开始绘制
        self.y.draw()
        self.q.draw()
        self.w.draw()
        self.el.draw()
        if self.num<1000:
            draw_text(f"你吃掉了{self.num}包金坷垃",20,500,(255,0,0),30,font_name="FZY4JW")
        elif self.num>=1000:
            draw_text("可喜可贺,你的田种好了", 20, 500,(255, 0, 0), 30, font_name="FZY4JW")
            self.q1.set_velocity(self.w,(0,0))
            unschedule(self.ce)
    # 重写更新方法,这个方法在程序执行run()指令后,会每秒被执行60次
    def on_update(self, time):
        self.q1.step(1/60)
        self.hit()
# 创建MyWindow类的实例,将会自动执行 __init__ 方法里面的代码
w = MyWindow()  # 实例化
# 运行(调用Window类中的方法)
run()

 

【提示】

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

https://python.codemao.cn


回复

上一页1 页 / 共 0下一页