easygraphics.turtle包

海龟作图包。

海龟作图是一个经典的儿童学习的编程工具。

在海龟作图中,你控制一个海龟在窗口上移动。海龟移动时留下的痕迹就是你画出的图形。

注意,在海龟作图中,原点(0,0)是绘图窗口的中心,Y轴朝上。

from easygraphics.turtle import *

def polyspi(side, angle, inc):
    while is_run():
        fd(side)
        rt(angle)
        side += inc

create_world(800, 600)
set_speed(100)
polyspi(0, 117, 5)
close_world()
../_images/infinite.png

函数列表

海龟世界设置

create_world(width, height) 创建一个海龟作图的世界。
close_world() 关闭海龟世界和绘图窗口
get_turtle() 获取当前的海龟。
get_turtle_world() 获取当前的海龟世界。
is_run() 检查图形系统是否在运行。
pause() 暂停程序,等待鼠标或者键盘按键。
set_immediate(immediate) 设置当海龟移动时,是否显示动画
set_pen_size(width, image) 设置指定图片的线宽(笔宽)。

海龟移动

back(distance) 让海龟沿着当前的朝向向后移动指定的距离。
backward(distance) 让海龟沿着当前的朝向向后移动指定的距离。
bk(distance) 让海龟沿着当前的朝向向后移动指定的距离。
facing(x, y) 转动海龟,朝向点(x,y)。
fd(distance) 让海龟顺着当前朝向移动指定的距离。
forward(distance) 让海龟顺着当前朝向移动指定的距离。
gotoxy(x, y) 移动海龟到点(x,y)。
get_heading() 获取海龟的朝向(角度)
get_x() 获取海龟当前位置的x坐标。
get_y() 获取海龟当前位置的y坐标。
home() 将海龟移动到原点(0,0),朝向向上。如果画笔处于落下状态,则会留下移动的痕迹。
is_out_of_window() 检查海龟是否到图形窗口外。
hide() 隐藏海龟。
left(degree) 让海龟向左(逆时针)转动“degree”度。
left_turn(degree) 让海龟向左(逆时针)转动“degree”度。
lt(degree) 让海龟向左(逆时针)转动“degree”度。
move_arc(radius, angle) 让海龟沿圆弧移动。
move_ellipse(radius_left, radius_top, angle) 让海龟沿椭圆弧移动。
right(degree) 让海龟向右(顺时针)转动“degree”度。
right_turn(degree) 让海龟向右(顺时针)转动“degree”度。
rt(degree) 让海龟向右(顺时针)转动“degree”度。
set_heading(angle) 设置海龟朝向指定的角度。
setxy(x, y) 将海龟的当前位置设置到点(x,y)。不会留下移动的痕迹。
set_speed(speed) 设置海龟的移动速度
turn_to(angle) 让海龟转动到朝向指定的角度。
show() 显示海龟。

画笔和屏幕设置

clear_screen() 从屏幕上清除所有已绘制的图形并重置海龟到起始状态。
cs() 从屏幕上清除所有已绘制的图形并重置海龟到起始状态。
begin_fill() 开始记录海龟的移动轨迹,用于填充。
end_fill() 填充从上一次begin_fill()开始,海龟移动的轨迹形成的封闭图形。
pd() 画笔落下(海龟移动时留下痕迹)。
pen_down() 画笔落下(海龟移动时留下痕迹)。
pen_up() 画笔抬起(海龟移动时不留痕迹)。
pu() 画笔抬起(海龟移动时不留痕迹)。

函数

easygraphics.turtle.create_world(width: int = 800, height: int = 600) → None

创建一个海龟作图的世界。

参数:
  • width – 绘图窗口的宽度
  • height – 绘图窗口的高度
easygraphics.turtle.close_world() → None

关闭海龟世界和绘图窗口

easygraphics.turtle.forward(distance: float)

让海龟顺着当前朝向移动指定的距离。

参数:distance – 要移动的距离
easygraphics.turtle.fd(distance: float)

让海龟顺着当前朝向移动指定的距离。

参数:distance – 要移动的距离
easygraphics.turtle.backward(distance: float)

让海龟沿着当前的朝向向后移动指定的距离。

参数:distance – 要移动的距离
easygraphics.turtle.back(distance: float)

让海龟沿着当前的朝向向后移动指定的距离。

参数:distance – 要移动的距离
easygraphics.turtle.bk(distance: float)

让海龟沿着当前的朝向向后移动指定的距离。

参数:distance – 要移动的距离
easygraphics.turtle.left_turn(degree: float)

让海龟向左(逆时针)转动“degree”度。

参数:degree – 要转动的角度
easygraphics.turtle.lt(degree: float)

让海龟向左(逆时针)转动“degree”度。

参数:degree – 要转动的角度
easygraphics.turtle.right_turn(degree: float)

