zoukankan      html  css  js  c++  java
  • 使用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

  • 相关阅读:
    Java实现 计蒜客 拯救行动
    Java实现 计蒜客 拯救行动
    Java实现 LeetCode 174 地下城游戏
    Java实现 LeetCode 174 地下城游戏
    Java实现 LeetCode 174 地下城游戏
    Java实现 LeetCode 173 二叉搜索树迭代器
    Java实现 LeetCode 173 二叉搜索树迭代器
    Visual Studio的SDK配置
    怎样使用CMenu类
    mfc menu用法一
  • 原文地址:https://www.cnblogs.com/kusy/p/9513103.html
Copyright © 2011-2022 走看看