猫史档案馆


【Python作品分享】【36强进10】长征一号【作品秀】【作品秀】

用户:......6666....无法显示......6666....无法显示查看:0 回复:2 评论:0 创建时间:2021-05-23T21:20:28


【作品展示】

center_image

 

【作品介绍】

官方大大给多点分(重发)

 

【作品源代码】

import turtle as t
from time import sleep
from random import randint,choice
import pygame,easygui
def drawrect(colour, x, y, L, W, full):
    t.pencolor(colour)
    t.penup()
    t.goto(x, y)
    t.pendown()
    if full == "on":
        t.begin_fill()
    for i in range(0, 2):
        t.forward(L)
        t.left(90)
        t.forward(W)
        t.left(90)
    t.penup()
    t.end_fill()
def star(colour, x, y, LONG, full):
    t.pencolor(colour)
    t.penup()
    t.goto(x, y)
    t.pendown()
    if full == "on":
        t.begin_fill()
    for _ in range(5):
        t.forward(LONG)
        t.right(144)
    t.penup()
    t.end_fill()
def write(x, y, word, size):
    t.penup()
    t.goto(x, y)
    t.pendown()
    t.write(word, False, 'center', font=('arial', size))
    t.penup()
def dot(colour, x, y, r):
    t.pencolor(colour)
    t.penup()
    t.goto(x, y)
    t.pendown()
    t.dot(r)
    t.penup()
def rocket(y):
    t.fillcolor("white")
    t.setheading(0)
    t.pensize(5)
    drawrect("black", 0, y+-300, 100, 400, "on")
    t.goto(0, y+100)
    t.setheading(45)
    t.fillcolor("black")
    t.begin_fill()
    t.pendown()
    t.forward(45)
    t.right(45)
    t.forward(40)
    t.right(45)
    t.forward(45)
    t.end_fill()
    t.fillcolor("white")
    t.setheading(0)
    drawrect("black", 30, y+130, 40, 100, "on")
    t.goto(30, y+230)
    t.setheading(45)
    t.begin_fill()
    t.pendown()
    t.forward(30)
    t.right(90)
    t.forward(30)
    t.end_fill()
    t.setheading(0)
    t.fillcolor("red")
    drawrect("black", 35, y+180, 30, 20, "on")
    t.pensize(1)
    t.fillcolor("yellow")
    star("yellow", 40, y+195, 6, "on")
    star("yellow", 50, y+197, 2, "on")
    star("yellow", 52, y+194, 2, "on")
    star("yellow", 52, y+190, 2, "on")
    star("yellow", 50, y+187, 2, "on")
    t.goto(0,y+-250)
    t.pensize(5)
    t.pendown()
    t.fillcolor("white")
    t.pencolor("black")
    t.begin_fill()
    t.setheading(-135)
    t.forward(25)
    t.setheading(-90)
    t.forward(75)
    t.setheading(45)
    t.forward(25)
    t.setheading(90)
    t.forward(75)
    t.end_fill()
    t.penup()
    t.goto(100,y+-250)
    t.pendown()
    t.begin_fill()
    t.setheading(-45)
    t.forward(25)
    t.setheading(-90)
    t.forward(75)
    t.setheading(135)
    t.forward(25)
    t.setheading(90)
    t.forward(75)
    t.end_fill()
    write(50,y+0,"C",50)
    write(50,y+-100,"Z",50)
    write(50,y+-200,"|",50)
    write(50,y+-300,"1",50)
def frame():
    t.setheading(0)
    t.pensize(20)
    drawrect("gray", -200, -400, 100, 690, "off")
    t.goto(-200, -400)
    t.setheading(45)
    t.pendown()
    for i in range(0, 4):
        t.forward(120)
        t.left(90)
        t.forward(120)
        t.right(90)
def pygamewrite(text,wordsize,colour,bgcolour,screen,x,y):
    font = pygame.font.SysFont('SimHei',wordsize)
    text = font.render(text, True, colour, bgcolour)
    screen.blit(text, [x, y])
    pygame.display.flip()
