[ Python学习笔记 ] turtle库的使用 ( 1 )

最近心血来潮,想学python。况且新博客需要大量插入图片,于是敲代码数十小时,遂得此篇。


代码如下:

import turtle

def box(t,x,y,a,b,r):
    t.up()
    t.goto(x-a/2,y-b/2-r)
    t.down()

    for i in range(2):
        t.forward(a)
        t.circle(r,90)
        t.forward(b)
        t.circle(r,90)

def node(t,x,y,a,b,r):
    box(t,x,y+b/2+r,a,b,r)
    box(t,x,y-b/2-r,a,b,r)

if __name__ == "__main__":
    t=turtle.Turtle()

    node(t,0,0,100,50,15)

    turtle.done()

实现效果

一个似像不像的节点


具体思路

节点,需要两个盒子;画盒子,可以画矩形,三角形,正方形等等,这里拿圆角矩形来作示范。
要画圆角矩形,我们需要有五个参数,即aaabbb半径rrr横坐标xxx纵坐标yyy
但是有两个细节问题
1.1.1. 长是外接矩形的长吗?
2.2.2. 横纵坐标是这个盒子的中心吗?
这篇博客中,我们是这么处理的:
1.1.1. 长不是外接矩形的长。
2.2.2. 横纵坐标是这个盒子的中心。
所以下面的步骤就很好想了,请见下文。


逐行代码解析

一、库的调用

首先要感谢pythonpythonpython自带的组件里面就有turtle库,再也不需要万恶的pippippip installinstallinstall了,所以我们可以用下面的代码直接调用turtle库:

import turtle

一般地,调用库的方式为import <name>

二、box函数

这个函数是画盒子用的。

def box(t,x,y,a,b,r):
    t.up()
    t.goto(x-a/2,y-b/2-r)
    t.down()

    for i in range(2):
        t.forward(a)
        t.circle(r,90)
        t.forward(b)
        t.circle(r,90)

pythonpythonpython语法:
1.1.1. def 函数名name (参数列表list):,自定义函数。
我需要调用五个图形参数外加一个画笔参数
所以下面的函数是这么写的:

def box(t,x,y,a,b,r):
# t->画笔; x->横坐标; y->纵坐标; a->长; b->宽; r->半径

turtleturtleturtle接口调用(这里是平移画笔至想要的位置):
1.1.1. up(),抬起画笔,此时画笔不会写下东西。
2.2.2. goto(x,y),将画笔沿直线平移到(x,y)
3.3.3. down(),落下画笔,此时画笔可以开始写东西。

    t.up()
    t.goto(x-a/2,y-b/2-r)
    t.down()

pythonpythonpython语法:
1.1.1. for i in range(2):,一种循环语句,将iii000执行到111
turtleturtleturtle接口调用(这里是画圆角矩形):
1.1.1. forward(d),画笔向当前方向走ddd步。
2.2.2. circle(r,rad),画笔向当前方向,以rrr为半径,向左画一个角度为radradrad的圆弧。

    for i in range(2):
        t.forward(a)
        t.circle(r,90)
        t.forward(b)
        t.circle(r,90)
三、node函数

定义了一个nodenodenode函数,这个函数是画节点用的。
函数列表传输了六个变量
t->画笔;x->横坐标;y->纵坐标;a->长;b->宽;r->半径
再调用boxboxbox函数画两个盒子(我真是个天才
具体代码如下

def node(t,x,y,a,b,r):
    box(t,x,y+b/2+r,a,b,r)
    box(t,x,y-b/2-r,a,b,r)
四、main函数

主函数,无需多言
1.1.1. 调用turtle.Turtle()获得画笔
2.2.2. 调用node(),在合适的位置画出节点
3.3.3. turtle.done(),是turtleturtleturtle图形库的一个方法,用于标志绘图任务的结束,并保持绘图窗口开启,直到用户主动关闭。

if __name__ == "__main__":
    t=turtle.Turtle()
    
    node(t,0,0,100,50,15)

    turtle.done()

后记

懒得写后记AwAAwAAwA

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值