让海龟向右(顺时针)转动“degree”度。

参数:degree – 要转动的角度
easygraphics.turtle.rt(degree: float)

让海龟向右(顺时针)转动“degree”度。

参数:degree – 要转动的角度
easygraphics.turtle.left(degree: float)

让海龟向左(逆时针)转动“degree”度。

参数:degree – 要转动的角度
easygraphics.turtle.right(degree: float)

让海龟向右(顺时针)转动“degree”度。

参数:degree – 要转动的角度
easygraphics.turtle.clear_screen()

从屏幕上清除所有已绘制的图形并重置海龟到起始状态。

easygraphics.turtle.cs()

从屏幕上清除所有已绘制的图形并重置海龟到起始状态。

easygraphics.turtle.gotoxy(x: float, y: float)

将海龟移动到点(x,y)。如果笔处于落下状态,则会留下痕迹。

参数:
  • x – 目标点的x坐标
  • y – 目标点的x坐标
easygraphics.turtle.home()

将海龟移动到原点(0,0),朝向向上。如果画笔处于落下状态,则会留下移动的痕迹。

easygraphics.turtle.turn_to(angle)

让海龟转动到朝向指定的角度。

参数:angle – 新的朝向角度。
easygraphics.turtle.facing(x: float, y: float)

转动海龟,朝向点(x,y)。

参数:
  • x – 目标点的x坐标
  • y – 目标点的y坐标
easygraphics.turtle.begin_fill()

开始记录海龟的移动轨迹,用于填充。

easygraphics.turtle.end_fill()

填充从上一次begin_fill()开始,海龟移动的轨迹形成的封闭图形。

easygraphics.turtle.setxy(x: float, y: float)

将海龟的当前位置设置到点(x,y)。不会留下移动的痕迹。

参数:
  • x – 目标点的x坐标
  • y – 目标点的y坐标值
easygraphics.turtle.set_heading(angle)

设置海龟朝向指定的角度。

参数:angle – 新的朝向角度。
easygraphics.turtle.move_arc(radius: float, angle: float = 360)

让海龟沿圆弧移动。

移动时,圆心在海龟左侧的radius单位处。也就是说,如果radius大于0,则圆心在海龟左侧;如果radius小于0,圆心在海龟右侧。

如果参数“angle”大于0,海龟向前绕圆心移动;如果“angle”小于0,海龟向后绕圆心移动。

  • 如果angle大于0且radius大于0,那么海龟向前移动,逆时针转向;
  • 如果angle大于0且radius小于0,那么海龟向前移动,顺时针转向;
  • 如果angle小于0且radius大于0,那么海龟向后移动,顺时针转向;
  • 如果angle小于0且radius小于0,那么海龟向后移动,逆时针转向;
参数:
  • radius – 弧的半径
  • angle – 海龟要移动多少角度
easygraphics.turtle.move_ellipse(radius_left: float, radius_top: float, angle: float = 360)

让海龟沿椭圆弧移动。

参数“radius_left”是椭圆沿垂直于海龟朝向方向上的轴的半径,可以是正也可以是负;参数“radius_top”是椭圆沿平行于海龟朝向方向上的轴的半径,必须是正.

椭圆圆心在海龟左侧“radius_left”个单位远。也就是说,如果radius_left > 0, 椭圆中心在海龟左侧;如果radius_left < 0, 椭圆中心在海龟右侧。

如果参数“angle”大于0,海龟向前绕圆心移动;如果“angle”小于0,海龟向后绕圆心移动。

  • 如果angle > 0且radius_left > 0,海龟向前移动,逆时针转向;
  • 如果angle > 0且radius_left < 0,海龟向前移动,顺时针转向;
  • 如果angle < 0 且radius_left > 0,海龟向后移动,顺时针转向。
  • 如果angle < 0且radius_left < 0,海龟向后移动,逆时针转向;
参数:
  • radius_left – 椭圆在垂直于海龟朝向方向上的半径
  • radius_top – 椭圆在平行于海龟朝向方向上的半径
  • angle – 海龟要移动多少角度
easygraphics.turtle.get_y() → float

获取海龟当前位置的y坐标。

返回:海龟当前位置的y坐标
easygraphics.turtle.get_x() → float

获取海龟当前位置的x坐标。

返回:海龟当前位置的x坐标。
easygraphics.turtle.get_heading() → float

获取海龟的朝向(角度)

返回:海龟的朝向(角度)
easygraphics.turtle.get_turtle() → easygraphics.turtle.turleclass.Turtle

获取当前的海龟。

返回:当前的海龟
easygraphics.turtle.get_turtle_world() → easygraphics.turtle.turleclass.TurtleWorld

获取当前的海龟世界。

返回:当前海龟世界
easygraphics.turtle.set_pen_size(width: float, image: easygraphics.image.Image = None)

