python 海龟绘图简单实例(python模块之海龟绘图实践)
python 海龟绘图简单实例(python模块之海龟绘图实践)
学习turtle模块,也绘制了些简单的图形,就感觉画图原理以及方法都比较简单,但是自己动手画的时候,一是没有头绪,二是每画一个图形就需要计算一次坐标位置,比较烦!无奈,搜索了一把,找到二个实例,感觉比较好,分享出来!
代码示例- 画太极图
from turtle import *
def draw_taiji():
# 画太极
radius = 100 # 半径为100
color("black" "black") # 画线颜色黑色,填充颜色黑色
begin_fill() # 开始填充
circle(radius / 2 180) # 逆时针画圈,半径为50 180°
circle(radius 180) # 逆时针画圈,半径为100 180°
left(180) # 转向180°
circle(-radius / 2 180) # 顺时针画圈,半径50 180°
end_fill() # 填充结束
# 移动到画太极图黑色的小圈位置,开始画小白圈
left(90) # 左转向90°,海龟头垂直水平线向上
penup() # 提笔,不留痕迹
forward(radius * 0.35) # 向前,半径的0.35=35像素
right(90) # 右转向90°,海龟头与右侧水平线同向
pendown() # 落笔,开始画线
# 开始画太极图黑色部分的小白圈
color("white" "white") # 画线颜色为白色,填充颜色为白色
begin_fill() # 开始填充
circle(radius * 0.15) # 逆时针画圈,半径的0.15=15像素(35 15 15 35=100)
end_fill() # 填充结束
left(90) # 左转向90°
penup() # 提笔,不留痕迹
backward(radius * 0.7) # 后退往下走,为半径的0.7=70,此时海龟头朝上与水平垂直
pendown() # 落笔,开始留下痕迹
left(90) # 左转90°,此时海龟头与左侧水平同向
# 开始画太极图白色部分里的小黑圈
color("black" "black") # 画线颜色为黑色,填充为黑色
begin_fill() # 开始填充
circle(radius * 0.15) # 开始逆时针画圈,半径的0.15=15个像素
end_fill() # 填充完毕
right(90) # 再右转90°,此时海龟头垂直水平线向上
penup() # 提笔,不留痕迹
backward(radius * 0.65) # 后退为半径的0.65=65个像素,往下到达太极图黑色半圈的底点处
right(90) # 右转90°,海龟头与右侧水平线同向
pendown() # 落笔,开始留下痕迹
circle(radius 180) # 逆时针画圈,半径100 180°,画太极图的白色部分的大圈
hideturtle() # 隐藏笔头hideturtle
turtle.done()
画动态球
def draw_boll():
# 画动态球
# 初始不更新画面
turtle.tracer(0)
# 地板墙
wall = turtle.Pen()
wall.pencolor('red')
wall.pensize(10)
wall.hideturtle() # 隐藏海龟图形
wall.penup()
wall.goto(-300 -200)
wall.pendown()
wall.forward(600)
# 小球
R = 15
ball = turtle.Turtle('circle') # 设置图标为球
ball.shapesize(R / 10) # 设置球/形状的大小
ball.penup()
pos_x pos_y = [100 100]
pos_x pos_y = ball.pos()
ball.goto(pos_x pos_y)
wall_x wall_y = wall.pos() # 地板墙的位置
# 球参数
FPS = 60 # 每秒60帧
G = 0.03 # 模拟重力加速度
DRAG = 0.9956 # 阻力
v_y = 1 # 初始速度
while True:
# 清除印章
ball.clearstamps()
v_y = G # 模拟重力加速度
if pos_y - R - 10 < wall_y: # 撞地面
v_y *= -1
pos_x pos_y = pos_x pos_y - v_y
ball.goto(pos_x pos_y)
v_y = v_y * DRAG
# 通过印章显示球
ball.stamp()
# 更新画面信息
turtle.update()
time.sleep(1 / FPS)
turtle绘图需要一个好的想法和规划,提前把图画的坐标、方向规划出来,然后进行绘制,会画得飞快,家里有小朋友的同学们,学起来,可以跟小朋友一起愉快的玩耍!