使用Python的turtle画小绵羊
今天学习使用turtle画图,本来想实现个3D效果,结果2D都画了半天,画圆被绕晕了
目标图片:
实现代码:
# -*- coding:utf-8 -*-
# __author__ :kusy
# __content__:文件说明
# __date__:2018/8/21 13:08
import turtle
import time
import math as m class Sheep(object): def __init__(self,xsize):
self.t = turtle.Turtle()
self.xsize = xsize
t = self.t
# 画笔设置
t.screen.screensize(canvwidth=1000,canvheight=500,bg='white')
t.pensize(2)
t.speed(10)
# t.hideturtle()
#初始化画笔位置
t.penup()
t.setpos(self.xsize,0)
t.pendown() # 设置画笔坐标
def setxy(self,x,y):
t = self.t
t.penup()
pos_x = t.position()[0]
pos_y = t.position()[1]
t.setpos(pos_x + x,pos_y + y)
t.pendown() def create_sheep(self):
t = self.t
# 羊头
self.setxy(-200,0)
t.fillcolor('black')
t.begin_fill()
t.circle(100)
t.end_fill() # 眼睛
# 眼白
print(t.position())
self.setxy(-20,120) t.fillcolor('white')
t.begin_fill()
t.seth(45)
t.circle(18,-280)
t.seth(45)
t.circle(-20,292)
t.end_fill()
# 眼珠
self.setxy(3,12)
t.fillcolor('black')
t.begin_fill()
t.seth(85)
t.circle(10)
t.seth(85)
t.circle(-10)
t.end_fill()
# 眼心
t.fillcolor('white')
t.begin_fill()
t.seth(85)
t.circle(3)
t.seth(85)
t.circle(-3)
t.end_fill() # 嘴
self.setxy(0,-100)
t.color('red')
t.seth(300)
t.forward(8)
self.setxy(-1, 3)
t.seth(0)
t.circle(80,60)
self.setxy(2, -2)
t.seth(145)
t.forward(8)
t.color('black') # 耳朵
self.setxy(-145,120)
p1 = t.position()
t.fillcolor('black')
t.begin_fill()
t.seth(0)
t.circle(-120,20)
p2 = t.position()
t.setpos(p1)
t.seth(60)
t.circle(-30,120)
t.goto(p2)
t.end_fill() # 身体
self.setxy(41,12)
t.seth(45)
t.circle(-150,100)
t.pensize(5)
t.seth(0)
t.circle(-120,30)
t.seth(60)
t.circle(-15,320)
t.seth(330)
t.circle(-80,180)
t.seth(210)
t.circle(-80,90) #4条腿
t.pensize(2)
for leg in range(4):
self.setxy(8+15*leg,0)
t.seth(270)
t.forward(80)
t.seth(0)
t.forward(8)
t.seth(90)
t.forward(80) #草
self.setxy(-200,-80)
p3 = t.position()
t.color('green')
t.fillcolor('green')
t.begin_fill()
t.seth(120)
t.forward(30)
t.seth(330)
t.forward(30)
t.seth(60)
t.forward(40)
t.seth(260)
t.forward(45)
t.setpos(p3)
t.end_fill() if __name__ == '__main__':
for x in (0,350):
sheep = Sheep(x)
sheep.create_sheep()
time.sleep(5)
实际效果(2只羊):
PS:circle函数使用记录
turtle.circle(radius, extent=None, steps=None)
描述: 以给定半径画圆
参数:
radius(半径); 半径为正(负),表示圆心在画笔的左边(右边)画圆
extent(弧度) (optional);
steps (optional) (做半径为radius的圆的内切正多边形,多边形边数为steps)
radius > 0,逆时针画圆
radius < 0,顺时针画圆
extent > 0,取正方向的圆
extent < 0,取反方向的圆
参考资料
https://ibaotu.com/sucai/187303.html
https://www.cnblogs.com/nowgood/p/turtle.html#_nav_6
https://www.cnblogs.com/yu-liang/p/9166003.html
https://blog.csdn.net/qq_33733970/article/details/80373247
https://www.jb51.net/article/130181.htm
https://www.jb51.net/article/139349.htm
使用Python的turtle画小绵羊的更多相关文章
- python运用turtle 画出汉诺塔搬运过程
python运用turtle 画出汉诺塔搬运过程 1.打开 IDLE 点击File-New File 新建立一个py文件 2.向py文件中输入如下代码 import turtle class Stac ...
- Python——用turtle画一个月饼
今天是中秋节,首先在这里祝大家中秋快乐!那么提到中秋,我们首先想到的当然是香甜的月饼,所以我今天就在这里画一个月饼送给大家. 那么 要用Python画图,我们必须掌握并运用Turtle库,这个可以自己 ...
- python之turtle画蚊香
原理:利用turtle绘制圆形,并使圆半径逐步增加 代码如下: import turtle turtle.pensize(30) for i in range(30): turtle.circle(i ...
- Python之turtle画同心圆和棋盘
画饼图 import turtle t = turtle.Pen() for i in range(5): t.penup() t.goto(0, -i*30) t.pendown() t.circl ...
- 用python的turtle画分形树
由于分形树具有对称性,自相似性,所以我们可以用递归来完成绘制.只要确定开始树枝长.每层树枝的减短长度和树枝分叉的角度,我们就可以把分形树画出来啦!! 代码如下: # -*- coding: utf-8 ...
- python 用turtle 画小猪佩奇
from turtle import * def nose(x,y):#鼻子 penup()#提起笔 goto(x,y)#定位 pendown()#落笔,开始画 setheading(-30)#将乌龟 ...
- 用python画小王八裤(turtle库)
一,采用Python语言如何画一朵玫瑰花 工具/原料 Python语言包 Win10 一. 准备 1. 打开界面: 打开python 2. 创建文件 二. 编程 1. 编写画图: from turtl ...
- *【Python】【demo实验31】【练习实例】【使用turtle画小猪佩奇】
如下图小猪佩奇: 要求使用turtle画小猪佩奇: 源码: # encoding=utf-8 # -*- coding: UTF-8 -*- # 使用turtle画小猪佩奇 from turtle i ...
- 【Python】【demo实验29】【练习实例】【使用turtle画五角星】
原题: 使用turtle画五角星: 我的代码: #!/usr/bin/python # encoding=utf-8 # -*- coding: UTF-8 -*- from turtle impor ...
随机推荐
- export default 和 export 的主要区别
export default 和 export 的主要区别 在于对应的import的区别:export 对应的 import 需要知道 export抛出的变量名或函数名 import{a,b}expo ...
- The difference between Virtual DOM and DOM
dom是结构化的文本信息的抽象,是结构化的文本信息在内存中的表示 是操作结构化文本信息的api. Follow: Follow React attacks us with the virtual DO ...
- linux 用户操作命令
今日思语:看到优秀的人还那么努力,你是否会眼馋~ linux系统上经常会对用户进行一些相关操作,像新增.修改.删除用户等操作. 1.新增用户 useradd 选项 用户 参数说明: • 选项: • - ...
- pipelinewise 基于singer 指南的的数据pipeline 工具
pipelinewise 是基于开源singer 指南开发的数据pipeline工具,与singer tap 以及target 兼容 支持的特性 内置的elt 特性 轻量级 支持多种复制方法,cdc( ...
- JAVA基础--MySQL(二)
数据库约束 1.基础限制 ① 单一表内字节量总和不能超过65535,null 占用一个字节空间 ② varchar存储255 以内字节占用一个字节表示长度,255以上自己则占用两个字节表示长度 ③ ...
- Spring整合MyBatis整合
1.导入所需要的jar依赖 !--MyBatis和Spring的整合包 由MyBatis提供--> <dependency> <groupId>org.mybatis&l ...
- python: isdigit int float 使用
>>> num1 = '2.0' >>> print num1.isdigit() False >>> num2 = ' >>> ...
- exception The absolute uri: [http://java.sun.com/jsp/jstl/core] cannot be resolved in either web.xml or the jar files deployed with this application
1.情景展示 eclipse,运行web项目时,报错信息如下: The absolute uri: [http://java.sun.com/jsp/jstl/core] cannot be ...
- 【深入学习linux】CentOS 7 最小化安装后程序必须安装的组件
centos平台编译环境使用如下指令 安装make: yum -y install gcc automake autoconf libtool make 安装g++: yum install gcc ...
- Redis禁用部分危险命令(keys/flushdb等)
在redis.conf文件[SECURITY]区域配置: 1.禁用命令: rename-command KEYS "" rename-command FLUSHALL " ...