设置指定图片的线宽(笔宽)。

它被用来画线或者轮廓线。

参数:
  • width – 线宽
  • image – 要设置线宽的目标图片。None表示使用缺省目标图片(见set_target()和get_target())。
easygraphics.turtle.set_immediate(immediate: bool)

设置当海龟移动时,是否显示动画

参数:immediate – True表示关闭动画(移动瞬间完成);False表示打开动画。
easygraphics.turtle.set_speed(speed)

设置海龟的移动速度

参数:speed – 新移动速度
easygraphics.turtle.pen_down()

画笔落下(海龟移动时留下痕迹)。

easygraphics.turtle.pen_up()

画笔抬起(海龟移动时不留痕迹)。

easygraphics.turtle.pu()

画笔抬起(海龟移动时不留痕迹)。

easygraphics.turtle.pd()

画笔落下(海龟移动时留下痕迹)。

easygraphics.turtle.hide()

隐藏海龟。

easygraphics.turtle.show()

显示海龟。

easygraphics.turtle.pause()

暂停程序,等待鼠标或者键盘按键。

>>> from easygraphics import *
>>> init_graph(800,600)
>>> pause()
>>> close_graph()
easygraphics.turtle.is_run() → bool

检查图形系统是否在运行。

返回:True表示图形系统正在运行
easygraphics.turtle.is_out_of_window() → bool

检查海龟是否到图形窗口外。

返回:True表示在图形窗口中;False表示不在。
class easygraphics.turtle.Turtle(world: easygraphics.turtle.turleclass.TurtleWorld)

海龟类。

BASE_STEP = 1
DEFAULT_ORENTATION = 90
back(distance: float)

让海龟沿着当前的朝向向后移动指定的距离。

参数:distance – 要移动的距离
backward(distance: float)

让海龟沿着当前的朝向向后移动指定的距离。

参数:distance – 要移动的距离
begin_fill()

开始记录海龟的移动轨迹,用于填充。

bk(distance: float)

让海龟沿着当前的朝向向后移动指定的距离。

参数:distance – 要移动的距离
cancle_fill()

取消填充。

close()

关闭和清理海龟。

static create_turtle_icon() → easygraphics.image.Image

创建缺省的海龟图标。

返回:海龟图标图片
end_fill()

填充从上一次begin_fill()开始,海龟移动的轨迹形成的封闭图形。

facing(x, y)

转动海龟,朝向点(x,y)。

参数:
  • x – 朝向目标点的x坐标
  • y – 朝向目标点的y坐标
fd(distance: float)

让海龟顺着当前朝向移动指定的距离。

参数:distance – 要移动的距离
forward(distance: float)

让海龟顺着当前朝向移动指定的距离。

参数:distance – 要移动的距离
get_heading() → float

获取海龟的朝向(角度)

返回:海龟的朝向(角度)
get_icon() → easygraphics.image.Image

获取海龟的图标图片

返回:图标图片
get_x() → float

获取海龟当前位置的x坐标。

返回:海龟当前位置的x坐标。
get_y() → float

获取海龟当前位置的y坐标。

返回:海龟当前位置的y坐标
gotoxy(x, y)

将海龟移动到点(x,y)。如果笔处于落下状态,则会留下痕迹。

参数:
  • x – 目标点的x坐标
  • y – 目标点的x坐标
hide()

隐藏海龟。

home()

将海龟移动到原点(0,0),朝向向上。如果画笔处于落下状态,则会留下移动的痕迹。

is_filling() → bool

检查是否正在记录海龟的移动轨迹(用于填充)

返回:
is_out_of_window() → bool

检查海龟是否到图形窗口外。

返回:True表示在图形窗口中;False表示不在。
is_show()

检查海龟是否处于显示状态。

返回:True表示显示海龟,False表示隐藏。
left(degree: float)

让海龟向左(逆时针)转动“degree”度。

参数:degree – 要转动的角度
left_turn(degree: float)

让海龟向左(逆时针)转动“degree”度。

参数:degree – 要转动的角度
lt(degree: float)

让海龟向左(逆时针)转动“degree”度。

参数:degree – 要转动的角度
move_arc(radius: float, angle: float = 360)

让海龟沿圆弧移动。

移动时,圆心在海龟左侧的radius单位处。也就是说,如果radius大于0,则圆心在海龟左侧;如果radius小于0,圆心在海龟右侧。

如果参数“angle”大于0,海龟向前绕圆心移动;如果“angle”小于0,海龟向后绕圆心移动。

  • 如果angle大于0且radius大于0,那么海龟向前移动,逆时针转向;
  • 如果angle大于0且radius小于0,那么海龟向前移动,顺时针转向;
  • 如果angle小于0且radius大于0,那么海龟向后移动,顺时针转向;
  • 如果angle小于0且radius小于0,那么海龟向后移动,逆时针转向;