def rocket2():
    t.pensize(5)
    t.pencolor("black")
    t.fillcolor("red")
    t.penup()
    t.setheading(0)
    t.goto(-50, -100)
    t.pendown()
    t.begin_fill()
    for i in range(0, 3):
        t.forward(100)
        t.left(120)
    t.end_fill()
    t.fillcolor("white")
    drawrect("black", -50, -300, 100, 200, "on")
    t.goto(-50, -250)
    t.setheading(-135)
    t.pendown()
    t.begin_fill()
    t.forward(40)
    t.setheading(-90)
    t.forward(100)
    t.setheading(-135)
    t.backward(40)
    t.setheading(90)
    t.forward(70)
    t.end_fill()
    t.penup()
    t.goto(50, -250)
    t.setheading(-45)
    t.pendown()
    t.begin_fill()
    t.forward(40)
    t.setheading(-90)
    t.forward(100)
    t.setheading(-45)
    t.backward(40)
    t.setheading(90)
    t.forward(70)
    t.end_fill()
    t.fillcolor("yellow")
    t.penup()
    t.goto(-50, -300)
    t.setheading(-60)
    t.begin_fill()
    t.pendown()
    t.forward(100)
    t.left(120)
    t.forward(100)
    t.end_fill()
    dot("blue", 0, -200, 70)
def meteorolite(x,y):
    t.pensize(5)
    t.setheading(0)
    t.penup()
    t.goto(x, y)
    t.pendown()
    t.pencolor("black")
    t.fillcolor("gray")
    t.begin_fill()
    for j in range(0, 8):
        t.forward(30)
        t.left(50)
    t.end_fill()
def drawcircle():
    for j in range(0,len(question)):
        if result[j] == "right":
            dot("green", j*20, 300, 20)
        elif result[j] == "wrong":
            dot("red", j*20, 300, 20)
        elif result[j] == "answer":
            dot("yellow3", j*20, 300, 20)
        else:
            dot("white", j*20, 300, 20)
class Everstar():
    def __init__(self,x,colour,L,speed):
        self.x=x
        self.y=400
        self.colour=colour
        self.L=L
        self.speed=speed
    def move(self):
        self.y-=self.speed
def drawstar():
    for onestar in stars:
        if onestar.y <= -400:
            stars.remove(onestar)
            continue
        onestar.move()
        t.fillcolor(onestar.colour)
        t.pensize(1)
        star(onestar.colour,onestar.x,onestar.y,onestar.L,"on")
    if randint(1,4) == 2:
        mystar = Everstar(choice([randint(-300,-150),randint(150,300)]),choice(["yellow","red","blue","orange"]),randint(10,20),randint(10,50))
        stars.append(mystar)
def write_result(text,size):
    for i in range(20, 50, 1):
        t.clear()
        drawstar()
        rocket2()
        t.pencolor("black")
        write(0, 0, "恭喜你,对了"+text+"道题", size)
        drawcircle()
        t.update()
def first():
    frame()
    rocket(0)
    write(0,300, "点击按钮发射",50)
    pushbutton = pygame.display.set_mode([500,500])
    pushbutton.fill([128,128,128])
    pygame.draw.circle(pushbutton,[255,0,0],[250,250],100,0)
    pygame.display.flip()
    running = True
    while running:
        for event in pygame.event.get():
            if event.type == pygame.MOUSEBUTTONDOWN:
                running = False
    pygame.draw.circle(pushbutton,[200,0,0],[250,250],100,0)
    pygame.display.flip()
    sleep(0.5)
    pygame.draw.circle(pushbutton,[255,0,0],[250,250],100,0)
    pygame.display.flip()
    sleep(0.5)
    pygame.quit()
    t.tracer(False)
    for i in range(0,1000,10):
        t.clear()
        for j in range(0,i,40):
            dot("gray",50,j-350,50)
        frame()
        rocket(i)
        t.update()
def second():
    t.pensize(1)
    t.bgcolor("slategray")
    for i in range(0, 30):
        star("yellow", randint(-300, 300), randint(-300, 300), randint(2, 10), "on")
    dot("yellow", -300, -300, 200)
    dot("gold", -300, -300, 150)
    dot("red3", -300, -300, 100)
    dot("gray", 300, -300, 50)
    dot("orange", 230, 0, 100)
    t.goto(-300, 300)
    t.setheading(-45)
    t.pendown()
    t.penup()
    t.goto(300, 400)
    t.pendown()
    t.setheading(-45)
    for i in range(1, 10):
        t.pensize(i)
        t.forward(10)
    rocket(0)
    t.update()
    sleep(5)
    t.setheading(0)
    easygui.msgbox("长征一号(代号:CZ-1)是20世纪70年代初期中国研制的一型三级运载火箭,为发射喵颗人造地球卫星东方红而立项研制。"," ","下一步")
    easygui.msgbox("长征一号由结构系统、推进系统、制导和控制系统、跟踪遥测系统、自毁系统和电源配电系统等部分组成。"," ","下一步")
    easygui.msgbox("长征一号总体布局分为三级,采取串联布局,从箭尾至箭顶依次为一子级、二子级和整流罩(内含三子级)。"," ","下一步")
    easygui.msgbox("一子级为圆柱壳,从上至下分别为级间段、杆系、氧化剂贮箱、箱间段、燃料贮箱和尾段。"," ","下一步")
    easygui.msgbox("二子级为“锥-柱”壳,上部是锥形仪器舱,舱内安装有一、二级动力段和滑行段控制、测量及安全自毁设备。"," ","下一步")
    easygui.msgbox("三子级主体为固体火箭发动机。其上部是仪器架,架中央的喵用来固定、支持有效载荷(卫星)。"," ","下一步")
    easygui.msgbox("长征一号全长29.86米, 翼展3.810米, 起飞质量81570千克, 起飞推力1020千牛, 起飞推重比1.275,运载能力300千克"," ","下一步")
    easygui.msgbox("在1970年4月24日21点35分44秒发射。"," ","开始答题")
def third():
    global right
    pygame.init()
    pygame.font.init()
    t.tracer(False)
    running = True
    mousescreen = pygame.display.set_mode([300,100])
    pygamewrite("按下开始",30,[255,255,255],[0,0,0],mousescreen,100,50)
    while running:
        for event in pygame.event.get():
            if event.type == pygame.MOUSEBUTTONDOWN:
                running = False
        t.clear()
        drawstar()
        rocket2()
        t.pencolor("white")
        write(0, 200, "飞船在小行星带遇到了危险,帮它选择正确道路吧。", 30)
        t.update()
    pygame.quit() 
    mystar = Everstar(choice([randint(-300,-150),randint(150,300)]),choice(["yellow","red"]),randint(1,5),randint(10,50))
    stars.append(mystar)
    for i in range(0, len(answer)):
        t.clear()
        t.bgcolor("slategray")
        result[i] = "answer"
        rocket2()
        drawcircle()
        t.pencolor("white")
        write(0, 200, question[i], 30)
        write(0, 150, "A."+answerA[i], 20)
        write(0, 100, "B."+answerB[i], 20)
        write(0, 50, "C."+answerC[i], 20)
        write(0, 0, "D."+answerD[i], 20)
        t.tracer(True)
        myanswer.append(t.textinput("请输入答案:", "注意:要大写"))
        if myanswer[i] == answer[i]:
            t.tracer(False)
            result[i] = "right"
            right += 1
            meteorolite_x= choice([randint(200,300),randint(-300,-200)])
            for y in range(400,-400, -5):
                t.clear()
                drawstar()
                rocket2()
                meteorolite(meteorolite_x,y)
                t.update()
        else:
            t.tracer(False)
            result[i] = "wrong"
            for y in range(400,0,-5):
                t.clear()
                drawstar()
                rocket2()
                meteorolite(0,y)
                t.update()
            t.clear()
            t.bgcolor("orange")
            write(0, 0, "轰!!!", 20)
            t.update()
            sleep(2)
            t.clear()
            t.bgcolor("slategray")
            write(0, 0, "正确答案为"+answer[i], 20)
            rocket2()
            t.update()
            sleep(2)
    t.clear()
    t.tracer(False)
    t.bgcolor("slategray")
    drawcircle()
    rocket2()
    t.update()
    sleep(2)
    screen = pygame.display.set_mode([300,100])
    pygame.font.init()
    pygamewrite("按下返回",30,[255,255,255],[0,0,0],screen,100,50)
    running = True
    while running:
        for i in range(20, 50,1):
            t.clear()
            drawstar()                
            rocket2()
            t.pencolor("black")
            write(0, 0, "恭喜你,对了"+str(right)+"道题", i)
            drawcircle()
            t.update()   
        for i in range(50, 20, -1):
            t.clear()
            drawstar()
            rocket2()
            t.pencolor("black")
            write(0, 0, "恭喜你,对了"+str(right)+"道题", i)
            drawcircle()
            t.update()
        for event in pygame.event.get():
            if event.type == pygame.MOUSEBUTTONDOWN:
                running = False
pygame.init()
pygame.font.init()
pygame.mixer.init()
startscreen = pygame.display.set_mode([400, 400])
startscreen.fi喵])
MXP = pygame.image.load("长征一号图片.jpg")
MXP = pygame.transform.scale(MXP, (500, 500)) 
pygame.display.flip()
question = ["长征一号代号是什么?", "长征一号是什么种类的火箭?", "长征一号是用来发射什么卫星而研制的?","长征一号总体布局分为几级?", "长征一号全长多少米?", "长征一号三子级是什么?","长征一号在那时候发射?","长征一号运载能力是多少?"]
answerA = ["CHANGZHENG-1", "运载火箭", "斯普特尼克一号", "一级", "86.29米", "固体火箭发动机","1975年11月26日","300千克"]
answerB = ["changzheng-1", "火箭武器", "东方红一号", "二级", "3.810米", "液体火箭发动机","1970年4月4日","200千克"]
answerC = ["CZ-1", "导弹", "北斗一号", "三级", "28,86米", "行星发动机","1970年4月24日","3000千克"]
answerD = ["ch-1", "我不知道", "月球", "四级", "29.86米", "V行发动机","1970年4月5日","2000千克"]
answer = ["C", "A", "B", "C", "D", "A","C","A"]
myanswer = []
result = [" "]*len(question)
stars = []
right = 0
sleep(2)
thetext = ["给", "中", "国", "航", "天","的","明","信","片"]
for i in range(0,9):
    pygamewrite(thetext[i],30,[0,0,0],[255,255,255],startscreen,i*40,30)
    sleep(0.5)
pygamewrite("(按下任意键开始)",30,[0,0, 0], [255,255,255],startscreen,50,100)
running = True
next_x = -500
while running:
    next_x += 1 
    pygamewrite("......666....无法显示 出品",25,[0,0, 0], [255,255,255],startscreen,next_x,300)
    if next_x == 0:
        sleep(1)
    if next_x > 500:
        next_x = -500
    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN:
            running = False
pygame.quit()
screen = pygame.display.set_mode([500,500])
pygame.init()
running = True
screen.blit(MXP,[0,0])
pygame.display.flip()
grade = 1
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        elif event.type == pygame.MOUSEBUTTONDOWN:
            if 210 > event.pos[0] > 175 and 440 > event.pos[1] > 200:
                pygame.quit()
                t.screensize(800,800, "skyblue")
                t.tracer(True)
                t.speed(10)
                t.penup()
                t.hideturtle()
                t.clear()
                first()
                if grade == 1:
                    t.clear()
                    write(0,0, "恭喜你,解锁了第二阶段(知识)",20)
                    grade = 2
                    sleep(2)
                screen = pygame.display.set_mode([500,500])
                screen.blit(MXP,[0,0])
                pygame.display.flip()
                pygame.init()
            elif 160 > event.pos[0] > 70 and 440 > event.pos[1] > 160:
                pygame.quit()
                t.tracer(False)
                t.clear()
                if grade >= 2:
                    second()
                    if grade == 2:
                        t.clear()
                        write(0,0, "恭喜你,解锁了第三阶段(问答)",20)
                        grade = 3
                        sleep(2)
                else:
                    write(0,0,"你还没解锁哦!",50)
                    sleep(2)
                screen = pygame.display.set_mode([500,500])
                screen.blit(MXP,[0,0])
                pygame.display.flip()
                pygame.init()
            elif 425 > event.pos[0] > 250 and 440 > event.pos[1] > 40:
                pygame.quit()
                t.tracer(False)
                t.clear()
                if grade == 3:
                    third()
                    t.clear()
                    write(0,0, "恭喜你,完成了所有内容",20)
                    print("向中国航天人致敬!")
                    sleep(2)
                else:
                    write(0,0,"你还没解锁哦!",50)
                    sleep(2)
                screen = pygame.display.set_mode([500,500])
                screen.blit(MXP,[0,0])
                pygame.display.flip()
                pygame.init()

 

【提示】

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

https://python.codemao.cn


回复

上一页1 页 / 共 1下一页
......6666....无法显示......6666....无法显示

center_imagez

点赞0


评论


......6666....无法显示......6666....无法显示

名字 :长征一号图片

点赞0


评论