海龟画图
显示屏分辨率为320*240,海龟画图画布原点为显示屏中心点
应用编程接口说明
'''
导入 turtle 模块
'''
from openaie import turtle
'''
方法:放下画笔(移动画笔绘图)
'''
turtle.pendown()
'''
方法:抬起画笔(移动画笔不绘图)
'''
turtle.pendup()
'''
方法:设置画笔颜色
参数:r,g,b 取值范围:0~255
'''
turtle.pencolor(r,g,b)
'''
方法:设置画笔大小
参数:width
'''
turtle.pensize(width)
'''
方法:清除绘图
'''
turtle.clear()
'''
方法:复位,回到初始状态
'''
turtle.reset()
'''
方法:移动画笔到指定位置
参数:x
参数:y
'''
turtle.goto(x,y)
'''
方法:顺时针方向旋转指定角度
参数:angle
'''
turtle.right(angle)
'''
方法:逆时针方向旋转指定角度
参数:angle
'''
turtle.left(angle)
'''
方法:向前移动
参数:step — 步进值
'''
turtle.forward(step)
'''
方法:向后移动
参数:step — 步进值
'''
turtle.backward(step)
'''
方法:设置画笔坐标x
参数:x
'''
turtle.setx(x)
'''
方法:设置画笔坐标y
参数:y
'''
turtle.sety(y)
'''
方法:写文本
参数:text — 文本内容
'''
turtle.write(text)
'''
方法:读取画笔当前位置(x, y)
返回:x, y
'''
turtle.position()
'''
方法:返回画笔坐标x
返回:x
'''
turtle.xcor()
'''
方法:返回画笔坐标y
返回:y
'''
turtle.ycor()
'''
方法:回到原点
'''
turtle.home()
'''
方法:返回画笔位置到坐标(x, y)的距离
参数:x 水平位置
参数:y 垂直位置
返回:两点距离
'''
turtle.distance(x, y)
'''
方法:返回画笔位置与位置(x, y)的夹角
参数:x 水平位置
参数:y 垂直位置
返回:夹角
'''
turtle.towards(x, y)
'''
方法:返回画笔当前方向
返回:
'''
turtle.heading()
'''
方法:
'''
'''
方法:
'''
'''
方法:
'''
画太阳花
import time
from openaie import turtle # 导入 turtle 模块
turtle.clear(color=(0,0,0)) # 设置背景为黑色
turtle.penup() # 抬起画笔
turtle.goto(-100, -8) # 移动画笔到位置(-100, -8)
turtle.pendown() # 放下画笔,开始绘图
turtle.pencolor(255,255,0) # 设置画笔颜色为黄色
for i in range(50):
turtle.forward(200) # 向前移动 200
time.sleep_ms(100)
turtle.left(170) # 逆时针方向旋转 170°
画五角星
正五边形的内角为(n-2)*180/n = (5-2)*180/5 = 108°,五角星内角为36°
import math, time
from openaie import turtle
length = 160
turtle.clear(color=(0,0,0)) # 设置背景为黑色
turtle.pensize(3) # 设置画笔大小为3
turtle.pencolor(255,255,0) # 设置画笔颜色为黄色
turtle.penup()
# 根据五角星边长 length 计算画笔起始位置
turtle.goto(-(length*math.cos(math.radians(36))-length/2), -length*math.sin(math.radians(72))/2)
turtle.pendown()
turtle.left(36) # 逆时针旋转36°
for i in range(5):
turtle.forward(length)
turtle.left(144)
time.sleep_ms(500)
画正多边形
import time
from openaie import turtle
NUM = 6 # 边数
L = 50 # 边长
interior_angle = (NUM-2)*180/NUM # 计算多边形内角
turtle.clear(color=(0,0,0))
turtle.penup()
turtle.goto(-25,-50)
turtle.pendown()
turtle.pensize(3)
turtle.pencolor(0,0,255)
for i in range(NUM):
turtle.forward(L)
turtle.left(180-interior_angle)
time.sleep_ms(300)
画树
树的颜色随机变化
from openaie import turtle
import random
def draw_colorful_tree(branch_len):
r = random.randint(0, 255) # 生成 0~255 的随机数
g = random.randint(0, 255)
b = random.randint(0, 255)
turtle.pencolor(r, g, b) # 根据随机数设置画笔颜色
if branch_len>5:
turtle.forward(branch_len)
turtle.right(20)
draw_colorful_tree(branch_len-15)
turtle.left(40)
draw_colorful_tree(branch_len-10)
turtle.right(20)
turtle.backward(branch_len)
turtle.clear(color=(0,0,0))
while True:
turtle.reset()
turtle.left(90)
turtle.penup()
turtle.pensize(3)
turtle.backward(120)
turtle.pendown()
draw_colorful_tree(70)
绘制科赫雪花
按键切换科赫雪花阶数
from openaie import turtle, button1, button2
import time, random
def draw_koch(size, n):
if n==0:
turtle.forward(size)
else:
for angle in [0, 60, -120, 60]:
turtle.left(angle)
draw_koch(size/3, n-1)
def koch_curve(n):
turtle.clear(color=(0,0,0))
turtle.pensize(1)
turtle.penup()
turtle.goto(-100, 60)
r = random.randint(0, 255)
g = random.randint(0, 255)
b = random.randint(0, 255)
turtle.pencolor(r, g, b)
turtle.pendown()
level = n # 科赫雪花阶数
draw_koch(200, level)
turtle.right(120)
draw_koch(200, level)
turtle.right(120)
draw_koch(200, level)
num = 1
koch_curve(num)
while (True):
if button1.is_press(): # 检测到按键按下
time.sleep_ms(10) # 延时消抖
if button1.is_press():
num += 1
if num > 4:
num = 1
koch_curve(num)
while (button1.is_press()) : # 等待按键释放
pass
if button2.is_press(): # 检测到按键按下
time.sleep_ms(10)
if button2.is_press():
num -= 1
if num < 1:
num = 4
koch_curve(num)
while (button2.is_press()) : # 等待按键释放
pass