天天看点

python turtle绕原点旋转_每天一个Python小技巧,用Python 画个哆啦a梦,文末还有学习视频...

python turtle绕原点旋转_每天一个Python小技巧,用Python 画个哆啦a梦,文末还有学习视频...

文末有小编给大家准备的资料,需要的关注小编直接私信“学习”来领取哦

见网络上有人用Python 画出来个多啦A梦,很是新奇,来来来,我们看一下他们主要用到的库。

python turtle绕原点旋转_每天一个Python小技巧,用Python 画个哆啦a梦,文末还有学习视频...

其实主要用的库就一个 turtle 库

先说明一下turtle绘图的基础知识:

1. 画布(canvas)

画布就是turtle为我们展开用于绘图区域, 我们可以设置它的大小和初始位置

1.1 设置画布大小

turtle.screensize(canvwidth=None, canvheight=None, bg=None)参数分别为画布的宽(单位像素), 高, 背景颜色

如:

turtle.screensize(800, 600, "green")

turtle.screensize() #返回默认大小(400, 300)

turtle.setup(width=0.5, height=0.75, startx=None, starty=None)

参数:width, height: 输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例(startx, starty): 这一坐标表示 矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心

如:

turtle.setup(width=0.6, height=0.6)

turtle.setup(width=800, height=800, startx=100, starty=100)

2. 画笔

2.1 画笔的状态

在画布上,默认有一个坐标原点为画布中心的坐标轴, 坐标原点上有一只面朝x轴正方向小乌龟. 这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向), turtle绘图中, 就是使用位置方向描述小乌龟(画笔)的状态

2.2 画笔的属性

画笔(画笔的属性,颜色、画线的宽度)1) turtle.pensize():设置画笔的宽度;2) turtle.pencolor(); 没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如"green", "red",也可以是RGB 3元组,

>>> pencolor('brown')

>>> tup = (0.2, 0.8, 0.55)

>>> pencolor(tup)

>>> pencolor() '#33cc8c'

3) turtle.speed(speed): 设置画笔移动速度,画笔绘制的速度范围[0,10]整数, 数字越大越快

2.3 绘图命令

操纵海龟绘图有着许多的命令,这些命令可以划分为3种:一种为运动命令,一种为画笔控制命令,还有一种是全局控制命令

(1)画笔运动命令:

命令说明turtle.forward(distance)向当前画笔方向移动distance像素长turtle.backward(distance)向当前画笔相反方向移动distance像素长度turtle.right(degree)顺时针移动degree°turtle.left(degree)逆时针移动degree°turtle.pendown()移动时绘制图形,缺省时也为绘制turtle.goto(x,y)将画笔移动到坐标为x,y的位置turtle.penup()移动时不绘制图形,提起笔,用于另起一个地方绘制时用turtle.speed(speed)画笔绘制的速度范围[0,10]整数turtle.circle()画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆

(2)画笔控制命令:

命令说明turtle.pensize(width)绘制图形时的宽度turtle.pencolor()画笔颜色turtle.fillcolor(colorstring)绘制图形的填充颜色turtle.color(color1, color2)同时设置pencolor=color1, fillcolor=color2turtle.filling()返回当前是否在填充状态turtle.begin_fill()准备开始填充图形turtle.end_fill()填充完成;turtle.hideturtle()隐藏箭头显示;turtle.showturtle()与hideturtle()函数对应

(3) 全局控制命令

命令说明turtle.clear()清空turtle窗口,但是turtle的位置和状态不会改变turtle.reset()清空窗口,重置turtle状态为起始状态turtle.undo()撤销上一个turtle动作turtle.isvisible()返回当前turtle是否可见stamp()复制当前图形turtle.write(s[,font=("font-name",font_size,"font_type")])写文本,s为文本内容,font是字体的参数,里面分别为字体名称,大小和类型;font为可选项, font的参数也是可选项

3. 命令详解

3.1 turtle.circle(radius, extent=None, steps=None)描述: 以给定半径画圆参数:radius(半径); 半径为正(负),表示圆心在画笔的左边(右边)画圆extent(弧度) (optional);steps (optional) (做半径为radius的圆的内切正多边形,多边形边数为steps)

举例:circle(50) # 整圆;circle(50,steps=3) # 三角形;circle(120, 180) # 半圆

4. 绘图举例

4.1 太阳花

