猫史档案馆


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

用户:金钿森金钿森查看:0 回复:0 评论:0 创建时间:2021-05-03T11:50:43


【作品展示】

center_image

 

【作品介绍】

展现了火箭发射的过程

 

【作品源代码】

from arcade import *
import math
# 设置窗体宽和高
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 800
class R(): 
    def __init__(self):
        self.ff=True
        self.cn=0
        self.an=0
    def dr(self):
        self.fc=color.TANGERINE
        ox=SCREEN_WIDTH/2
        oy=SCREEN_HEIGHT/2
        ax,ay=ox,oy+100
        bx,by=ax,ay-200+self.cn*100
        if self.cn>=4 and self.cn<7:
            by-=400
            cx,cy=bx-45,by
            dx,dy=cx+90,cy
            ex,ey=cx,cy-95,
            fx,fy=bx,by-105,
            gx,gy=dx,dy-95,

            ix,iy=cx,cy-85,
            jx,jy=bx,by-95,
            kx,ky=dx,dy-85,
        elif self.cn>=7:
            cx,cy=bx-45,by
            dx,dy=cx+90,cy
            ex,ey=cx,cy-95,
            fx,fy=bx,by-105,
            gx,gy=dx,dy-95,

            ix,iy=cx,cy-85,
            jx,jy=bx,by-95,
            kx,ky=dx,dy-85,
        else:
            cx,cy=bx-45,by
            dx,dy=cx+90,cy
            ex,ey=cx,cy-95,
            fx,fy=bx,by-105,
            gx,gy=dx,dy-95,

            ix,iy=cx,cy-85,
            jx,jy=bx,by-95,
            kx,ky=dx,dy-85,
        #TODO:展示

        #for i in range(3):
        #TODO:火箭制造
        #TODO:火箭装箱
        if self.cn==0 or self.cn==4 :
            draw_rectangle_filled(cx,cy,30,100,color.COBALT)
            draw_rectangle_filled(dx,dy,30,100,color.COBALT)
            draw_rectangle_filled(bx,by,50,100,color.WHITE)

        if self.cn==0 or self.cn==1 or self.cn==4 or self.cn==5 :
            draw_rectangle_filled(ox,oy,30,100,color.WHITE)

        if self.cn==0 or self.cn==1 or self.cn==2 or self.cn==4 or self.cn==5 :
            draw_rectangle_filled(ax,ay,50,100,color.WHITE)
            draw_circle_outline(ax,ay,10,color.COBALT,5)
            draw_triangle_filled(ax-25,ay+50,ax, ay+95, ax+25, ay+50,color.RED)
        if self.cn==0 or self.cn==1 or self.cn==2 or self.cn==4 or self.cn==5 :
            if self.ff:    
                draw_rectangle_filled(ex,ey,30,80,self.fc)
                draw_rectangle_filled(fx,fy,50,100,self.fc)
                draw_rectangle_filled(gx,gy,30,80,self.fc)
            else:
                draw_rectangle_filled(ix,iy,30,60,self.fc)
                draw_rectangle_filled(jx,jy,50,80,self.fc)
                draw_rectangle_filled(kx,ky,30,60,self.fc)
        if self.cn%3==0 and self.cn!=0:
            mx,my=ax,ay-200
            draw_circle_filled(mx,my,100,color.BLUE)
            R=200
            sx,sy=mx+R*math.sin(math.radians(self.an)),my+R*math.cos(math.radians(self.an))
            
            draw_rectangle_filled(sx,sy,50,25,color.BLUE,180-self.an)
            draw_rectangle_filled(sx,sy,25,75,color.WHITE,180-self.an)
            if self.cn==6:
                draw_rectangle_filled(sx,sy,10,85,color.COBALT,180-self.an)
                draw_rectangle_filled(sx,sy,25,75,color.WHITE,180-self.an)
                draw_line(sx,sy,mx,my,color.GREEN,5)

    def cf(self,time):
        self.ff=not self.ff
# 设置窗体标题
SCREEN_TITLE = "my rocket"
class MyRocket(Window):
    def __init__(self, width, height, title):
        super().__init__(width, height, title)
        # 窗体初始化
        self.setup()

    def setup(self):
        set_background_color(color.SILVER)
        self.r=R()
        total_time=0
        last_time=0
        schedule(self.r.cf,0.3)
    def on_draw(self):
        start_render()
        self.r.dr()
    def on_update(self,delta_time):
        self.r.an+=1
    def on_mouse_release(self,x,y,button,modifiers):
        if button==MOUSE_BUTTON_LEFT:
            self.r.cn+=1

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

 

【提示】

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

https://python.codemao.cn


回复

上一页1 页 / 共 0下一页