天天看点

python turtle绕原点旋转_100道 Python 经典练习题-008

python turtle绕原点旋转_100道 Python 经典练习题-008

题目:要求输出国际象棋棋盘。

解这个题需要用到 Python 内置的乌龟画图模块 turtle,用这个模块可以画出很多简单的图形(很多高手也用它画出了非常复杂的图形)。turtle 很有意思,大家可以理解为它画图的过程就是它爬过的路线,爬的时候如果不需要留下笔迹,就需要把笔抬起来(penup),具体的用法大家自行 Google 一下,这里主要还是分享我的解题思路。

国际象棋棋盘由64个黑白相间的格子构成,每8个格子为一行,一共8行。我的思路就是首先确定每一行开始的位置以及这一行填充颜色的顺序,再画4组两个为一组的黑白相间的格子。

首先我们定义一个画格子的函数:

from 
           

上面就是一个画边长为50的单个格子的函数,参数为该格子填充的颜色。它的原理很简单,从起笔开始向前画50,然后右转90度,再画50,再右转90度。这样重复4次之后,格子就画好了。函数中最后一个fd(50)是为了方便画下一个方块,如果只画一个方块的话不需要这一行。

setup
           

接下来的代码中,首先让 turtle 生成一个 600*600 的画布,因为我们用边长50的正方形拼成的话,每一行8个格子就要占400的宽度,所以设置成600宽比较好看。然后准备一个填充颜色列表以便后面调用。

如前面所说,棋盘一共有8行,每一行有8列,所以需要两层循环。我们画格子的时候是两个一组(一黑一白),因此内层循环值需要循环4次,外层需要循环8次。

内层循环中只需要执行两次画格子的函数就可以了,注意填充的颜色要不一样。而外层循环还涉及到每次画完一行要换行的问题。我的解决方案是指定坐标:

python turtle绕原点旋转_100道 Python 经典练习题-008

turtle 的坐标如上图所示,画布的正中心就是坐标的原点,x轴上原点往左就是-x,y轴上往上就是+y,反之亦然。我们想要的是第一行格子从(-200,200)的坐标开始画,第二行y往下降50,x不变,以此类推。也就是说,第一行起点的y坐标是200-0x50,第二行起点y坐标是200-1x50...,这样就可以用变量i来循环这个倍数。

注意指定坐标之前需要将画笔抬起来penup(),如果不抬起来就会留下乌龟从原点到指定点的痕迹,到了指定点之后又需要将画笔放下pendown()。

最后turtle 生成的画面如下,乌龟画的过程中你可以看到它画每一笔的顺序。如果你想要直接生成,可以将代码中注释掉的tracer(False) 和 update()取消注释。

python turtle绕原点旋转_100道 Python 经典练习题-008

继续阅读