猫史档案馆


【Python作品分享】【去太空,趣编程】【作品秀】

用户:流浪狗_用户_酉酉午未戌巳辛戊丙己流浪狗_用户_酉酉午未戌巳辛戊丙己查看:0 回复:0 评论:0 创建时间:2021-05-01T19:05:28


【作品展示】

center_image

 

【作品介绍】

 

【作品源代码】

from arcade import*

#设置窗体宽和高
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 800
#设置窗体标题
SCREEN_TITLE = "My Rocket"

class Rocket():
    def __init__(self):
        self.flame_flag = True
        self.click_num = 0
        self.angle = 0
    def draw_rocket(self):
        #火箭关键点坐标
        ox,oy = SCREEN_WIDTH // 2 , SCREEN_HEIGHT // 2
        ax,ay = ox , oy + 100
        bx,by = ox , oy - 100 + self.click_num * 100
        cx,cy = bx - 45 , by
        dx,dy = bx + 45 , by
        if self.click_num <= 0:
            #一级
            draw_rectangle_filled(cx, cy, 30, 100, color.COBALT)#一级左
            draw_rectangle_filled(bx, by, 50, 100, color.WHITE) # 一级中
            draw_rectangle_filled(dx, dy, 30, 100, color.COBALT)# 一级右
        if self.click_num <= 1:
            #二级
             draw_rectangle_filled(ox, oy, 30, 100, color.WHITE)
        if self.click_num <= 2:
            #三级
            draw_rectangle_filled(ax, ay, 50, 100, color.WHITE)
            draw_circle_outline(ax, ay, 10, color.COBALT, 5)
        #三角形顶点坐标
        ex,ey = ax - 25 , ay + 50
        fx,fy = ax + 25 , ay + 50
        gx,gy = ax , ay + 100
        if self.click_num <= 2:
            draw_triangle_filled(ex, ey, fx, fy, gx, gy, color.RED)
        #火焰关键点坐标
        ljx,ljy = cx,cy - 50 - 5 - 40
        lkx,lky = bx,by - 50 - 5 - 50
        llx,lly = dx,dy - 50 - 5 - 40
        sjx,sjy = cx,cy - 50 - 5 - 30
        skx,sky = bx,by - 50 - 5 - 40
        slx,sly = dx,dy - 50 - 5 - 30
        flame_color = color.TANGERINE
        if self.click_num <= 2:
            if self.flame_flag:
                #长火焰
                draw_rectangle_filled(ljx,ljy,30,80,flame_color)
                draw_rectangle_filled(lkx,lky,50,100,flame_color)
                draw_rectangle_filled(llx, lly, 30, 80, flame_color)
            else:
                #短火焰
                draw_rectangle_filled(sjx, sjy, 30, 60, flame_color)
                draw_rectangle_filled(skx, sky, 50, 80, flame_color)
                draw_rectangle_filled(slx, sly, 30, 60, flame_color)
        #人造地球卫星和地球
        if self.click_num >= 3:
            #地球
            mx,my = ax,ay - 200
            draw_circle_filled(mx,my,100,color.BLUE)
            #卫星
            R = 200
            sx,sy = mx + R * math.sin(math.radians(self.angle)),my + R * math.cos(math.radians(self.angle))
            draw_rectangle_filled(sx,sy,50,100,color.WHITE)
            draw_rectangle_filled(sx,sy,150,50,color.BLUE)     

    def change_flame(self,time):
        self.flame_flag = not self.flame_flag




class MyRocket(arcade.Window):
    def __init__(self,width,height,title):
        super().__init__(width,height,title)
        #窗体初始化
        self.setup()

    def setup(self):
        #设置背景颜色
        set_background_color(color.SILVER)
        self.rocket = Rocket()
        schedule(self.rocket.change_flame, 0.3)

    def on_draw(self):
        start_render()
        self.rocket.draw_rocket()
    
    def on_mouse_release(self,x,y,button,modifiers):
        self.rocket.click_num += 1
    
    def on_update(self,delta_time):
        self.rocket.angle += 1


if __name__ == '__main__':
    game = MyRocket(SCREEN_WIDTH,SCREEN_HEIGHT,SCREEN_TITLE)
    run()        

 

【提示】

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

https://python.codemao.cn


回复

上一页1 页 / 共 0下一页