系列文章
目录
写在前面
Python绘制篮球王子的完整代码。
完整代码
import turtle
from turtle import *
from math import *
turtle.setup(1.0, 1.0)
turtle.Turtle().screen.delay(0) # 如需慢慢画,删除本行即可
turtle.title('篮球王子')
def ty_c(x,y,sita,a,b,p,q,c):
fillcolor(c)
si=2*pi/100
penup()
goto(x+a*cos(sita),y+a*sin(sita))
pendown()
t=0
for i in range(201):
if i*si+sita<=p:
penup()
goto(x+a*cos(i*si)*cos(sita)-b*sin(i*si)*sin(sita)\
,y+a*cos(i*si)*sin(sita)+b*sin(i*si)*cos(sita))
pendown()
elif p<=i*si+sita<=q+2*pi/100:
if t==0:
begin_fill()
t=1
goto(x+a*cos(i*si)*cos(sita)-b*sin(i*si)*sin(sita)\
,y+a*cos(i*si)*sin(sita)+b*sin(i*si)*cos(sita))
end_fill()
#高级椭圆方程
def ty(x,y,sita,a,b,p,q):
si=2*pi/100
penup()
goto(x+a*cos(sita),y+a*sin(sita))
pendown()
for i in range(201):
if i*si+sita<p:
penup()
goto(x+a*cos(i*si)*cos(sita)-b*sin(i*si)*sin(sita)\
,y+a*cos(i*si)*sin(sita)+b*sin(i*si)*cos(sita))
pendown()
elif p<=i*si+sita<=q+2*pi/100:
goto(x+a*cos(i*si)*cos(sita)-b*sin(i*si)*sin(sita)\
,y+a*cos(i*si)*sin(sita)+b*sin(i*si)*cos(sita))
speed(0)
hideturtle()
#篮球
pensize(10)
pencolor('black')
ty_c(350,-267,0,161,161,0,2*pi,'#ff9900')
ty(350,-267+161+50,0,161,161,7*pi/6+pi/12,11*pi/6-pi/12)
ty(350,-267-161-50,0,161,161,pi/6+pi/12,5*pi/6-pi/12)
ty(350,-267+161+330,0,500,500,8.5*pi/6,9.5*pi/6)
#脸
pensize(20)
ty_c(0,0,0,657/2,576/2,0,2*pi,'#ffcc00')
#眼睛
pensize(22)
ty_c(55,52,0,106,104,0,2*pi,'white')
ty_c(-165,60,0,101,99,0,2*pi,'white')
pensize(20)
ty_c(4,79,0,14,14,0,2*pi,'black')
ty_c(-201,80,0,14,14,0,2*pi,'black')
#嘴巴
pensize(12)
ty_c(-66,-76,0,102,62,0,2*pi,'#ff6600')
penup()
goto(-155,-50)
pendown()
goto(-134,-64)
goto(-115,-74)
goto(-90,-82)
goto(-67,-86)
goto(-47,-85)
goto(-25,-82)
goto(0,-77)
goto(15,-66)
goto(25,-55)
#腮红
pensize(1)
pencolor('red')
ty_c(-256,-90,15*pi/180,49,66,0,2*pi+15*pi/180,'red')
ty_c(201,-105,0,73,75,0,2*pi,'red')
#领口
color('black','black')
pensize(10)
penup()
goto(-275,-227)
pendown()
begin_fill()
goto(-241,-209)
goto(-189,-233)
goto(-166,-260)
goto(-127,-272)
goto(-88,-252)
goto(-49,-233)
goto(-19,-227)
goto(51,-237)
goto(108,-242)
goto(168,-242)
goto(210,-233)
goto(250,-206)
goto(252,-254)
goto(216,-269)
goto(-13,-353)
goto(-65,-362)
goto(-109,-356)
goto(-178,-317)
goto(-214,-296)
goto(-246,-266)
goto(-272,-245)
goto(-275,-227)
end_fill()
#衣服
penup()
goto(-244,-287)
pendown()
begin_fill()
goto(-269,-314)
goto(-310,-405)
goto(-304,-410)
goto(-21,-416)
goto(317,-410)
goto(331,-398)
goto(323,-381)
goto(319,-356)
goto(315,-320)
goto(275,-266)
goto(263,-257)
pensize(15)
pencolor('#c0c0c0')
goto(252,-254)
goto(216,-269)
goto(-13,-353)
pensize(13)
goto(-65,-362)
goto(-109,-356)
pensize(10)
goto(-178,-317)
goto(-214,-296)
goto(-246,-284)
end_fill()
#肩带
penup()
goto(-206,-310)
pendown()
pensize(30)
goto(-183,-363)
goto(-180,-384)
goto(-184,-414)
penup()
goto(229,-285)
pendown()
goto(203,-360)
pensize(34)
goto(190,-415)
penup()
goto(-115,-360)
pendown()
pensize(8)
goto(-96,-411)
goto(-75,-413)
goto(18,-371)
goto(69,-341)
goto(105,-325)
pensize(12)
goto(177,-297)
#中分
pencolor('#808080')
pensize(1)
penup()
goto(67,393)
pendown()
fillcolor('#808080')
begin_fill()
goto(43,+419)
goto(13,+431)
goto(-96,+426)
goto(-156,+402)
goto(-239,+336)
goto(-277,+300)
goto(-307,+263)
goto(-372,+153)
goto(-383,+101)
goto(-373,+57)
goto(-339,+38)
goto(-298,+40)
goto(-278,+61)
goto(-236,+74)
goto(-176,+103)
goto(-163,+128)
goto(-135,+224)
goto(-95,+265)
goto(-64,+271)
goto(-30,+253)
goto(22,+269)
goto(61,268)
goto(75,202)
goto(93,132)
goto(108,71)
goto(136,31)
goto(171,4)
goto(236,-10)
goto(277,-10)
goto(323,-25)
goto(363,-61)
goto(404,-35)
goto(423,14)
goto(453,71)
goto(457,120)
goto(441,170)
goto(398,227)
goto(331,285)
goto(283,323)
goto(232,360)
goto(168,396)
goto(122,416)
goto(87,406)
goto(67,393)
end_fill()
pencolor('black')
pensize(4)
goto(-30,+253)
done()
代码分析
这段代码使用Python的turtle
模块来绘制一个卡通风格的人物图像。turtle
是一个简单的绘图库,允许用户通过编程控制一个“turtle”(海龟)在屏幕上移动并绘制图形。
1. 导入与设置:
- 导入了
turtle
模块,并从turtle
模块中导入所有内容以便简化调用。 - 设置了画布大小为全屏,并关闭了绘制延迟,使得图形绘制得更快。
- 设置窗口标题为'篮球王子'。
2. 定义函数:
ty_c
和ty
函数用于绘制椭圆或部分椭圆,并且ty_c
可以填充颜色。它们都接受多个参数,如中心点坐标、旋转角度、长轴和短轴长度、开始和结束的角度等。- 这些函数使用了参数化的椭圆方程来计算椭圆上的点,并根据指定的角度范围决定是否绘制这些点。
3. 绘制篮球:
- 使用
ty_c
函数绘制了一个橙色的篮球,并使用ty
函数绘制了篮球上的线条。
4. 绘制脸部特征:
- 使用
ty_c
函数绘制了一个黄色的脸部轮廓。 - 绘制了白色的眼睛,并在眼睛内添加了黑色的眼珠。
- 绘制了橙色的嘴巴,并通过一系列的
goto
命令绘制了嘴巴的具体形状。 - 添加了红色的腮红。
5. 绘制衣物:
- 使用
begin_fill
和end_fill
来绘制衣服的区域,包括领口和衣服主体。 - 通过改变
pencolor
和pensize
属性来改变线条的颜色和宽度。
6. 细节:
- 使用了
penup()
和pendown()
来控制是否绘制路径。 - 为了增加细节,还绘制了一些装饰性的元素,比如肩带和头发的中分线。
7. 完成绘制:
- 最后使用
done()
来显示绘制结果。
这个程序展示了如何利用turtle
的特性来创建复杂的图形,同时也展示了如何通过循环和条件语句来控制图形的绘制过程。整个代码逻辑清晰,层次分明,适合用来作为turtle
模块的进阶教程示例。
写在后面
我是一只有趣的兔子,感谢你的喜欢。
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » Python篮球王子
发表评论 取消回复