用户:会跳绳的霸王龙查看:0 回复:1 评论:0 创建时间:2021-05-03T21:14:49
【作品展示】

【作品介绍】
模拟太阳系运行,使用turtle,介绍在代码里
【作品源代码】
'''
本作品模拟太阳系运行,使用turtle制作
太阳系是椭圆形的,而不是正圆,我通过修改屏幕坐标系实现了这点
注意: 程序运行中不能退出,否则会报错!
程序运行完毕会自动关闭
作者: 会跳绳的霸王龙
'''
import turtle as t
import random
import time
# 设置窗体宽、高和标题
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 800
SCREEN_TITLE = "模拟太阳系运行"
# 窗体中心
CENTER_X = SCREEN_WIDTH // 2
CENTER_Y = SCREEN_HEIGHT // 2
# 初始化
screen = t.Screen()
screen.setworldcoordinates(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)
screen.title(SCREEN_TITLE)
screen.setup(width=SCREEN_WIDTH + 700, height=SCREEN_HEIGHT, startx=0,starty=0)
t.bgcolor("midnightblue")
# 设置太阳星环画笔
pen = t.Pen()
pen.speed(0)
# 设置八大行星画笔
waterpen = t.Pen() # 水星
waterpen.speed(0)
goldpen = t.Pen() # 金星
goldpen.speed(0)
earthpen = t.Pen() # 地球
earthpen.speed(0)
hotpen = t.Pen() # 火星
hotpen.speed(0)
woodpen = t.Pen() # 木星
woodpen.speed(0)
soilpen = t.Pen() # 土星
soilpen.speed(0)
skykingpen = t.Pen() # 天王星
skykingpen.speed(0)
seakingpen = t.Pen() # 海王星
seakingpen.speed(0)
pen.up()
pen.hideturtle()
pen.goto(CENTER_X, CENTER_Y)
pen.down()
waterpen.hideturtle()
goldpen.hideturtle()
earthpen.hideturtle()
hotpen.hideturtle()
woodpen.hideturtle()
soilpen.hideturtle()
skykingpen.hideturtle()
seakingpen.hideturtle()
t.delay(0)
# 输入重复次数
alpha = t.numinput('输入运行的次数', '请输入重复的次数')
alpha = int(alpha)
# 太阳和星环
pen.color("red")
pen.dot(100)
pen.color("white")
pen.write("太阳",font = ("微软雅黑",18,"normal"))
pen.color("silver")
last_num = 100
def star_ring(forward_num, circle_num):
global last_num
pen.up()
pen.right(90)
pen.forward(forward_num)
pen.left(90)
pen.down()
pen.circle(last_num + circle_num)
last_num = last_num + circle_num
star_ring(100, 0)
star_list = [50,40,55,80,100,120,150]
for i in range(7):
star_ring(star_list[i], star_list[i])
# 小星星
def little_star():
for i in range(360):
pen.up()
pen.goto(random.randint(-700,800),random.randint(0,800))
pen.color("lightyellow")
pen.dot(2)
# 八大行星
def move_water():
waterpen.up()
waterpen.right(1*10)
waterpen.goto(CENTER_X, CENTER_Y)
waterpen.color("gray")
waterpen.forward(100)
waterpen.down()
waterpen.dot(10)
waterpen.color("#ffffff")
waterpen.write("水星",font = ("微软雅黑",8,"normal"))
def move_gold():
goldpen.up()
goldpen.right(88/224*10)
goldpen.goto(CENTER_X, CENTER_Y)
goldpen.color("gold")
goldpen.forward(50+100)
goldpen.down()
goldpen.dot(15)
goldpen.color("#ffffff")
goldpen.write("金星",font = ("微软雅黑",8,"normal"))
def move_earth():
earthpen.up()
earthpen.right(88/365*10)
earthpen.goto(CENTER_X, CENTER_Y)
earthpen.color("skyblue")
earthpen.forward(50+40+100)
earthpen.down()
earthpen.dot(15*1.1)
earthpen.color("#ffffff")
earthpen.write("地球",font = ("微软雅黑",8,"normal"))
def move_hot():
hotpen.up()
hotpen.right(88/687*10)
hotpen.goto(CENTER_X, CENTER_Y)
hotpen.color("orange")
hotpen.forward(50+40+55+100)
hotpen.down()
hotpen.dot(15*1.1/1.5)
hotpen.color("#ffffff")
hotpen.write("火星",font = ("微软雅黑",8,"normal"))
def move_wood():
woodpen.up()
woodpen.right(88/(11.862*365)*10)
woodpen.goto(CENTER_X, CENTER_Y)
woodpen.color("goldenrod")
woodpen.forward(50+40+55+80+100)
woodpen.down()
woodpen.dot(15*1.1*4.5)
woodpen.color("#ffffff")
woodpen.write("木星",font = ("微软雅黑",18,"normal"))
def move_soil():
soilpen.up()
soilpen.right(88/(29.4571*365)*10)
soilpen.goto(CENTER_X, CENTER_Y)
soilpen.color("tan")
soilpen.forward(50+40+55+80+100+100)
soilpen.down()
soilpen.dot(15*4.5)
soilpen.right(90)
soilpen.forward(20)
soilpen.left(90+45)
soilpen.forward(60)
for i in range(2):
soilpen.circle(15,180)
soilpen.forward(100)
soilpen.right(45)
soilpen.up()
soilpen.goto(CENTER_X,CENTER_Y)
soilpen.forward(50+40+55+80+100+100)
soilpen.down()
soilpen.color("#ffffff")
soilpen.write("土星",font = ("微软雅黑",18,"normal"))
def move_skyking():
skykingpen.up()
skykingpen.right(88/(84.0205*365)*10)
skykingpen.goto(CENTER_X, CENTER_Y)
skykingpen.color("lightsteelblue")
skykingpen.forward(50+40+55+80+100+120+100)
skykingpen.down()
skykingpen.dot(15*1.1*2)
skykingpen.forward(5)
skykingpen.left(90)
skykingpen.forward(30)
for i in range(2):
skykingpen.circle(5,180)
skykingpen.forward(60)
skykingpen.right(90)
skykingpen.up()
skykingpen.goto(CENTER_X,CENTER_Y)
skykingpen.forward(50+40+55+80+100+120+100)
skykingpen.down()
skykingpen.color("#ffffff")
skykingpen.write("天王星",font = ("微软雅黑",10,"normal"))
def move_seaking():
seakingpen.up()
seakingpen.right(88/(1喵.8*365)*10)
seakingpen.goto(CENTER_X, CENTER_Y)
seakingpen.color("blue")
seakingpen.forward(50+40+55+80+100+120+150+100)
seakingpen.down()
seakingpen.dot(15*1.1*1.75)
seakingpen.color("#ffffff")
seakingpen.write("海王星",font = ("微软雅黑",10,"normal"))
little_star()
for i in range(alpha):
move_water()
move_gold()
move_earth()
move_hot()
move_wood()
move_soil()
move_skyking()
move_seaking()
time.sleep(0.5)
waterpen.clear()
goldpen.clear()
earthpen.clear()
hotpen.clear()
woodpen.clear()
soilpen.clear()
skykingpen.clear()
seakingpen.clear()
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn