1.7 KiB

turtle-lib-macros

Procedural macros for turtle-lib.

turtle_main Macro

The turtle_main macro simplifies creating turtle graphics programs by automatically setting up:

  • The Macroquad window
  • Turtle initialization
  • The main rendering loop
  • Quit handling (ESC or Q keys)

Usage

With a function parameter:

use macroquad::prelude::*;
use turtle_lib::*;

#[turtle_main("My Drawing")]
fn my_drawing(turtle: &mut TurtlePlan) {
    turtle.set_pen_color(RED);
    turtle.forward(100.0);
    turtle.right(90.0);
    turtle.forward(100.0);
}

With inline code:

use macroquad::prelude::*;
use turtle_lib::*;

#[turtle_main("My Drawing")]
fn my_drawing() {
    turtle.set_pen_color(RED);
    turtle.forward(100.0);
    turtle.right(90.0);
    turtle.forward(100.0);
}

What it does

The macro expands your code into a full Macroquad application with:

  • #[macroquad::main] attribute for window creation
  • Turtle instance creation
  • TurtleApp initialization with your commands
  • A main loop that:
    • Clears the background to WHITE
    • Updates the turtle app
    • Renders the drawing
    • Shows "Press ESC or Q to quit" message
    • Handles quit keys

Benefits

  • Less boilerplate: No need to write the same loop structure in every example
  • Consistent UI: All examples have the same quit behavior
  • Beginner-friendly: Makes turtle graphics examples more approachable
  • Focus on drawing: Your code focuses on the turtle commands, not the framework

License

Licensed under either of:

at your option.