About Me

Software engineering student & Java developer.

My Career Timeline

It has been In progress

Significant Works

2021 Older
Before you leave...

Draw something nice for me


Send as a Gift Browse Examples

Default values:

  • Default position = [0, 0] (center)
  • Default step = 20
  • Default angle = 0 deg (→)
  • Default angle change = 45 deg
  • Default stroke width = 1
  • Default recursion limit = 100

Commands:

Relative plotting:

  • M – move forward by step
  • D – draw forward by step
  • S(n) – set step to n
  • M(n) – move forward by n
  • D(n) – draw forward by n
  • + – increment angle by 45 deg
  • - – decrement angle by 45 deg
  • +(n) – increment angle by n degrees
  • -(n) – decrement angle by n degrees
  • [ – push position and angle into stack
  • ] – pop position and angle from stack

Absolute plotting:

  • M(x, y) – move to absolute position
  • D(x, y) – draw to absolute position
  • H – move home (0x0)
  • A(n) – set angle to n degrees

Graphics & paths:

  • B(r, g, b, a) – set background color (rgb = 0-255, a = 0-1)
  • C(r, g, b, a) – set stroke color (rgb = 0-255, a = 0-1)
  • W(n) – set stroke width
  • Z – close path (connects first and last point)
  • E – end path (C, W, Z, F and B also end path)
  • F – fill path

Program flow:

  • ?(x) { ... } – evaluates body only if x is not zero
  • R(n) { ... } – repeat body n times
  • @xxx($x, $y...) { ... } – define procedure named xxx with arguments x, y...
  • @xxx() – execute procedure named xxx
  • !(n) – set stack (recursion) limit to n (max: 1000)
  • $xxx(y) – set global variable xxx to y

Expressions:

  • Standard infix notation, support for parenthesis
  • Arithmetical operators: +-√∛²³ (unary), +-*×/÷%^ (binary)
  • Logical operators: ! (unary), |&=<> >= <= != (binary)
  • Custom variables: $xxx for variable named xxx
  • Build-in variables: $$x, $$y, $$a, $$s, $$width, $$height, $$rnd, $$it (only in R block)

Interpreter behaviour:

  • Designed to be fault tolerant (the main reason is rendering while typing)
  • Case insensitive
  • Argument list is also terminated by line feed or curly bracket
  • Characters allowed in identifiers (variable/procedure names): A-Z, _
  • The maximum number of executed commands is limited to 1,000,000 (no infinite loops)