UNPKG

@shlomil/turtlejs

Version:

A feature-rich JavaScript implementation of turtle graphics inspired by Python's turtle module

172 lines (158 loc) 5.63 kB
// Type definitions for turtlejs // Project: https://github.com/shlomil/turtlejs // Definitions by: Shlomi Loubaton export interface TurtleOptions { canvas?: HTMLCanvasElement; width?: number; height?: number; background?: string; startX?: number; startY?: number; startAngle?: number; speed?: number; } export interface ScreenOptions { canvas?: HTMLCanvasElement; width?: number; height?: number; background?: string; } export interface Vector { x: number; y: number; } export interface Font { family?: string; size?: number; weight?: string; style?: string; } export class Turtle { constructor(options?: TurtleOptions); // Movement methods forward(distance: number): Promise<void>; fd(distance: number): Promise<void>; backward(distance: number): Promise<void>; bk(distance: number): Promise<void>; back(distance: number): Promise<void>; right(angle: number): Promise<void>; rt(angle: number): Promise<void>; left(angle: number): Promise<void>; lt(angle: number): Promise<void>; goto(x: number, y: number): Promise<void>; setpos(x: number, y: number): Promise<void>; setposition(x: number, y: number): Promise<void>; teleport(x: number, y: number): void; setx(x: number): Promise<void>; sety(y: number): Promise<void>; setheading(angle: number): Promise<void>; seth(angle: number): Promise<void>; home(): Promise<void>; circle(radius: number, extent?: number, steps?: number): Promise<void>; // Pen control pendown(): void; pd(): void; down(): void; penup(): void; pu(): void; up(): void; pensize(width: number): void; width(width: number): void; pencolor(color: string | [number, number, number]): void; fillcolor(color: string | [number, number, number]): void; begin_fill(): void; end_fill(): Promise<void>; // State methods hideturtle(): void; ht(): void; showturtle(): void; st(): void; isvisible(): boolean; speed(speed: number): void; // Advanced methods write(text: string, move?: boolean, align?: string, font?: Font | string): Promise<void>; dot(size?: number, color?: string | [number, number, number]): Promise<void>; stamp(): number; clearstamp(stampId: number): void; clearstamps(n?: number): void; undo(): Promise<void>; // Position and state information position(): Vector; pos(): Vector; xcor(): number; ycor(): number; heading(): number; distance(x: number, y: number): number; towards(x: number, y: number): number; } export class Screen { constructor(options?: ScreenOptions); bgcolor(color: string | [number, number, number]): void; clear(): void; reset(): void; getcanvas(): HTMLCanvasElement; getcontext(): CanvasRenderingContext2D; onclick(x: number, y: number, func: (x: number, y: number) => void): void; onkey(func: () => void, key: string): void; listen(): void; tracer(n: number): void; update(): void; delay(ms: number): void; bye(): void; exitonclick(): void; } // Global functions export function createTurtle(options?: TurtleOptions): Turtle; export function createScreen(options?: ScreenOptions): Screen; export function export_turtle_globals(): void; // Global turtle functions export function forward(distance: number): Promise<void>; export function fd(distance: number): Promise<void>; export function backward(distance: number): Promise<void>; export function bk(distance: number): Promise<void>; export function back(distance: number): Promise<void>; export function right(angle: number): Promise<void>; export function rt(angle: number): Promise<void>; export function left(angle: number): Promise<void>; export function lt(angle: number): Promise<void>; export function goto(x: number, y: number): Promise<void>; export function setpos(x: number, y: number): Promise<void>; export function setposition(x: number, y: number): Promise<void>; export function teleport(x: number, y: number): void; export function setx(x: number): Promise<void>; export function sety(y: number): Promise<void>; export function setheading(angle: number): Promise<void>; export function seth(angle: number): Promise<void>; export function home(): Promise<void>; export function circle(radius: number, extent?: number, steps?: number): Promise<void>; export function pendown(): void; export function pd(): void; export function down(): void; export function penup(): void; export function pu(): void; export function up(): void; export function pensize(width: number): void; export function width(width: number): void; export function pencolor(color: string | [number, number, number]): void; export function fillcolor(color: string | [number, number, number]): void; export function begin_fill(): void; export function end_fill(): Promise<void>; export function hideturtle(): void; export function ht(): void; export function showturtle(): void; export function st(): void; export function isvisible(): boolean; export function speed(speed: number): void; export function write(text: string, move?: boolean, align?: string, font?: Font | string): Promise<void>; export function dot(size?: number, color?: string | [number, number, number]): Promise<void>; export function stamp(): number; export function clearstamp(stampId: number): void; export function clearstamps(n?: number): void; export function undo(): Promise<void>; export function position(): Vector; export function pos(): Vector; export function xcor(): number; export function ycor(): number; export function heading(): number; export function distance(x: number, y: number): number; export function towards(x: number, y: number): number;