python turtle绕原点旋转_每天一个Python小技巧,用Python 画个哆啦a梦,文末还有学习视频...

import turtle as timport time

t.color("red", "yellow")

t.speed(10)

t.begin_fill()for _ in range(50):

t.forward(200)

t.left(170)

end_fill()

time.sleep(1)

4.2 绘制小蟒蛇

python turtle绕原点旋转_每天一个Python小技巧,用Python 画个哆啦a梦,文末还有学习视频...

import turtledef drawSnake(rad, angle, len, neckrad):

for _ in range(len):

turtle.circle(rad, angle)

turtle.circle(-rad, angle)

turtle.circle(rad, angle/2)

turtle.forward(rad/2) # 直线前进

turtle.circle(neckrad, 180)

turtle.forward(rad/4)if __name__ == "__main__":

turtle.setup(1500, 1400, 0, 0)

turtle.pensize(30) # 画笔尺寸

turtle.pencolor("green")

turtle.seth(-40) # 前进的方向

drawSnake(70, 80, 2, 15)

4.3 绘制五角星

python turtle绕原点旋转_每天一个Python小技巧,用Python 画个哆啦a梦,文末还有学习视频...

import turtle import time

turtle.pensize(5)

turtle.pencolor("yellow")

turtle.fillcolor("red")

turtle.begin_fill()for _ in range(5):

turtle.forward(200)

turtle.right(144)

turtle.end_fill()

time.sleep(2)

turtle.penup()

turtle.goto(-150,-120)

turtle.color("violet")

turtle.write("Done", font=('Arial', 40, 'normal'))

time.sleep(1)

有了基础知识以后我们看下怎么画出多啦A梦

# !/usr/bin/env python3

from turtle import *

# 无轨迹跳跃

def my_goto(x, y):

penup()

goto(x, y)

pendown()

# 眼睛

def eyes():

fillcolor("#ffffff")

begin_fill()

tracer(False)

a = 2.5

for i in range(120):

if 0 <= i < 30 or 60 <= i < 90:

a -= 0.05

lt(3)

fd(a)

else:

a += 0.05

lt(3)

fd(a)

tracer(True)

end_fill()

# 胡须

def beard():

my_goto(-32, 135)

seth(165)

fd(60)

my_goto(-32, 125)

seth(180)

fd(60)

my_goto(-32, 115)

seth(193)

fd(60)

my_goto(37, 135)

seth(15)

fd(60)

my_goto(37, 125)

seth(0)

fd(60)

my_goto(37, 115)

seth(-13)

fd(60)

# 嘴巴

def mouth():

my_goto(5, 148)

seth(270)

fd(100)

seth(0)

circle(120, 50)

seth(230)

circle(-120, 100)

# 围巾

def scarf():

fillcolor('#e70010')

begin_fill()

seth(0)

fd(200)

circle(-5, 90)

fd(10)

circle(-5, 90)

fd(207)

circle(-5, 90)

fd(10)

circle(-5, 90)

end_fill()

# 鼻子

def nose():

my_goto(-10, 158)

seth(315)

fillcolor('#e70010')

begin_fill()

circle(20)

end_fill()

# 黑眼睛

def black_eyes():

seth(0)

my_goto(-20, 195)

fillcolor('#000000')

begin_fill()

circle(13)

end_fill()

pensize(6)

my_goto(20, 205)

seth(75)

circle(-10, 150)

pensize(3)

my_goto(-17, 200)

seth(0)

fillcolor('#ffffff')

begin_fill()

circle(5)

end_fill()

my_goto(0, 0)

# 脸

def face():

fd(183)

lt(45)

fillcolor('#ffffff')

begin_fill()

circle(120, 100)

seth(180)

# print(pos())

fd(121)

pendown()

seth(215)

circle(120, 100)

end_fill()

my_goto(63.56, 218.24)

seth(90)

eyes()

seth(180)

penup()

fd(60)

pendown()

seth(90)

eyes()

penup()

seth(180)

fd(64)

# 头型

def head():

penup()

circle(150, 40)

pendown()

fillcolor('#00a0de')

begin_fill()

circle(150, 280)

end_fill()

# 画哆啦A梦

def Doraemon():

# 头部

head()

# 围脖

scarf()

# 脸

face()

# 红鼻子

nose()

# 嘴巴

mouth()

# 胡须

beard()

# 身体

my_goto(0, 0)

seth(0)

penup()

circle(150, 50)

pendown()

