【青少年编程】黄羽恒:漫天飞雪
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复【Scratch】或【Python】,即可进入。如果加入了之前的社群不需要重复加入。
微信后台回复“资料下载”可获取以往学习的材料(视频、代码、文档)。
编程题
“漫天飞雪”是来自「青少年编程竞赛交流群」中 「黄羽恒」 小朋友的作品。
1. 思路分析
雪花可以看成由6个相同的结构组成,只需要绘制出1个结构,通过循环每次旋转60度,重复绘制就可以得到整个雪花,见snowlake()
函数。
我们来说明其中一个结构的绘制,这个结构由两个腰部的分叉forking()
,以及一个头部的六边形hexagon()
组成。
随机给定起始点,就可以在屏幕上随机绘制雪花了。
2. 程序代码
import turtle
import random
def snowlake(length, pen, startx, starty):
pen.speed(100)
pen.up()
pen.goto(startx, starty)
pen.down()
def hexagon():
pen.left(60)
for i in range(6):
pen.forward(length / 4)
pen.right(60)
pen.right(60)
def forking():
pen.forward(length / 3)
pen.left(60)
pen.forward(length / 4)
pen.backward(length / 4)
pen.right(120)
pen.forward(length / 4)
pen.backward(length / 4)
pen.left(60)
pen.color(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
for i in range(6):
forking()
pen.forward(length / 3)
forking()
pen.forward(length / 3)
hexagon()
pen.backward(length)
pen.left(60)
turtle.bgcolor('black')
turtle.colormode(255)
p = turtle.Pen()
for i in range(30):
x = random.randint(-300, 300)
y = random.randint(-300, 300)
snowlake(random.randint(10, 30), p, x, y)
turtle.done()
3. 结果展示
基础知识:
一级编程题:
01 森林的一天 02 舞者凯希 03 小狗散步 04 猫捉老鼠 05 城堡漫步 06 火箭发射 07 飞向太空 08 小狗长大记 09 运动起来 10 动物园之旅 11 球飞了 12 希神吓走猫头鹰 13 棒球运动会
二级编程题:
01 飞不出去的蝴蝶 02 巡线小车 03 绘制雪花图案 04 制作蝙蝠冲关游戏 05 飞翔的小鸟 06 绘制十个正方形 07 别碰红块 08 小鸡捉害虫 09 垃圾分类 10 两座对称的山峰 11 寻找宝石 12 绘制方形螺旋
三级编程题:
小朋友投稿:
Scratch:
Python:
群内答疑:
Scratch:
Python: