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

  • 相关阅读:
    Fetch the result from result set
    Variable shadowing
    What is Servlet Container
    What is a servletcontext
    Inner Class
    Java中HashMap和TreeMap的区别深入理解
    枚举类
    (转载) 安卓开发学习笔记
    【C和C++】停车场系统
    【算法】常用的排序方法
  • 原文地址:https://www.cnblogs.com/kusy/p/9513103.html
Copyright © 2020-2023  润新知