猫史档案馆


【Python作品分享】【去太空,趣编程】【36强进10】

用户:Eason席Eason席查看:0 回复:0 评论:0 创建时间:2021-05-23T23:01:41


【作品展示】

center_image

 

【作品介绍】

用turtle制作的作品

按下‘space’(空格)加速火箭一会

祝中国的航天事业更加辉煌

(此版本是删了一个BUG的版本,是最终的版本)

 

【作品源代码】

import turtle
from random import random, randint
import time

ms = turtle.Screen()
ms.listen()


w, h = 800, 600
ms.setup(w, h)
ms.title('给航天人的一张《明信片》')
ms.bgcolor("darkblue")
ms.delay(0)

cl=['yellow','white','gold','lightyellow','lemonchiffon']

t = turtle.Pen(visible=False, shape='circle')
stco = cl[randint(0, 4)]
t.pencolor(stco)
t.fillcolor(stco)
t.penup()
t.setheading(-10)
t.goto(w/2, randint(-h/2, h/2))

t1 = turtle.Pen(visible=False)


def one(b):
    
    t1.pencolor('black')
    t1.fillcolor('white')
    t1.begin_fill()
    for i in range(2):
        t1.forward(b)
        t1.left(120)
    t1.forward(b)
    t1.end_fill()
    t1.left(30)
    t1.begin_fill()
    t1.forward(b*4)
    t1.left(90)
    t1.forward(b)
    t1.left(90)
    t1.forward(b*4)
    t1.end_fill()
    t1.backward(b)
    t1.right(90)
    t1.left(180)


def rocket(size):
    t1.pendown()
    t1.seth(-90)
    t1.pencolor('black')
    one(size)
    t1.seth(-180)
    t1.forward(size)
    t1.seth(-90)
    one(size/2)
    t1.seth(-90)
    t1.backward(size*2)
    t1.seth(-0)
    t1.forward(size*0.5)
    t1.left(90)
    t1.seth(-90)
    one(size/2)
    t1.seth(-270)
    t1.forward(size*0.5)
    t1.penup()
stars = []

for i in range(75):
    star = t.clone()
    stco = cl[randint(0, 4)]
    star.pencolor(stco)
    star.fillcolor(stco)
    s = random()/3
    star.shapesize(s, s)
    star.speed(int(s*10))
    star.setx(w/2 + randint(1, w))
    star.sety(randint(-h/2, h/2))
    star.showturtle()
    stars.append(star)

t2=turtle.Pen(visible=False)


def fire():
    turtle.tracer(False)
    cl1 = ['black', 'orange', 'red']
    cl2 = ['yellow', 'orange', 'red']
    sz1 = [10, 6, 3]
    for i in range(3):
        t2.pencolor(cl1[i])
        t2.fillcolor(cl2[i])
        t2.begin_fill()
        t2.goto(-100, -12)
        t2.seth(-90)
        t2.fd(sz1[i])
        t2.right(104.5)
        t2.fd(sz1[i]*4)
        t2.right(151)
        t2.fd(sz1[i]*4)
        t2.right(104.5)
        t2.fd(sz1[i])
        t2.end_fill()


def fire1():
    turtle.tracer(False)
    cl1 = ['black', 'orange', 'red']
    cl2 = ['yellow', 'orange', 'red']
    sz1 = [5, 3, 1.5]
    for i in range(3):
        t2.pencolor(cl1[i])
        t2.fillcolor(cl2[i])
        t2.begin_fill()
        t2.goto(-100, 7)
        t2.seth(-90)
        t2.fd(sz1[i])
        t2.right(104.5)
        t2.fd(sz1[i]*4)
        t2.right(151)
        t2.fd(sz1[i]*4)
        t2.right(104.5)
        t2.fd(sz1[i])
        t2.end_fill()


def fire2():
    turtle.tracer(False)
    cl1 = ['black', 'orange', 'red']
    cl2 = ['yellow', 'orange', 'red']
    sz1 = [5, 3, 1.5]
    for i in range(3):
        t2.pencolor(cl1[i])
        t2.fillcolor(cl2[i])
        t2.begin_fill()
        t2.goto(-100, -30)
        t2.seth(-90)
        t2.fd(sz1[i])
        t2.right(104.5)
        t2.fd(sz1[i]*4)
        t2.right(151)
        t2.fd(sz1[i]*4)
        t2.right(104.5)
        t2.fd(sz1[i])
        t2.end_fill()