seth(30)

fd(40)

seth(70)

circle(-30, 270)

fillcolor('#00a0de')

begin_fill()

seth(230)

fd(80)

seth(90)

circle(1000, 1)

seth(-89)

circle(-1000, 10)

# print(pos())

seth(180)

fd(70)

seth(90)

circle(30, 180)

seth(180)

fd(70)

# print(pos())

seth(100)

circle(-1000, 9)

seth(-86)

circle(1000, 2)

seth(230)

fd(40)

# print(pos())

circle(-30, 230)

seth(45)

fd(81)

seth(0)

fd(203)

circle(5, 90)

fd(10)

circle(5, 90)

fd(7)

seth(40)

circle(150, 10)

seth(30)

fd(40)

end_fill()

# 左手

seth(70)

fillcolor('#ffffff')

begin_fill()

circle(-30)

end_fill()

# 脚

my_goto(103.74, -182.59)

seth(0)

fillcolor('#ffffff')

begin_fill()

fd(15)

circle(-15, 180)

fd(90)

circle(-15, 180)

fd(10)

end_fill()

my_goto(-96.26, -182.59)

seth(180)

fillcolor('#ffffff')

begin_fill()

fd(15)

circle(15, 180)

fd(90)

circle(15, 180)

fd(10)

end_fill()

# 右手

my_goto(-133.97, -91.81)

seth(50)

fillcolor('#ffffff')

begin_fill()

circle(30)

end_fill()

# 口袋

my_goto(-103.42, 15.09)

seth(0)

fd(38)

seth(230)

begin_fill()

circle(90, 260)

end_fill()

my_goto(5, -40)

seth(0)

fd(70)

seth(-90)

circle(-70, 180)

seth(0)

fd(70)

# 铃铛

my_goto(-103.42, 15.09)

fd(90)

seth(70)

fillcolor('#ffd200')

# print(pos())

begin_fill()

circle(-20)

end_fill()

seth(170)

fillcolor('#ffd200')

begin_fill()

circle(-2, 180)

seth(10)

circle(-100, 22)

circle(-2, 180)

seth(180 - 10)

circle(100, 22)

end_fill()

goto(-13.42, 15.09)

seth(250)

circle(20, 110)

seth(90)

fd(15)

dot(10)

my_goto(0, -150)

# 画眼睛

black_eyes()

if __name__ == '__main__':

screensize(800, 600, "#f0f0f0")

pensize(3) # 画笔宽度

speed(9) # 画笔速度

Doraemon()

my_goto(100, -300)

mainloop()

看下效果

python turtle绕原点旋转_每天一个Python小技巧,用Python 画个哆啦a梦,文末还有学习视频...

看看 小猪佩奇的实现方式:

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

"""

@Time: 2018/9/5

@Author: songhao

@微信公众号: zeropython

@File: peiqi.py

"""

from turtle import *

def nose(x, y): # 鼻子

pu()

goto(x, y)

pd()

seth(-30)

begin_fill()

a = 0.4

for i in range(120):

if 0 <= i < 30 or 60 <= i < 90:

a = a + 0.08

lt(3) # 向左转3度

fd(a) # 向前走a的步长

else:

a = a - 0.08

lt(3)

fd(a)

end_fill()

pu()

seth(90)

fd(25)

seth(0)

fd(10)

pd()

pencolor(255, 155, 192)

seth(10)

begin_fill()

circle(5)

color(160, 82, 45)

end_fill()

pu()

seth(0)

fd(20)

pd()

pencolor(255, 155, 192)

seth(10)

begin_fill()

circle(5)

color(160, 82, 45)

end_fill()

def head(x, y): # 头

color((255, 155, 192), "pink")

pu()

goto(x, y)

seth(0)

pd()

begin_fill()

seth(180)

circle(300, -30)

circle(100, -60)

circle(80, -100)

circle(150, -20)

circle(60, -95)

seth(161)

circle(-300, 15)

pu()

goto(-100, 100)

pd()

seth(-30)

a = 0.4

for i in range(60):

if 0 <= i < 30 or 60 <= i < 90:

a = a + 0.08

lt(3) # 向左转3度

fd(a) # 向前走a的步长

else:

a = a - 0.08

lt(3)

fd(a)

end_fill()

def ears(x, y): # 耳朵

color((255, 155, 192), "pink")

pu()

goto(x, y)

pd()

begin_fill()

seth(100)

