海龟 (turtle) 画图实战任务(四 ):一笔绘制填充的多角星及制作 8 × 8 的国际象棋棋盘格

海龟 (turtle) 画图实战任务(四 ):一笔绘制填充的多角星及制作 8 × 8 的国际象棋棋盘格
强烈推介IDEA2020.2破解激活,IntelliJ IDEA 注册码,2020.2 IDEA 激活码

为了让博友们加深对 turtle 库的印象以及能更加灵活地运用 turtle 库,故按照博主之前编写关于 turtle 文章顺序设置实战任务。如果没有看过博主之前文章的小伙伴们,可以点击以下链接进行学习观看,理论 + 实践才能成长得更快,加油。

  1. 全网最细海龟 (turtle) 画图讲解 (一):初探海龟绘图
  2. 全网最细海龟 (turtle) 画图讲解 (二):窗口控制
  3. 全网最细海龟 (turtle) 画图讲解 (三):设置画笔样式
  4. 全网最细海龟 (turtle) 画图讲解 (四):绘制图形
  5. 全网最细海龟 (turtle) 画图讲解 (五):输入/输出文字及鼠标与键盘交互设计

1. 一笔绘制填充的多角形

对于顶角数量为奇数的多角星都可以用一笔绘制出来,每一个多角星都会有一个外接圆。圆周角的度数等于它所对的弧度数的一半。所以对于 n 角星,内角的计算公式为 360/2/n=180/n,旋转的角度为 180-180/n。请根据该规则应用海龟绘图绘制一个多角星。例如,指定顶角的数量为 5,则绘制五角星,效果下图所示。
考察知识点:turtle 模块绘制线条 + 方向的设置 + 绘制填充图形的应用
参考学习文章: 全网最细海龟 (turtle) 画图讲解 (四):绘制图形

程序示例代码如下:

# -*- coding: UTF-8 -*-
""" @author:AmoXiang @file:5.一笔绘制填充的多角星.py @time:2021/01/03 """
import turtle  # 导入海龟绘图模块

turtle.width(2)  # 线粗2像素
turtle.color('red', 'yellow')  # 设置边框和填充的颜色
side = 5  # 边数
turtle.begin_fill()
for i in range(side):  # 循环一次画一次边,五角星5边,所以循环5次
    turtle.forward(100)  # 边长
    turtle.left(180 - 180 / side)  # 旋转角度
turtle.end_fill()
turtle.done()  # 海龟绘图程序的结束语句(开始主循环)

2. 制作 8 × 8 的国际象棋棋盘格

国际象棋棋盘是个正方形,由横、纵各 8 格、颜色一深一浅交错排列的 64 个小方格组成。本任务要求编写一段 Python 代码,使用海龟绘图绘制一张 8×8 的国际象棋棋盘格,效果如下图所示。
考察知识点:turtle 模块绘制正方形 + 方向的设置 + 绘制填充图形的应用
参考学习文章: 全网最细海龟 (turtle) 画图讲解 (四):绘制图形

示例代码1:

# -*- coding: UTF-8 -*-
""" @author:AmoXiang @file:6.制作8×8的国际象棋棋盘格.py @time:2021/01/04 """

import turtle  # 导入turtle绘图模块

for row in range(8):
    if row % 2 == 0:
        for i in range(8):
            if i % 2 == 0:
                turtle.color("black")
                turtle.begin_fill()  # 标记填充开始
                for j in range(4):
                    turtle.forward(20)
                    turtle.left(90)
                turtle.end_fill()  # 标记填充结束
            else:
                turtle.forward(40)
                for k in range(3):
                    turtle.left(90)
                    turtle.forward(20)
                turtle.left(90)
                turtle.forward(20)
        turtle.setx(0)
        turtle.sety((row + 1) * -20)
    else:
        for m in range(8):
            if m % 2 == 0:
                for n in range(4):
                    turtle.forward(20)
                    turtle.left(90)
            else:
                turtle.color("black")
                turtle.begin_fill()
                turtle.forward(40)
                for i in range(3):
                    turtle.left(90)
                    turtle.forward(20)
                turtle.end_fill()
                turtle.left(90)
                turtle.forward(20)
        if row != 7:
            turtle.setx(0)
            turtle.sety((row + 1) * -20)

turtle.backward(20)
turtle.ht()  # 隐藏画笔
turtle.done()  # 海龟绘图程序的结束语句(开始主循环)

示例代码2:

# -*- coding: UTF-8 -*-
""" @author:AmoXiang @file:7.制作8×8的国际象棋棋盘格.py @time:2021/01/04 """
import turtle  # 导入海龟绘图模块


def draw_rect(c):
    turtle.color(c, c)  # 设置颜色
    turtle.begin_fill()  # 开始填充
    for i in range(4):
        turtle.forward(32)
        turtle.right(90)
    turtle.end_fill()  # 结束填充


row = 8  # 行数
col = 8  # 列数
for i in range(4):
    turtle.forward(32 * 8)
    turtle.right(90)
for i in range(row):
    for j in range(col):
        turtle.penup()  # 抬笔
        turtle.goto(32 * j, -32 * i)  # 移动
        turtle.pendown()  # 落笔
        if i % 2 == 0:  # 奇数行
            if j % 2 == 0:  # 奇数列绘制
                draw_rect('black')
        else:  # 偶数行
            if ~j % 2 == 0:  # 偶数列绘制
                draw_rect('black')
turtle.ht()  # 隐藏海龟光标
turtle.done()  # 海龟绘图程序的结束语句(开始主循环)

至此今天的案例就到此结束了,笔者在这里声明,笔者写文章只是为了学习交流,以及让更多学习 Python 基础的读者少走一些弯路,节省时间,并不用做其他用途,如有侵权,联系博主删除即可。感谢您阅读本篇博文,希望本文能成为您编程路上的领航者。祝您阅读愉快!


在这里插入图片描述

    好书不厌读百回,熟读课思子自知。而我想要成为全场最靓的仔,就必须坚持通过学习来获取更多知识,用知识改变命运,用博客见证成长,用行动证明我在努力。
    如果我的博客对你有帮助、如果你喜欢我的博客内容,请 点赞评论收藏 一键三连哦!听说点赞的人运气不会太差,每一天都会元气满满呦!如果实在要白嫖的话,那祝你开心每一天,欢迎常来我博客看看。
 编码不易,大家的支持就是我坚持下去的动力。点赞后不要忘了 关注 我哦!

本文来源Amo Xiang,由javajgs_com转载发布,观点不代表Java架构师必看的立场,转载请标明来源出处:https://javajgs.com/archives/7788

发表评论