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

【作品介绍】
官方大大给多点分(重发)
【作品源代码】
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