快捷搜索:  汽车  科技

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()

python 海龟绘图简单实例(python模块之海龟绘图实践)(1)

画动态球

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)

python 海龟绘图简单实例(python模块之海龟绘图实践)(2)

总结

turtle绘图需要一个好的想法和规划,提前把图画的坐标、方向规划出来,然后进行绘制,会画得飞快,家里有小朋友的同学们,学起来,可以跟小朋友一起愉快的玩耍!

python 海龟绘图简单实例(python模块之海龟绘图实践)(3)

猜您喜欢: