用户:
耿直的笨笨鸭TUxR查看:0 回复:0 评论:0 创建时间:2021-05-13T00:10:58
【作品展示】

【作品介绍】
其实这就是一个绘画作品,只不过在上次的基础上加了人机交互——最后要你输入留言!希望大家多多支持!不过,我发这个作品并不是因为想拿奖,而是因为我要对祖国表示热爱!
【作品源代码】
# 导入所需的库
import turtle
import random
# 设置常量
WIDTH = 1000
HEIGHT = 600
TITLE = "航天航空"
BG_COLOR = "black"
STAR_NUM = random.randint(250, 300)
STAR_SIZE_LI喵, 10]
STAR_COLOR_LIST = ["yellow", "orange", "orange", "blue", "red", "green"]
I = 0
EARTH_SIZE = 200
EARTH_X = WIDTH // 6
EARTH_Y = HEIGHT // 6
EARTH_SEA_COLOR = "blue"
EARTH_LAND_COLOR = "green"
SUN_X = -WIDTH // 2
SUN_Y = HEIGHT // 2
SUN_SIZE = EARTH_SIZE * 3
SUN_COLOR = "yellow"
SATELLITE_X = WIDTH - 1200
SATELLITE_Y = HEIGHT - 600
SATELLITE_UNDER_WIDTH = 200
SATELLITE_UNDER_HEIGHT = 60
SATELLITE_ON_HEIGHT = 150
SATELLITE_ON_WIDTH = 60
SATELLITE_ON_COLOR = "red"
SATELLITE_UNDER_COLOR = "white"
PEOPLE_HEAD_X = WIDTH // 10
PEOPLE_HEAD_Y = HEIGHT - 700
PEOPLE_HEAD_UNDER_SIZE = 50
PEOPLE_HEAD_ON_SIZE = 45
PEOPLE_HEAD_UNDER_COLOR = "gray"
PEOPLE_HEAD_ON_COLOR = "black"
PEOPLE_BODY_X = PEOPLE_HEAD_X
PEOPLE_BODY_Y = PEOPLE_HEAD_Y - PEOPLE_HEAD_UNDER_SIZE + 25
PEOPLE_BODY_SIZE_WIDTH = WIDTH // 10
PEOPLE_BODY_SIZE_HEIGHT = HEIGHT // 8
PEOPLE_BODY_COLOR = PEOPLE_HEAD_UNDER_COLOR
PEOPLE_LEG_X = PEOPLE_HEAD_X - 50
PEOPLE_LEG_Y = PEOPLE_HEAD_Y - 80
PEOPLE_LEG_WIDTH = WIDTH // 10
PEOPLE_LEG_HEIGHT = HEIGHT // 25
PEOPLE_LEG_COLOR = PEOPLE_BODY_COLOR
MOON_X = EARTH_X + 200
MOON_Y = EARTH_Y
MOON_SIZE = 40
MOON_COLOR = "yellow"
GALAXY_X = 0
GALAXY_Y = 0
GALAXY_COLOR = "orange"
# 设置画笔、窗口工具
mypen = turtle.Pen()
myscreen = turtle.Screen()
mypen.hideturtle()
# 定义画画函数
# 窗体大小、标题
def screen_size(width, height, title):
myscreen.setup(width, height)
myscreen.title(title)
# 画天空
def draw_sky(bg_color):
mypen.speed(0)
myscreen.bgcolor(bg_color)
# 画星星(时间较长,请耐心等待)
def draw_stars(draw_pisition_x, draw_pisition_y, draw_size, draw_color):
mypen.penup()
mypen.goto(draw_pisition_x, draw_pisition_y)
mypen.pendown()
mypen.dot(draw_size, draw_color)
# 画地球(陆地不好看,只画了南美洲的轮廓)
def draw_earth(earth_size, earth_x, earth_y, earth_sea_color, earth_land_color):
mypen.penup()
mypen.goto(earth_x, earth_y)
mypen.pendown()
mypen.dot(earth_size, earth_sea_color)
mypen.fillcolor(earth_land_color)
mypen.begin_fill()
mypen.left(45)
mypen.forward(earth_size // 3)
mypen.right(75)
for i in range(6):
mypen.forward(earth_size // 5)
mypen.right(90)
mypen.left(90)
mypen.forward(earth_size // 3)
mypen.right(130)
mypen.forward(earth_size // 4)
mypen.end_fill()
# 画太阳
def draw_sun(sun_x, sun_y, sun_size, sun_color):
mypen.penup()
mypen.goto(sun_x, sun_y)
mypen.down()
mypen.dot(sun_size, sun_color)
# 画卫星(卫星只是大概轮廓)
def draw_satellite(satellite_x, satellite_y, satellite_under_width, satellite_under_height, satellite_on_width, satellite_on_height, satellite_under_color, satellite_on_color):
mypen.penup()
mypen.goto(satellite_x, satellite_y)
mypen.down()
mypen.setheading(-20)
mypen.fillcolor(satellite_under_color)
mypen.begin_fill()
for j in range(2):
mypen.forward(satellite_under_width)
mypen.right(90)
mypen.forward(satellite_under_height)
mypen.right(90)
mypen.end_fill()
mypen.penup()
mypen.forward(satellite_under_width)
mypen.right(90)
mypen.forward(satellite_under_height // 2 + 30)
mypen.right(90)
mypen.backward(75)
mypen.pendown()
mypen.fillcolor(satellite_on_color)
mypen.begin_fill()
for i in range(2):
mypen.forward(satellite_on_width)
mypen.right(90)
mypen.forward(satellite_on_height)
mypen.right(90)
mypen.end_fill()
mypen.setheading(-20)
mypen.backward(170)
mypen.pencolor("blue")
mypen.write("CHINA 中国", font = ("文泉驿正黑", 15))
# 画人
# 画人头
def draw_people_head(people_head_x, people_head_y, people_head_under_size, people_head_on_size, people_head_under_color, people_head_on_color):
mypen.penup()
mypen.goto(people_head_x, people_head_y)
mypen.pendown()
mypen.dot(people_head_under_size, people_head_under_color)
mypen.dot(people_head_on_size, people_head_on_color)
mypen.penup()
mypen.goto(people_head_x + 10, people_head_y + 10)
mypen.pendown()
mypen.dot(people_head_on_size // 10, people_head_under_color)
# 画人的身体(不好看,包括手)
def draw_people_body(people_body_x, people_body_y, people_body_size_width, people_body_size_height, people_body_color):
mypen.penup()
mypen.pencolor("black")
mypen.goto(people_body_x, people_body_y)
mypen.setheading(0)
mypen.backward(people_body_size_height // 2)
mypen.pendown()
mypen.fillcolor(people_body_color)
mypen.begin_fill()
for i in range(2):
mypen.forward(people_body_size_height)
mypen.right(90)
mypen.forward(people_body_size_width)
mypen.right(90)
mypen.end_fill()
mypen.penup()
mypen.goto(people_body_x, people_body_y)
mypen.setheading(90)
mypen.backward(people_body_size_height // 2 + 25)
mypen.setheading(0)
mypen.backward(60)
mypen.setheading(90)
mypen.pendown()
mypen.fillcolor(people_body_color)
mypen.begin_fill()
for i in range(2):
mypen.forward(people_body_size_width // 3 + 30)
mypen.right(90)
mypen.forward(people_body_size_height // 3)
mypen.right(90)
mypen.end_fill()
mypen.penup()
mypen.goto(people_body_x, people_body_y)
mypen.setheading(0)
mypen.forward(people_body_size_height // 2)
mypen.pendown()
mypen.fillcolor(people_body_color)
mypen.begin_fill()
for i in range(2):
mypen.forward(people_body_size_width // 3 + 30)
mypen.right(90)
mypen.forward(people_body_size_height // 3)
mypen.right(90)
mypen.end_fill()
# 画人的脚和腿(省略了脚)
def draw_people_leg_and_feet(people_leg_x, people_leg_y, people_leg_width, people_leg_height, people_leg_color):
mypen.penup()
mypen.goto(people_leg_x, people_leg_y)
mypen.forward(13)
mypen.setheading(90)
mypen.backward(145)
mypen.pendown()
mypen.fillcolor(people_leg_color)
mypen.begin_fill()
for i in range(2):
mypen.forward(people_leg_width)
mypen.right(90)
mypen.forward(people_leg_height)
mypen.right(90)
mypen.end_fill()
mypen.penup()
mypen.goto(people_leg_x + 50, people_leg_y)
mypen.setheading(0)
mypen.forward(13)
mypen.setheading(90)
mypen.backward(145)
mypen.pendown()
mypen.fillcolor(people_leg_color)
mypen.begin_fill()
for i in range(2):
mypen.forward(people_leg_width)
mypen.right(90)
mypen.forward(people_leg_height)
mypen.right(90)
mypen.end_fill()
# 画月亮
def draw_moon(moon_x, moon_y, moon_size, moon_color):
mypen.penup()
mypen.goto(moon_x, moon_y)
mypen.pendown()
mypen.dot(moon_size, moon_color)
mypen.setheading(180)
mypen.penup()
mypen.forward(moon_size // 2)
mypen.pendown()
mypen.dot(moon_size, "black")
# 画星系
def draw_galaxy(galaxy_x, galaxy_y, galaxy_color):
mypen.penup()
mypen.goto(galaxy_x + 200, galaxy_y - 200)
mypen.pendown()
mypen.pensize(2)
mypen.pencolor(galaxy_color)
mypen.setheading(20)
galaxy_size_the_first_list = [150, 100, 90, 80, 70, 60, 50, 40, 30 ,20, 10, 5]
galaxy_size_the_second_list = [5, 5, 10, 15, 25, 35, 45, 55, 65, 75, 85, 95, 150]
def def_draw_the_first_galaxy(size):
mypen.forward(size)
mypen.right(90)
def def_draw_the_second_galaxy(size):
mypen.forward(size)
mypen.left(90)
for i in range(len(galaxy_size_the_first_list)):
def_draw_the_first_galaxy(galaxy_size_the_first_list[i])
for i in range(len(galaxy_size_the_second_list)):
def_draw_the_second_galaxy(galaxy_size_the_second_list[i])
# 留言
def interaction():
while True:
player_talk = myscreen.textinput("输入留言", "请输入一些话吧!(10字以内,包括标点)")
if len(player_talk) > 10:
print("字数超过 10 字!")
else:
mypen.penup()
mypen.goto(0, 0)
mypen.pendown()
mypen.write(player_talk, font = ("文泉驿正黑", 12))
print("留言成功!谢谢你的留言!")
break
# 调用函数
screen_size(WIDTH, HEIGHT, TITLE)
draw_sky(BG_COLOR)
while I <= STAR_NUM:
draw_stars(random.randint(-WIDTH, WIDTH), random.randint(-HEIGHT, HEIGHT), random.choice(STAR_SIZE_LIST), random.choice(STAR_COLOR_LIST))
I += 1
draw_earth(EARTH_SIZE, EARTH_X, EARTH_Y, EARTH_SEA_COLOR, EARTH_LAND_COLOR)
draw_sun(SUN_X, SUN_Y, SUN_SIZE, SUN_COLOR)
draw_satellite(SATELLITE_X, SATELLITE_Y, SATELLITE_ON_WIDTH, SATELLITE_ON_HEIGHT, SATELLITE_UNDER_WIDTH, SATELLITE_UNDER_HEIGHT, SATELLITE_ON_COLOR, SATELLITE_UNDER_COLOR)
draw_people_head(PEOPLE_HEAD_X, PEOPLE_HEAD_Y, PEOPLE_HEAD_UNDER_SIZE, PEOPLE_HEAD_ON_SIZE, PEOPLE_HEAD_UNDER_COLOR, PEOPLE_HEAD_ON_COLOR)
draw_people_body(PEOPLE_BODY_X, PEOPLE_BODY_Y, PEOPLE_BODY_SIZE_WIDTH, PEOPLE_BODY_SIZE_HEIGHT, PEOPLE_BODY_COLOR)
draw_people_leg_and_feet(PEOPLE_LEG_X, PEOPLE_LEG_Y, PEOPLE_LEG_WIDTH, PEOPLE_LEG_HEIGHT, PEOPLE_LEG_COLOR)
draw_moon(MOON_X, MOON_Y, MOON_SIZE, MOON_COLOR)
draw_galaxy(GALAXY_X, GALAXY_Y, GALAXY_COLOR)
interaction()
# 固定窗口
turtle.done()
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn