Beetle.penDown()

Beetle.move(10)

Beetle.penUp()

Beetle.move(10)

Beetle.penDown()

Beetle.move(10)

Beetle.penUp()

Beetle.move(10)

Beetle.penDown()

Beetle.move(10)

Beetle.penUp()

Beetle.move(10)

Beetle.penDown()

Beetle.move(10)

Beetle.penUp()

Beetle.move(10)

实际上我们可以看到当画笔抬起来后我们依然可以让我们的bug移动,只不过不留下路径了。

3.2. 改变画笔的颜色

我们当然也可以改变我们的画笔颜色

大家可以点击颜色框打开颜色选择的框框,选择好自己喜欢的颜色再拖入python编辑器,

对应的代码如下:

Beetle.setColor("#5900ff")

其中setColor函数中的参数 **"#5900ff"**是颜色值的16进制表达,井号后面每两个字母分别对应红绿蓝三个颜色的值大小,从0到ff(0~255)。

我们改造一下上一节的Z字代码,让它画一个彩色的字母:

Beetle.gotoXY(0, 100)

Beetle.direction(90)

Beetle.clear()

Beetle.setPenSize(3)

Beetle.penDown()

Beetle.setColor("#FF0000")

Beetle.gotoXY(100, 100)

Beetle.setColor("#00FF00")

Beetle.gotoXY(0, 0)

Beetle.setColor("#0000FF")

Beetle.gotoXY(100, 0)

大家注意观察下setColor中FF的位置变化如何控制颜色的变化。

3.3. 改变画笔的大小

在每一笔画完之后我们将笔的大小增加5个像素。

Beetle.gotoXY(0, 100)

Beetle.direction(90)

Beetle.clear()

Beetle.setPenSize(3)

Beetle.penDown()

Beetle.setColor("#ff0000")

Beetle.gotoXY(100, 100)

Beetle.changePenSize(5)

Beetle.setColor("#00FF00")

Beetle.gotoXY(0, 0)

Beetle.changePenSize(5)

Beetle.setColor("#0000FF")

Beetle.gotoXY(100, 0)

3.4. 画一个圆

我们先从数学上来思考一个圈的属性。我们都知道一个圆有360度,如果我们每前进一步转1度,最后不就是一个圆了吗?

我们先回到图形化模式快速验证下我们的想法。

点击绿旗帜看看最后的运行结果,注意这里我们使用了循环方块。

对应的python代码如下:

# -*- coding: utf-8 -*-

import _env, time, random

from scratch3 import *

Beetle = Sprite("Beetle")

x = 0

Beetle.gotoXY(0, 0)

Beetle.direction(90)

Beetle.clear()

Beetle.setPenSize(3)

Beetle.setColor("#ff0000")

Beetle.penDown()

for count in range(360):

Beetle.turnLeft(1)

Beetle.move(1)

但是我们平时我们做算术题的时候都是使用半径和原点来定义一个圆的,这种bug作图完全没办法控制呀~

我们知道圆的周长是2x3.14x半径,如果我们要画一个半径为100的圆,那么每一步就应该是(2x3.14x100/360)= 1.745

我们来验证一下我们的想法,将for循环中移动的代码改造一下

并让bug一开始就处在负Y轴的(0,-100)位置

Beetle.gotoXY(0, -100)

Beetle.direction(90)

Beetle.clear()

Beetle.setPenSize(3)

Beetle.setColor("#ff0000")

Beetle.penDown()

for count in range(360):

Beetle.turnLeft(1)

Beetle.move(2*3.14*100/360)

大家看看最终效果是不是一个圆心就在(0,0),半径为100的圆呢?

3.5. 函数化

我们上面画了一个完美的圆圈,但是我想让我们的代码更加通用,可以在任意位置,任意半径画圈圈,最好还可以改变颜色。。

这时候就需要祭出python的函数功能了。

如果对python函数不熟悉的同学可以先用scratch3的自定义函数上手,我们点击自制积木->制作新的积木

之后定义一个具有四个输入参数的积木,分别对应圆的半径,原点x,原点y,颜色。

这里我们首先用图形化方块描述这个函数的功能,基本就是把我们前面画圆的代码重新使用输入参数抽象化:

之后转到python代码编辑器,注意点击**>**按钮重新生成python代码:

# -*- coding: utf-8 -*-

import _env, time, random

from scratch3 import *

Beetle = Sprite("Beetle")

x = 0

def circle(R, x, y, color):

Beetle.gotoXY(x, -1 * R)

Beetle.setColor(color)

Beetle.penDown()

Beetle.direction(90)

for count in range(360):

Beetle.turnLeft(1)

Beetle.move((2 * (3.14 * R)) / 360)

Beetle.penUp()

Beetle.setPenSize(3)

Beetle.clear()

circle(100, 0, 0, "#ff0000")

其中def circle(R, x, y, color):就是python下的函数定义了,其中def就是definition的缩写,表示后面是一个函数定义。紧接着是函数的名字,括号内对应的是函数的参数。图形化只是带领大家入门,关于python函数的花式玩法有很多,大家可以参考我们另外一篇micropython系列教程或者其他python教材都有详细的阐述。

