使用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

 

转载于:https://www.cnblogs.com/kusy/p/9513103.html

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python turtle是一个基于Python的图形库,它可以让我们通过编写Python代码实现简单的图形绘制。关于如何用turtle建筑,下面是一个简单的示例代码,你可以参考这个代码来了解如何使用Python turtle库进行建筑绘制。 ```python import turtle # 设置布大小和笔粗细 turtle.setup(800, 600) turtle.pensize(3) # 绘制建筑 turtle.penup() turtle.goto(-200, -150) turtle.pendown() turtle.fillcolor("gray") turtle.begin_fill() turtle.goto(-200, 50) turtle.goto(200, 50) turtle.goto(200, -150) turtle.goto(-200, -150) turtle.end_fill() # 绘制窗户 turtle.penup() turtle.goto(-150, -120) turtle.pendown() turtle.fillcolor("white") turtle.begin_fill() turtle.goto(-50, -120) turtle.goto(-50, -20) turtle.goto(-150, -20) turtle.goto(-150, -120) turtle.end_fill() turtle.penup() turtle.goto(50, -120) turtle.pendown() turtle.fillcolor("white") turtle.begin_fill() turtle.goto(150, -120) turtle.goto(150, -20) turtle.goto(50, -20) turtle.goto(50, -120) turtle.end_fill() # 绘制门 turtle.penup() turtle.goto(-80, -150) turtle.pendown() turtle.fillcolor("brown") turtle.begin_fill() turtle.goto(-80, -50) turtle.goto(80, -50) turtle.goto(80, -150) turtle.goto(-80, -150) turtle.end_fill() # 绘制屋顶 turtle.penup() turtle.goto(-200, 50) turtle.pendown() turtle.fillcolor("red") turtle.begin_fill() turtle.goto(0, 150) turtle.goto(200, 50) turtle.goto(-200, 50) turtle.end_fill() # 隐藏turtle.hideturtle() # 等待窗口关闭 turtle.done() ``` 上述代码绘制了一个简单的房屋建筑,其中用到了Python turtle库的基本命令,包括`penup()`、`pendown()`、`goto()`、`fillcolor()`等等。你可以根据这个代码学习Python turtle库的使用,并通过调整参数和添加新的绘图命令来实现更加复杂的建筑绘制。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值