用python画猫咪怎么画-如何用Python画一只机器猫?

原标题:如何用Python画一只机器猫?

本文经授权转自公众号异步图书

如若转载请联系原公众号

自信心是成功的源泉,对刚入门编程行业的初级程序员来说,多敲代码多做项目就是构建自信心的最好办法。

第一次学编程是在屏幕上敲出”Hello World!“,慢慢地可以处理简单程序,显示更复杂的图像,解决更多的问题。

信心增加又可以促进自己学习更多的知识,这样正能量的方式就是程序员学习进阶的不二法宝。

今天就教大家用Python写一个机器猫,一起敲代码吧!

01

程序分析

我们先来看一下机器猫的样子,如图所示。

92a1d47d20224c87a4b647bec01a04b2.jpeg

它有大大的脑袋、圆圆的眼睛、红红的鼻头,嘴巴两边各有 3 根胡子。脑袋和身体用一条红色的丝带分 隔开,因为图中的这只机器猫是坐着的,所以我们没有看到腿,只有圆圆的脚露在外面。此外,机器猫还有胳膊和圆圆的手。最后,别忘了机器猫还有标志性的铃铛和口袋。

我们可以使用自定义函数,按照机器猫的身体部位来定义各个绘制函数:head(头)、 eyes(眼睛)、nose(鼻子)、mouth(嘴)、whiskers(胡子)、body(身体)、feet(脚)、arms(胳 膊)、hands(手)、bell(铃铛)和 package(口袋)。函数的名字就表明了该函数负责绘制的身体部位。

我们可以看到,这些身体部位大部分是由圆形和矩形组成,所以为了能够重复使用相同的代码段,避免 不必要地复制和粘贴代码,我们还需要定义两个基础函数——一个是绘制圆形的函数 drawRound,一个是绘制矩形的 drawRect函数。

02

导入模块和设置画笔

因为要使用海龟绘图,所以我们需要先导入 turtle 模块。我们将采用第 11 章介绍的导入模块的第二种方法:

fromturtle import*

使用这种方法,可以导入 turtle 模块中所有的方法和变量,然后就可以直接调用方法了,而不需要再添加 “turtle.”前缀。现在,我们可以直接将代码写为 setup(500,500),而不需要再添加前缀写成 turtle.setup(500,500)。

然后我们对画笔做一些基本设置,代码如下。

#设置窗口大小

setup(500,500)

#设置画笔

speed(10)

shape( "turtle")

colormode(255)

调用 setup(500,500),将画布大小设置为 500 像素宽,500 像素高。调用 speed(10) 将画笔速度设置为 10。

调用 shape("turtle"),将光标设置为小海龟。调用 colormode(255)设置 RGB 色彩值范围为 0~255。

03

基础函数

绘制圆形

我们定义一个 drawRound函数,用它来绘制圆形。这里为它设置两个参数,分别是表示所绘制的圆的半 径的 size 和表示是否填充的 filled。drawRound函数的代码如下所示。

defdrawRound(size,filled):

pendown

iffilled== True:

begin_fill

setheading ( 180)

circle(size, 360)

iffilled== True:

end_fill

首先,调用 pendown函数表示落笔。然后,判断参数 filled 是否等于 True。如果等于 True,表示要填充, 那么就调用 begin_fill函数;否则,不调用该函数,表示没有填充。然后调用 setheading(180),设置小海 龟启动时运动的方向,就是让小海龟调个头。调用 circle(size,360),画一个半径为 size 的圆。然后还要判断参数 filled 是否等于 True,如果等于 True,意味着前面调用过 begin_fill函数,则这里调用 end_fill函 数表示填充完毕。

绘制矩形

接下来,我们定义了一个 drawRect函数,用它来绘制矩形。这里为它指定 3 个参数,分别是表示所绘制 的矩形的长的 length,表示所绘制的矩形的宽的 width,以及表示是否填充的 filled。drawRect函数的代 码如下所示。

defdrawRect(length,width,filled):

setheading( 0)

pendown

iffilled== True:

begin_fill

forward(length)

right( 90)

forward(width)

right( 90)

forward(length)

right( 90)

forward(width)

iffilled== True:

end_fill

首先调用 s

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,让我们来一只可爱的猫咪吧! 首先,需要导入turtle库: ```python import turtle ``` 然后,我们需要创建一个布和一个笔,代码如下: ```python canvas = turtle.Screen() # 创建布 canvas.bgcolor('#F7E7CE') # 设置布背景色为浅黄色 pen = turtle.Turtle() # 创建笔 pen.speed(0) # 设置笔速度为最快 pen.hideturtle() # 隐藏笔形状 ``` 接下来,我们来猫咪的身体: ```python # 猫咪的身体 pen.penup() pen.goto(-50, -50) pen.pendown() pen.color('#7F462C') pen.begin_fill() pen.circle(50) pen.end_fill() ``` 然后,猫咪的头部和耳朵: ```python # 猫咪的头部和耳朵 pen.penup() pen.goto(0, 20) pen.pendown() pen.color('#7F462C') pen.begin_fill() pen.circle(20) pen.end_fill() pen.penup() pen.goto(10, 60) pen.pendown() pen.color('#7F462C') pen.begin_fill() pen.right(60) pen.forward(30) pen.left(120) pen.forward(30) pen.end_fill() pen.penup() pen.goto(-10, 60) pen.pendown() pen.color('#7F462C') pen.begin_fill() pen.left(120) pen.forward(30) pen.right(120) pen.forward(30) pen.end_fill() ``` 然后,猫咪的眼睛和鼻子: ```python # 猫咪的眼睛和鼻子 pen.penup() pen.goto(-10, 40) pen.pendown() pen.color('black') pen.begin_fill() pen.circle(5) pen.end_fill() pen.penup() pen.goto(10, 40) pen.pendown() pen.color('black') pen.begin_fill() pen.circle(5) pen.end_fill() pen.penup() pen.goto(0, 20) pen.pendown() pen.color('black') pen.dot(10) pen.penup() pen.goto(0, 10) pen.pendown() pen.color('black') pen.dot(5) ``` 最后,猫咪的四肢: ```python # 猫咪的四肢 pen.penup() pen.goto(-30, -70) pen.pendown() pen.color('#7F462C') pen.begin_fill() pen.right(30) pen.forward(30) pen.right(120) pen.forward(30) pen.right(60) pen.forward(40) pen.end_fill() pen.penup() pen.goto(30, -70) pen.pendown() pen.color('#7F462C') pen.begin_fill() pen.left(30) pen.forward(30) pen.left(120) pen.forward(30) pen.left(60) pen.forward(40) pen.end_fill() ``` 最后,我们需要让笔回到原点,然后隐藏它: ```python pen.penup() pen.goto(0, 0) pen.hideturtle() ``` 完整代码如下:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值