北斗七星图
效果圖:
操作方法
在主模塊中運行程序,Settings模塊中是對程序的設置
代碼
import turtle as t from time import sleep from Settings import * from random import randint, choice# 畫出問題,然后重置窗口,準備畫星星 def draw_question():t.bgcolor('black')t.color('white')go(-200, 0)t.setup(s.canvas_weight, s.canvas_height)question = s.questiont.write(question, True, font=('Arial', s.font_size, 'normal'))sleep(s.pause)t.reset()# 移動筆尖 def go(x, y):t.penup()t.goto(x, y)t.pendown()# 畫星星,包括其他星,和北斗星,畫星星和連線有時間延遲和筆速。 def draw_star():# 返回隨機得到其他星的列表,大小隨機def star_pos():positions = list()for _ in range(s.star_num):x_half = s.canvas_weight // 2x = randint(-x_half, x_half)y_half = s.canvas_height // 2y = randint(-y_half, y_half)pos = x, ypositions.append(pos)return positions# 返回北斗七星的坐標def dipper_map():position = [(-330, 150), (-210, 120), (-130, 70), (0, 0), (-10, -120), (160, -190), (240, -70)]return position# 畫其他星和北斗星。若是其他星則將turn_size設為True,可改變其大小。若是北斗七星,則固定其大小def draw(pos_list, star_color, change_size):for pos in pos_list:go(pos[0], pos[1])if change_size:star_size = choice(s.star_sizes)t.dot(star_size, star_color)else:t.dot(10, star_color)# 將北斗七星連線def link_map(map_pos_list):t.pendown()t.color('gold')t.pensize(s.pen_size)go(map_pos_list[0][0], map_pos_list[0][1])for pos in map_pos_list:sleep(s.star_to_star)t.goto(pos[0], pos[1])t.bgcolor('black')t.hideturtle()t.penup()t.tracer(False)little_pos = star_pos()map_pos = dipper_map()draw(little_pos, 'white', True) # 畫其他星星draw(map_pos, 'gold', False) # 畫北斗星t.tracer(True) # 必須打開動畫,才可以畫線sleep(3)t.speed(s.draw_speed)link_map(map_pos)sleep(s.pause) # 停頓后,進行第三部分t.reset()def draw_answer():t.bgcolor('black')t.hideturtle()t.color('white')answer = s.answert.write(answer, font=('Arial', s.font_size, 'normal'))def main():t.hideturtle()draw_question() # 第一部分問問題draw_star() # 第二部分畫星星draw_answer() # 第三部分回答問題if __name__ == '__main__':s = Settings()main()t.done() class Settings:def __init__(self):# 第一部分,用于設置問題self.canvas_weight = 800self.canvas_height = 600self.question = '如果有人問你:你咋不上天? \n你就回...'self.font_size = 20self.pause = 5 # 用于設置三部分之間的停頓時間。# 第二部分,用于設置星星self.star_num = 600self.star_sizes = [2, 3, 4, 5]self.draw_speed = 1self.pen_size = 3self.star_to_star = 1# 第三部分,用于設置回答問題(部分的設置用到第一部分)self.answer = '我上過宇宙 O_O'總結
- 上一篇: 中国工程院院士高文:从大数据科学到人工智
- 下一篇: 使用python Basemap测站分布