python 用turtle库画围棋棋盘和正、余弦函数图形

您所在的位置:网站首页 围棋棋盘尺寸图 python 用turtle库画围棋棋盘和正、余弦函数图形

python 用turtle库画围棋棋盘和正、余弦函数图形

2024-07-17 20:31| 来源: 网络整理| 查看: 265

一.如何画围棋棋盘。

围棋棋盘共有19纵19横。其中,位于(0,0)的星位叫天元,其余8个星位坐标分别是:(-6,6),(0,6),(6,6),(-6,0),(6,0),(-6,-6),(0,-6),(6,-6)。这里面涉及到绘制等间距网格,我选择for循环来实现。考虑到以后可以修改棋盘大小,所以网格间距和初始点位置都设置成全局变量。其代码如下:

''' 遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,互帮互助, 群里还有不错的视频学习教程和PDF电子书 ''' # 绘制围棋棋盘 import turtle # 线与线间隔 n = 30 # 初始点位置 x = -300 y = -300 # 定义棋盘样式 turtle.speed(3) turtle.pencolor('black') turtle.screensize(400, 400) # 画横线 for i in range(19): turtle.penup() turtle.goto(x, y + n * i) turtle.pendown() turtle.forward(n * 18) # 画竖线 turtle.left(90) for i in range(19): turtle.penup() turtle.goto(x + n * i, y) turtle.pendown() turtle.forward(n * 18) turtle.right(90) # 画9个星位,每排三个,共三排所以是两层for循环 x_first = x + n * 3 y_first = y + n * 3 - n * 0.25 for i in range(3): for j in range(3): turtle.penup() turtle.goto(x_first + 6 * j * n, y_first + 6 * i * n) # 如果按下面写法,则先画左边3个星,再画中间3个 # turtle.goto(x_first + 6 * j * n, y_first + 6 * i * n) turtle.pendown() turtle.begin_fill() turtle.fillcolor('blue') # 飞星的半径为1/4个网格间距 turtle.circle(n * 0.25) turtle.end_fill() # 隐藏画笔箭头 turtle.hideturtle() turtle.done()

代码运行结果如下图: 在这里插入图片描述 题目非常简单,重点是通过画图来感受循环在处理重复性动作时的威力。但凡重复性的工作都可以用循环来处理。这也正是计算机擅长的工作,并且也是程序的意义所在:把人的精力从繁琐的、海量的、重复性的、简单的初级工作中解脱出来。

二.绘制正弦、余弦函数。

其核心思想是:放下画笔,然后让画笔依次通过各个坐标点就画出一条正弦余弦曲线。从这里也可以看出,这也是不断地重复性工作,重复地计算以x为横坐标的点的 y 坐标,然后重复地让画笔通过这些点。所以我也选用for循环。

当然,代码中值得关注的就是 x-0-y 坐标系的绘制。这段代码可以通用。

''' 遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,互帮互助, 群里还有不错的视频学习教程和PDF电子书 ''' # 在正交坐标系下画sin(x)和cos(x)曲线 import turtle import math turtle.speed(1) # 画 x 轴 turtle.penup() turtle.goto(-220, 0) turtle.pendown() turtle.goto(220, 0) # 画 x 轴箭头 turtle.setheading(150) turtle.forward(20) turtle.penup() turtle.goto(220, 0) turtle.setheading(-150) turtle.pendown() turtle.forward(20) # 显示x turtle.penup() turtle.goto(225, 0) turtle.write('X') # 画 y 轴 turtle.penup() turtle.goto(0, -100) turtle.pendown() turtle.goto(0, 100) # 画 y 轴箭头 turtle.setheading(240) turtle.forward(20) turtle.penup() turtle.goto(0, 100) turtle.pendown() turtle.setheading(-60) turtle.forward(20) # 显示Y turtle.penup() turtle.goto(0, 110) turtle.write('Y') # 画正弦曲线 x = -175 turtle.pensize(2) turtle.color('blue') turtle.penup() turtle.goto(x, 50 * math.sin((x / 100) * 2 * math.pi)) turtle.pendown() for x in range(-175, 176): turtle.goto(x, 50 * math.sin((x / 100) * 2 * math.pi)) # 将-2π的位置标示出来 turtle.penup() turtle.goto(-100, -20) turtle.write('-2π') # 将2π的位置标示出来 turtle.penup() turtle.goto(100, -20) turtle.write('2π') # 画余弦曲线 x = -175 turtle.pensize(2) turtle.color('red') turtle.penup() turtle.goto(x, 50 * math.cos((x / 100) * 2 * math.pi)) turtle.pendown() for x in range(-175, 176): turtle.goto(x, 50 * math.cos((x / 100) * 2 * math.pi)) turtle.hideturtle() turtle.done()

运行结果如下: 在这里插入图片描述 最后我还是要重复一遍上面的心得:但凡重复性的工作都可以用循环来处理。这也正是计算机擅长的工作,并且也是程序的意义所在:把人的精力从繁琐的、海量的、重复性的、简单的初级工作中解脱出来。 应该把精力放在建模和算法优化上。这才是重点和难点。



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3