key=0
times=0
def press():
    global key
    global times
    key=1
    times=time.time()
ms.onkey(press,'space')
s=0
newt=0
m1=turtle.Pen(visible=False)
m2=turtle.Pen(visible=False)
m1.pencolor('white')
m2.pencolor('white')
m1.penup()
m2.penup()
m1.goto(0,230)
m2.goto(0,200)

numm=1
num=1
while True:
    turtle.tracer(False)
    t2.goto(-10,-22)
    t2.pencolor('red')
    t2.write('CASC', align='right', font=('楷体', 15))
    if num == 1:
        m1.write('1970年4月24日', align="center", font=("楷体", 20, ))
        m2.write('中国第1颗人造地球卫星东方红一号发射成功',align='center',font=('楷体',20))
        if numm == 1:
            tim = time.time()
            numm = numm+1
        if time.time()-tim >= 3:
            num = num+1
            m1.clear()
            m2.clear()
    elif num == 2:
        m1.write('拉开了中国人探索宇宙奥秘、和平利用太空、造福人类都序幕',align="center", font=("楷体", 20, ))
        m2.write('经过几代航天人的不懈努力', align='center', font=('楷体', 20))
        if numm == 2:
            tim = time.time()
            numm = numm+1
        if time.time()-tim >= 3:
            num = num+1
            m1.clear()
            m2.clear()
    elif num == 3:
        m1.write('2003年10月15日', align="center", font=("楷体", 20, ))
        m2.write('航天员杨利伟乘“神舟五号”飞船首次进入太空', align='center', font=('楷体', 20))
        if numm == 3:
            tim = time.time()
            numm = numm+1
        if time.time()-tim >= 3:
            num = num+1
            m1.clear()
            m2.clear()
    elif num == 4:
        m1.write('实现了中华民族的千年飞天梦', align="center", font=("楷体", 20, ))
        m2.write('此后,手持红旗漫步太空的翟志刚', align='center', font=('楷体', 20))
        if numm ==4:
            tim = time.time()
            numm = numm+1
        if time.time()-tim >= 3:
            num = num+1
            m1.clear()
            m2.clear()
    elif num == 5:
        m1.write('巾帼不让须眉的刘洋', align="center", font=("楷体", 20, ))
        m2.write('三次出征太空的景海鹏', align='center', font=('楷体', 20))
        if numm == 5:
            tim = time.time()
            numm = numm+1
        if time.time()-tim >= 3:
            num = num+1
            m1.clear()
            m2.clear()
    elif num == 6:
        m1.write('让太空有了越来越多的中国身影', align="center", font=("楷体", 20, ))
        m2.write('面对星辰大海', align='center', font=('楷体', 20))
        if numm == 6:
            tim = time.time()
            numm = numm+1
        if time.time()-tim >= 3:
            num = num+1
            m1.clear()
            m2.clear()
    elif num == 7:
        m1.write('中国人永不停步', align="center", font=("楷体", 20, ))
        m2.write('————《人民日报》', align='center', font=('楷体', 20))
        if numm == 7:
            tim = time.time()
            numm = numm+1
        if time.time()-tim >= 3:
            num = num+1
            m1.clear()
            m2.clear()
    else:    
        m2.pencolor('red')
        m1.pencolor('red')
        m2.goto(0,150)
        m1.goto(0,200)
        m2.write('祝中国的航天事业更加辉煌!',align='center',font=('楷体',45))
        m1.write('向中国航天员致敬!', align='center', font=('楷体', 45))
        time.sleep(1)
        turtle.done()
    if key == 1:
        fire()
        fire1()
        fire2()
        newt=time.time()-times
        if newt >= 2.0:
            key=0
            t2.clear()
    t1.clear()
    t1.goto(0,0)
    t1.seth(-90)
    rocket(25)
    turtle.tracer(True)
    for star in stars:
        if key==1:
            star.setx(star.xcor() - 15 * star.speed())
        else:
            star.setx(star.xcor() - 3 * star.speed())
        if star.xcor() < -w/2:
            stco = cl[randint(0, 4)]
            star.pencolor(stco)
            star.fillcolor(stco)
            star.hideturtle()
            star.setx(w/2 + randint(1, w))
            star.sety(randint(-h/2, h/2))
            star.showturtle()
#————————————————————————————————————#

 

【提示】

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

https://python.codemao.cn


回复

上一页1 页 / 共 0下一页