circle(-50, 50)

circle(-10, 120)

circle(-50, 54)

end_fill()

pu()

seth(90)

fd(-12)

seth(0)

fd(30)

pd()

begin_fill()

seth(100)

circle(-50, 50)

circle(-10, 120)

circle(-50, 56)

end_fill()

def eyes(x, y): # 眼睛

color((255, 155, 192), "white")

pu()

seth(90)

fd(-20)

seth(0)

fd(-95)

pd()

begin_fill()

circle(15)

end_fill()

color("black")

pu()

seth(90)

fd(12)

seth(0)

fd(-3)

pd()

begin_fill()

circle(3)

end_fill()

color((255, 155, 192), "white")

pu()

seth(90)

fd(-25)

seth(0)

fd(40)

pd()

begin_fill()

circle(15)

end_fill()

color("black")

pu()

seth(90)

fd(12)

seth(0)

fd(-3)

pd()

begin_fill()

circle(3)

end_fill()

def cheek(x, y): # 腮

color((255, 155, 192))

pu()

goto(x, y)

pd()

seth(0)

begin_fill()

circle(30)

end_fill()

def mouth(x, y): # 嘴

color(239, 69, 19)

pu()

goto(x, y)

pd()

seth(-80)

circle(30, 40)

circle(40, 80)

def body(x, y): # 身体

color("red", (255, 99, 71))

pu()

goto(x, y)

pd()

begin_fill()

seth(-130)

circle(100, 10)

circle(300, 30)

seth(0)

fd(230)

seth(90)

circle(300, 30)

circle(100, 3)

color((255, 155, 192), (255, 100, 100))

seth(-135)

circle(-80, 63)

circle(-150, 24)

end_fill()

def hands(x, y): # 手

color((255, 155, 192))

pu()

goto(x, y)

pd()

seth(-160)

circle(300, 15)

pu()

seth(90)

fd(15)

seth(0)

fd(0)

pd()

seth(-10)

circle(-20, 90)

pu()

seth(90)

fd(30)

seth(0)

fd(237)

pd()

seth(-20)

circle(-300, 15)

pu()

seth(90)

fd(20)

seth(0)

fd(0)

pd()

seth(-170)

circle(20, 90)

def foot(x, y): # 脚

pensize(10)

color((240, 128, 128))

pu()

goto(x, y)

pd()

seth(-90)

fd(40)

seth(-180)

color("black")

pensize(15)

fd(20)

pensize(10)

color((240, 128, 128))

pu()

seth(90)

fd(40)

seth(0)

fd(90)

pd()

seth(-90)

fd(40)

seth(-180)

color("black")

pensize(15)

fd(20)

def tail(x, y): # 尾巴

pensize(4)

color((255, 155, 192))

pu()

goto(x, y)

pd()

seth(0)

circle(70, 20)

circle(10, 330)

circle(70, 30)

def setting(): # 参数设置

pensize(4)

hideturtle()

colormode(255)

color((255, 155, 192), "pink")

setup(840, 500)

speed(10)

def main():

setting() # 画布、画笔设置

nose(-100, 100) # 鼻子

head(-69, 167) # 头

ears(0, 160) # 耳朵

eyes(0, 140) # 眼睛

cheek(80, 10) # 腮

mouth(-20, 30) # 嘴

body(-32, -8) # 身体

hands(-56, -45) # 手

foot(2, -177) # 脚

tail(148, -155) # 尾巴

done() # 结束

main()

其实画图主要还是坐标和尺寸

Python入门学习视频

Python450集视频资料奉上,高清视频资料,400G资源,无偿分享,随着人工智能的兴起发展,Python技术的流行就是你步入高薪行业的必经之路

Python具有简单,易学,免费,开源,可移植,可嵌入,可拓展,面向对象,强大的库等优点

本视频是面向编程零基础的Python入门教程,内容涵盖了Python的基础知识和初步应用。以较轻快的风格,向零基础学习者介绍了一门时下比较流行的、并且用途比较广泛的编程语言。可以让大家快速入门了解~

需要的关注小编直接私信“学习”来领取哦

python turtle绕原点旋转_每天一个Python小技巧,用Python 画个哆啦a梦,文末还有学习视频...
python turtle绕原点旋转_每天一个Python小技巧,用Python 画个哆啦a梦,文末还有学习视频...

需要的关注小编直接私信“学习”来领取哦

886

继续阅读