猫史档案馆


【Python作品分享】【去太空,趣编程】模拟太阳系运行【作品秀】

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


【作品展示】

center_image

 

【作品介绍】

模拟太阳系运行,使用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


回复

上一页1 页 / 共 1下一页
七晨风七晨风

emotion_编程猫_点赞

点赞1


评论