你是否还记得昨夜星辰

海王星上全是大海吗?为什么土星竟然有62个月亮,而地球只有一个月亮?据说喜欢仰望天空的是充满好奇心的人….

"""本程序实现星空中闪烁烁的星星,然后有七颗星星会连起来,它们是北斗七星,还有启明星。"""
from star import *
from time import sleep

"定义全局变量"
stars_amounts = 49
width ,height = 800,600                                                             #屏幕宽高
beidou_cors = [(-276,110),(-125,135),(-38,88),(76,38),(100,-64),(284,-70),(314,52)] #北斗七星坐标表
beidou_names = ["瑶光","开阳","玉衡","天权","天玑","天旋","天枢"]                   #名称表
images_small = ["star1.gif","star2.gif"]                                            #星星的小造型images_small列表
images_big = ["big_star1.gif","big_star2.gif"]                                      #星星的大造型images_big列表

s1 = "北斗七星,是由天枢、天璇、天玑、天权、玉衡、开阳、瑶光七星组成的。"
s2 = "古代中国人民把这七星联系起来想象成为古代舀酒的斗形。"
s3 = "天枢、天璇、天玑、天权组成为斗身,古曰魁;玉衡、开阳、摇光组成为斗柄,古曰杓。"
s4 = "道教称北斗七星为七元解厄星君,居北斗七宫。以下是它们的名称:"
s5 = "天枢宫贪狼星君、天璇宫巨门星君、天玑宫禄存星君、天权宫文曲星君、"
s6 = "玉衡宫廉贞星君、开阳宫武曲星君、瑶光宫破军星君。"
knowledge = [s1,s2,s3,s4,s5,s6]                  # 放在列表中,方便遍历

"生成屏幕对象"
screen = Screen()
screen.title("昨夜星辰_作者:李兴球")
screen.setup(width,height)
screen.delay(0)                                  # 绘画延时为0
screen.bgpic("北斗定位坐标用.png")
screen.addshape("star1.gif")                     # 注册形状
screen.addshape("star2.gif")
screen.addshape("big_star1.gif")                 # 注册形状
screen.addshape("big_star2.gif")
screen.update()
sleep(1)

"海龟对象用来画五角星(代表北极星)和写字。"
t = Turtle(visible = False)                      # 新建不可见海龟对象,
t.penup()                                        # 抬笔
t.color("white","white")                         # 画笔颜色和填充颜色

t.goto(360,280)                                  # 定位
t.pendown()                                      # 落笔
t.begin_fill()                                   # 开始填充
for i in range(5):                               # 这里是画一个白色的五角星
    t.fd(20)
    t.rt(144)
t.end_fill()                                     # 结束填充
t.penup()                                        # 抬笔

"生成星星49颗"
stars = []                                       # 创建stars列表
for i in range(stars_amounts):                   # 重复stars_amounts次
    "Star参数为:图形列表,x坐标,y坐标"
    stars.append(Star(images_small,randint(-width/2,width/2),randint(0,height/2))) #新建Star,并添加到stars列表
    #sleep(randint(1,2)/4)

screen.delay(6)                                  # 绘画延时为6
"以下等待几秒钟,不直接用sleep(5)是防止窗口无响应"
for i in range(5):
    sleep(1)
    screen.update()

"定位前7颗星星到北斗七星的坐标位置"
for i in range(7):       
    star =  stars.pop()                           # 弹出一颗星星
    x,y = beidou_cors[i]                          # 取出x,y坐标
    star.goto(x,y)                                # 定位到此坐标
    star.images = images_big

"准备连线"        
t.pencolor("gray")                                # 画笔颜色为灰
t.pensize(2)                                      # 画笔迹宽为2
t.goto(beidou_cors[0])                            # 定位到北斗第一颗星的坐标
t.write(beidou_names[0],font=("黑体",14,"normal"))# 写第一颗星的名字
t.pendown()                                       # 落笔,准备画连线
for i in range(1,7):                              # 把其它六颗星连线
    t.goto(beidou_cors[i])
    t.write(beidou_names[i],font=("黑体",14,"normal"))
t.goto(beidou_cors[3])
screen.title("北 斗 七 星")

"剩下的都隐藏"
for i in range(stars_amounts-7):
    star = stars.pop()      # 弹出最后的
    star.ht()               # 隐藏

"以下是写字,包括标题和北斗七星的小知识。"
t.penup()
t.pencolor("yellow")
t.goto(0,200)
t.write("北 斗 七 星",align='center',font=("黑体",24,"bold"))
t.pencolor("cyan")
t.goto(-340,-160)
for s in knowledge:                             # 遍历“知识”列表
    t.write(s,font=("宋体",12,"normal"))
    t.sety(t.ycor() - 24)
    
    
screen.mainloop()

下面是star模块

You must log in to read the rest of this article. Please log in or register as a user.