参数:
  • radius – 弧的半径
  • angle – 海龟要移动多少角度
move_ellipse(radius_left: float, radius_top: float, angle: float = 360)

让海龟沿椭圆弧移动。

参数“radius_left”是椭圆沿垂直于海龟朝向方向上的轴的半径,可以是正也可以是负;参数“radius_top”是椭圆沿平行于海龟朝向方向上的轴的半径,必须是正.

椭圆圆心在海龟左侧“radius_left”个单位远。也就是说,如果radius_left > 0, 椭圆中心在海龟左侧;如果radius_left < 0, 椭圆中心在海龟右侧。

如果参数“angle”大于0,海龟向前绕圆心移动;如果“angle”小于0,海龟向后绕圆心移动。

  • 如果angle > 0且radius_left > 0,海龟向前移动,逆时针转向;
  • 如果angle > 0且radius_left < 0,海龟向前移动,顺时针转向;
  • 如果angle < 0 且radius_left > 0,海龟向后移动,顺时针转向。
  • 如果angle < 0且radius_left < 0,海龟向后移动,逆时针转向;
参数:
  • radius_left – 椭圆在垂直于海龟朝向方向上的半径
  • radius_top – 椭圆在平行于海龟朝向方向上的半径
  • angle – 海龟要移动多少角度
pd()

画笔落下(海龟移动时留下痕迹)。

pen_down()

画笔落下(海龟移动时留下痕迹)。

pen_up()

画笔抬起(海龟移动时不留痕迹)。

pu()

画笔抬起(海龟移动时不留痕迹)。

reset()

重置海龟状态。

right(degree: float)

让海龟向右(顺时针)转动“degree”度。

参数:degree – 要转动的角度
right_turn(degree: float)

让海龟向右(顺时针)转动“degree”度。

参数:degree – 要转动的角度
rt(degree: float)

让海龟向右(顺时针)转动“degree”度。

参数:degree – 要转动的角度
set_heading(angle)

设置海龟朝向指定的角度。

参数:angle – 新的朝向角度。
set_speed(speed: int)

设置海龟的移动速度

参数:speed – 新移动速度
setxy(x, y)

将海龟的当前位置设置到点(x,y)。不会留下移动的痕迹。

参数:
  • x – 目标点的x坐标
  • y – 目标点的y坐标值
show()

显示海龟。

turn_to(angle)

让海龟转动到朝向指定的角度。

参数:angle – 新的朝向角度。
class easygraphics.turtle.TurtleWorld(canvas: Optional[easygraphics.image.Image] = None)

海龟在一个世界里移动和绘画。这个类代表海龟世界。

在用完这个类的对象时,你要记得调用close()方法来关闭它。

注意,在缺省的海龟世界中,我们使用标准的平面直角坐标系,原点(0,0)位于屏幕中间,X轴从左向右,Y轴从下到上;正的角度表示逆时针旋转;负的角度鄙视顺时针旋转。
add_turtle(turtle: easygraphics.turtle.turleclass.Turtle)

将海龟放到世界中。

参数:turtle – 要放入的海龟
clear()

从屏幕上清除所有已绘制的图形并重置海龟到起始状态。

clear_screen()

从屏幕上清除所有已绘制的图形并重置海龟到起始状态。

close()

关闭海龟世界。

create_snap_shot() → easygraphics.image.Image

创建当前图像的一个快照。

返回:快照图片。
create_turtle()

在世界中创建一个新的海龟,将它放到原点(0,0)处。

如果参数x和y的值是None,那么海龟会被放到原点(0,0)处

返回:新创建的海龟对象。
cs()

从屏幕上清除所有已绘制的图形并重置海龟到起始状态。

get_height() → float

获取绘图窗口或图片的高度

返回:绘图窗口或图片的高度
get_width() → float

获取绘图窗口或图片的宽度

返回:绘图窗口或图片的宽度
get_world_image()

获取海龟世界的底图。

返回:海龟世界的底图。
is_immediate() → bool

检查海龟移动是否瞬间完成(没有动画效果)。

返回:True表示关闭动画(移动瞬间完成);False表示打开动画。
is_on_screen() → bool

检查世界是否绘制到图形窗口中。

返回:True表示绘制到图形窗口中;False表示不是。
is_running()
set_immediate(immediate: bool)

设置海龟移动时是否显示动画。

参数:immediate – True表示关闭动画(移动瞬间完成);False表示打开动画。
snap_shot_to_image(image, x=0, y=0)

创建当前世界的截屏,保存到指定图片中。

截屏内容会被保存到图片的(x,y)位置。

参数:
  • image – 要保存截屏内容的图片
  • x – 目标位置的x坐标
  • y – 目标位置的y坐标
easygraphics.turtle.easy_run(main_func: Callable, width=640, height=480)