查看: 5695|回复: 0

小朋友也可以玩的Python艺术——“孔雀开屏”篇

[复制链接]
  • TA的每日心情

    2020-3-6 09:52
  • 签到天数: 13 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2019-2-2 14:14:06 | 显示全部楼层 |阅读模式
    分享到:
    1.jpg

    本文用Python实现一个“孔雀开屏”的效果,Python也可以这么玩。下面是源码,注释里面的是不同画面的执行代码。
    1. from turtle import *
    2. from random import *
    3. from math import *
    4. myColor=['green', 'yellow','red','purple', 'blue','green', 'orange', 'blue']  #孔雀每环颜色
    5. myR=[180,130,90,60,40,30,20,10]  # 孔雀每环半径
    6. myRb=[60, 50,40,30,25,20,15,10]
    7.    
    8. def init():  #初始化
    9.     screensize(500,500)
    10.     speed(0)
    11.     penup()
    12. def drawcircle(c,r): # 画圆圈
    13.     fillcolor(c)
    14.     begin_fill()
    15.     circle(r)
    16.     end_fill()
    17. def peacock(): # 画孔雀
    18.     pendown()
    19.     for i in range(8):
    20.         drawcircle(myColor[i],myR[i])
    21.     penup()
    22. def controlR(x):#调整半径比例
    23.     for i in range(len(myR)):
    24.         myR[i]=myR[i]*x
    25. def run(n,bigR):  #最终运行函数,bigR为组合的大图形半径
    26. #注意:right()left()函数按角度计算,三角函数按照弧度计算
    27.     angle=2*pi/n
    28.     right(90+360/n)
    29.     for i in range(n):
    30.         x=cos(angle*i)*bigR
    31.         y=sin(angle*i)*bigR
    32.         goto(x,y)
    33.         left(360/n)
    34.         peacock()

    35. def run2(n,bigR):  #与run()区别:这里是半圆
    36.     angle=pi/n
    37.     right(90+180/n)
    38.     for i in range(n):
    39.         x=cos(angle*i)*bigR
    40.         y=sin(angle*i)*bigR
    41.         goto(x,y)
    42.         left(180/n)
    43.         peacock()
    44. def run2(n,bigR,scale):  #最终运行函数,bigR为组合的大图形半径,scale代表弧度与2pi的比例
    45. #注意:right()left()函数按角度计算,三角函数按照弧度计算
    46.     angle=2*pi/n*scale
    47.     right(90+360/n*scale)
    48.     for i in range(n):
    49.         x=cos(angle*i)*bigR
    50.         y=sin(angle*i)*bigR
    51.         goto(x,y)
    52.         left(360/n*scale)
    53.         peacock()

    54. '''
    55. #执行效果1
    56. init()
    57. goto(0,-160)
    58. peacock()
    59. controlR(0.4)
    60. run(10,200)

    61. #执行效果2
    62. init()
    63. write('PEACOCK',True, align="center",font=('Arial',30,'normal'))
    64. controlR(0.5)
    65. run(8,160)


    66. #执行效果3
    67. init()
    68. controlR(0.1)
    69. run(10,50)
    70. init()
    71. controlR(4)
    72. left(150)
    73. run(10,150)
    74. goto(0,-350)
    75. write('PEACOCK',True, align="center",font=('Arial',30,'normal'))
    76. '''
    77. #执行效果4
    78. init()
    79. goto(0,-200)
    80. peacock()
    81. controlR(0.4)
    82. run2(10,200,0.55)
    83. goto(0,-320)
    84. write('PEACOCK',True, align="center",font=('Arial',30,'normal'))
    复制代码


    效果一
    2.jpg

    代码如下:
    1. #执行效果1
    2. init()
    3. goto(0,-160)
    4. peacock()
    5. controlR(0.4)
    6. run(10,200)
    复制代码


    效果二
    3.jpg

    代码如下:
    1. #执行效果2
    2. init()
    3. write('PEACOCK',True, align="center",font=('Arial',30,'normal'))
    4. controlR(0.5)
    5. run(8,160)
    复制代码


    效果三
    4.jpg
    代码如下:
    1. #执行效果3
    2. init()
    3. controlR(0.1)
    4. run(10,50)
    5. init()
    6. controlR(4)
    7. left(150)
    8. run(10,150)
    9. goto(0,-350)
    10. write('PEACOCK',True, align="center",font=('Arial',30,'normal'))
    复制代码


    效果四
    5.jpg
    代码如下:
    1. #执行效果4
    2. init()
    3. goto(0,-200)
    4. peacock()
    5. controlR(0.4)
    6. run2(10,200,0.55)
    7. goto(0,-320)
    8. write('PEACOCK',True, align="center",font=('Arial',30,'normal'))
    复制代码



    作者:一石匠人
    來源:简书

    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-4-19 12:07 , Processed in 0.114335 second(s), 15 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.