注意函数或者其他带作用域的定义均需要以冒号结尾,并且在下一行需要使用空格或者tab缩进。同样作用域的代码需要具有同样的缩进,不然python解释器运行的时候会报错,更糟糕的情况是完全给出错误的执行结果。

最后我们在python代码中加入随意的几个circle函数调用,并看看效果。

circle(100, 0, 0, "#ff0000")

circle(20, -20, 0, "#00ff00")

circle(40, 30, 30, "#ff0000")

circle(80, -20, 20, "#ff00ff")

circle(60, 0, 0, "#00ffff")

python控制画笔尺寸_python教程系列终章:画笔控制相关推荐

  1. python画笔宽度_python教程系列终章:画笔控制

    原标题:python教程系列终章:画笔控制 3. 画笔控制 通过前面两节的学习,大家可能会感觉到实际上的编程相当于我们手握一直笔,通过各种指令控制笔的路径. 没错,我们平时写字或画画的各种操作都能够用 ...

  2. python elif报错_python教程(四)流程控制 if elif

    本章你将学到:input()函数用于获取输入,python流程控制语句的if语句 >>> age = int(input('请输入年龄:')) 请输入年龄:15 >>&g ...

  3. python 递归函数_Python教程系列之递归函数与匿名函数调用

    Python教程系列递归函数与匿名函数调用,函数是Python技术学习中重要的一个环节,深入掌握该阶段的知识内容,对于Python技术能力的提升非常有帮助,这里就针对递归函数与匿名函数两种函数调用进行 ...

  4. 《银河护卫队》系列终章IMAX中国首周末劲收3840万票房,全球斩获约2500万美元...

    美通社消息,IMAX China宣布由漫威/迪士尼影业出品的<银河护卫队3>在中国上映首周末劲收票房3840万,IMAX票房占比则高达20%.作为该超级英雄系列的终章,<银河护卫队3 ...

  5. python控制画笔尺寸_Python turtle库的画笔控制说明

    turtle.penup() 别名 turtle.pu() :抬起画笔海龟在飞行 turtle.pendown() 别名 turtle.pd():画笔落下,海龟在爬行SRE实战 互联网时代守护先锋,助 ...

  6. python采集修改原创_python应用系列教程——python中ftp操作:连接、登录、获取目录,重定向、上传下载,删除更改...

    python中ftp操作: ftp=FTP() #设置变量 ftp.set_debuglevel(2) #打开调试级别2,显示详细信息 ftp.connect("IP"," ...

  7. python如何绘制条形图_python Matplotlib 系列教程(三)——绘制直方图和条形图

    在本章节我们将学习如何绘制条形图和直方图 条形图与直方图的区别: 首先,条形图是用条形的长度表示各类别频数的多少,其宽度(表示类别)则是固定的: 直方图是用面积表示各组频数的多少,矩形的高度表示每一组 ...

  8. python怎么计算总值_python小白系列Day2—python基础以及pandas基础

    最近恰逢过年期间,聚会太多,还有论文以及笔者年后的实习培训,时隔几天,笔者终于在第一天更文之后,继续写第二篇了. 打算写这个,主要是想记录自己从0到1的过程,欢迎拍砖. part one 思考部分 笔 ...

  9. python手机代码编辑器_Python入门系列14 - 代码编辑器PyCharm篇

    Python入门系列14 代码编辑器PyCharm篇 本篇文字为2412字,阅读时间约为7分钟. 1 前言 古人云:工欲善其事必先利其器!写代码也一样,虽然好多人都说,初学者不推荐使用很高大上,智能, ...

最新文章

  1. dockefile nginx php,dockerfile自动部署nginx+php7
  2. 微服务生态与 Spring Cloud Alibaba
  3. 【JS】两种计时器/定时器
  4. 我的第五个网页制作:pre、html转义、abbr标签的使用
  5. Vue:触发视图更新的hack
  6. 上去了server查所有表空间_oracle如何查看表空间
  7. mysql 插入 point_mysq Point类型 查询和插入操作:insert和select
  8. Lucene.Net+盘古分词-开发自己的搜索引擎
  9. AWS Lambda中的Cron表达式解析器
  10. ajax post常用请求头
  11. STL各容器的实现,时间复杂度,适用情况分析
  12. 解决能上QQ却不能上网的问题
  13. 中国慕课moocpython答案_中国大学慕课moocPython编程基础章节测试答案
  14. 【ubuntu】fatal: detected dubious ownership in repository at ...
  15. 服务器端和客户端互发消息,Socket编程实现简单的服务器与客户端互发消息
  16. 测试用例及其注意事项
  17. Selenium UnreachableBrowserException异常处理方案
  18. Unity3D游戏制作(二)——如何渲染3D角色
  19. 比尔盖茨 1974 年简历曝光
  20. 追加重定向 输入和输出

热门文章

  1. docker-compose概述与简单编排部署
  2. 塑胶围栏的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  3. early翻译_early是什么意思
  4. windows系统下的文件夹链接功能mklink/linkd
  5. 优化问题中什么形式有闭式解
  6. 目标关键词是什么意思?
  7. echarts的渐变色配置 LinearGradient, 饼图默认渐变颜色设置不同的角度
  8. Force Dimension 全系列触觉反馈装置
  9. 【C++】类的朋友(friend)
  10. happens-before揭秘