{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "95b1d98d",
   "metadata": {},
   "source": [
    "Turtle画图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "a371d13b",
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import turtle as T"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d60e8979",
   "metadata": {},
   "source": [
    "## （1）画布\n",
    "画布cancas是绘图区域，可以设置它的大小和初始位置<br/>\n",
    "turtle.screensize(1000,600,'red')    大小的设置<br/>\n",
    "turtle.setup(width=0.5,height=0.75)  初始位置"
   ]
  },
  {
   "cell_type": "raw",
   "id": "189a50e2",
   "metadata": {},
   "source": [
    "（2）画笔\n",
    "\n",
    "（1）画笔运动的命令\n",
    "turtle.forward(a)   向当前画笔方向移动a像素长度\n",
    "turtle.backward(a)  向当前画笔相反方向移动a像素长度\n",
    "turtle.right(a)     顺时针移动\n",
    "aturtle.left(a)     逆时针移动\n",
    "aturtle.pendown()   移动时绘制图形\n",
    "turtle.goto(x,y)    将画笔移动到坐标为x,y的位置\n",
    "turtle.penup()      移动时不绘制图形，提起笔\n",
    "turtle.speed(a)     画笔绘制的速度范围\n",
    "turtle.circle()     画图，半径为正，表示圆心在画笔的左边画圈\n",
    "（2）画笔控制命令\n",
    "turtle.pensize(width)   绘制图形的宽度\n",
    "turtle.pencolor()       画笔的颜色\n",
    "turtle.fillcolor(a)     绘制图形的填充颜色\n",
    "turtle.color(a1,a2)     同时设置pencolor=a1,fillcolor=a2\n",
    "turtle.filling()        返回当前是否在填充状态\n",
    "turtle.begin_fill()     准备开始填充图形\n",
    "turtle.end_fill()       填充完成\n",
    "turtle.hideturtle()     隐藏箭头显示\n",
    "turtle.showturtle()     显示箭头\n",
    "（3）全局控制命令\n",
    "turtle.clear()   清空turtle窗口,但是turtle的位置和状态不会改变\n",
    "turtle.reset()   清空窗口，重置turtle状态为起始位置\n",
    "turtle.undo()    撤销上一个turtle动作"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "f2900561",
   "metadata": {},
   "outputs": [],
   "source": [
    "T.circle(50) # 整圆;"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "941c2737",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f548c20b",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f0ec6f53",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ec218895",
   "metadata": {},
   "outputs": [],
   "source": [
    "import sys   #导入sys模块\n",
    "import turtle #导入turtle模块\n",
    "def koch(t, order, size):\n",
    "        if order == 0:   #当n等于0时，绘制一条直线\n",
    "            t.forward(size)\n",
    "        else:          #否则，递归绘制n阶科赫曲线\n",
    "            koch(t, order-1, size/3)  #递归绘制一条阶数为n-1的科赫曲线，长度1/3\n",
    "            t.left(60.0)            #向左旋转60度\n",
    "            koch(t, order-1, size/3)  #递归绘制一条阶数为n-1的科赫曲线，长度1/3\n",
    "            t.right(120.0)  #t.left(-120.0) #向右旋转120度（或者向左旋转-120度）\n",
    "            koch(t, order-1, size/3)   #递归绘制一条阶数为n-1的科赫曲线，长度1/3\n",
    "            t.left(60.0)             #向左旋转60度\n",
    "            koch(t, order-1, size/3)   #递归绘制一条阶数为n-1的科赫曲线，长度1/3\n",
    "            \n",
    "def main():\n",
    "        n = int(sys.argv[1])   #n阶科赫曲线\n",
    "        step = 300          #步长\n",
    "        p = turtle.Turtle()    #创建海龟对象\n",
    "        koch(p, n, step)     #绘制n阶科赫曲线\n",
    "if __name__ == '__main__': \n",
    "    main()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "84f6d79b",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6d65f5f3",
   "metadata": {},
   "outputs": [],
   "source": [
    "import turtle as T\n",
    "import random\n",
    "import time\n",
    "\n",
    "# 绘制樱花\n",
    "def Tree(branch,t):\n",
    "    time.sleep(0.01)\n",
    "    if branch>3:\n",
    "        if 8<=branch<=12:\n",
    "            if random.randint(0,2)==0:\n",
    "                 # 上色\n",
    "                t.color('snow')\n",
    "            else:\n",
    "                 # 上色\n",
    "                t.color('lightcoral')\n",
    "                t.pensize(branch/3)\n",
    "        elif branch<8:\n",
    "            if random.randint(0,1)==0:\n",
    "                t.color('snow')\n",
    "            else:\n",
    "                t.color('lightcoral')\n",
    "            t.pensize(branch/2)\n",
    "        else:\n",
    "            t.color('sienna')\n",
    "            t.pensize(branch/2)\n",
    "            t.forward(branch)\n",
    "            a=1.5*random.random()\n",
    "            t.right(20*a)\n",
    "            b=1.5*random.random()\n",
    "            Tree(branch-10*b,t)\n",
    "            t.left(40*a)\n",
    "            Tree(branch-10*b,t)\n",
    "            t.right(20*a)\n",
    "            t.up()\n",
    "            t.backward(branch)\n",
    "            t.down()\n",
    "\n",
    "\n",
    "# 绘制花瓣\n",
    "def Petal(m,t):\n",
    "    for i in range(m):\n",
    "        a=200-400*random.random()\n",
    "        b=10-20*random.random()\n",
    "        t.up()\n",
    "        t.forward(b)\n",
    "        t.left(90)\n",
    "        t.forward(a)\n",
    "        t.down()\n",
    "        t.color('lightcoral')\n",
    "        t.circle(1)\n",
    "        t.up()\n",
    "        t.backward(a)\n",
    "        t.right(90)\n",
    "        t.backward(b)\n",
    "\n",
    "\n",
    "t=T.Turtle()\n",
    "w=T.Screen()\n",
    "t.hideturtle()  # 隐藏turtle\n",
    "t.getscreen().tracer(5,0)\n",
    "w.screensize(bg='wheat')\n",
    "t.left(90)\n",
    "t.up()\n",
    "t.backward(150)\n",
    "t.down()\n",
    "t.color('sienna')\n",
    "\n",
    "Tree(60,t)\n",
    "Petal(200,t)\n",
    "w.exitonclick()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "97eeae8a",
   "metadata": {},
   "outputs": [],
   "source": [
    "import turtle\n",
    "import time\n",
    "\n",
    "\n",
    "turtle.pensize(5)\n",
    "turtle.pencolor(\"yellow\")\n",
    "turtle.fillcolor(\"red\")\n",
    " \n",
    "turtle.begin_fill()\n",
    "\n",
    "for _ in range(5):\n",
    "    turtle.forward(200)\n",
    "    turtle.right(144)\n",
    "turtle.end_fill()\n",
    "time.sleep(2)\n",
    "\n",
    "turtle.penup()\n",
    "turtle.goto(-150,-120)\n",
    "turtle.color(\"violet\")\n",
    "turtle.write(\"Done\", font=('Arial', 40, 'normal'))\n",
    "time.sleep(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "369f58ef",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python [conda env:py_36] *",
   "language": "python",
   "name": "conda-env-py_36-py"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.13"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": false,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
