Crest/Examples

From Esolang
Jump to navigation Jump to search

Draw a Circle

This program draws a circle by slowly rotating the turtle as it moves.

penup
setpos 100 300
pendown

forever [
    forward 1
    right 0.25
]

Turtle Draws a Star

This program animates the turtle drawing a star over and over. This is done by repeatedly calling nextframe to wait a certain amount of time.

showturtle

forever [
    clearscreen
    repeat 15 [ nextframe ]
    left 144
    
    repeat 5 [
        right 144
        forward 100
        repeat 15 [ nextframe ]
    ]
    
    repeat 15 [ nextframe ]
]

The Color Palette

This program draws all 600 colors to the screen.

setpos 0 0

repeat 600 [
    back 599
    setpencolor plus pencolor 1
    penup
    setpos plus xcor 1 0
    pendown
]

Key Colors

This program reads the user input pixel and fills the screen with that color.

left 90

forever [
    penup
    setpos 599 599
    pendown
    
    setpencolor pixel
    repeat 600 [
        forward 599
        setpos 599 minus ycor 1
    ]
    nextframe
]

Color Picker

This program lets you enter a three digit number from 0-599, one digit at a time (make sure to have no keys pressed to let the program know to move to the next digit). It then displays that number as a color on the screen. Error inputting digits will make the program fill the screen with red. After the screen fill with a color, press enter to reset it.

The input is taken by waiting for the input pixel to change.

right 90

forever [
    penup
    setpos 599 599
    pendown
    
    while equal pixel 599 [ nextframe ]
    
    ifelse or
        lessthan pixel 48
        morethan pixel 53
    [
        setpencolor 9
    ] [
        setpencolor minus pixel 48
        back 1
        repeat 99 [ setpencolor plus pencolor pixel ]
        forward 1
        
        while not equal pixel 599 [ nextframe ]
        while equal pixel 599 [ nextframe ]
        
        ifelse or
            lessthan pixel 48
            morethan pixel 57
        [
            setpencolor 9
        ] [
            setpencolor minus pixel 48
            penup
            back 2
            pendown
            back 0
            repeat 9 [ setpencolor plus pencolor pixel ]
            penup
            forward 1
            setpencolor plus pencolor pixel
            pendown
            forward 1
            
            while not equal pixel 599 [ nextframe ]
            while equal pixel 599 [ nextframe ]
            
            ifelse or
                lessthan pixel 48
                morethan pixel 57
            [
                setpencolor 9
            ] [
                setpencolor plus
                    pencolor
                    minus pixel 48
            ]
        ]
    ]
    
    clean
    setpos 0 0
    repeat 600 [
        forward 599
        setpos 0 plus ycor 1
    ]
    
    setpos 599 599
    while not equal pixel 13 [ nextframe ]
    while not equal pixel 599 [ nextframe ]
    clean
]

Walking Simulator

This program lets you press the arrow keys to move the turtle around.

It works by always putting the turtle where it needs to be right before calling nextframe. The position and rotation are stored in the 3 pixels next to the input. You can even see them change as you move if you look closely enough!

showturtle

penup
setpos 596 599
pendown
right 90

setpencolor 90
forward 1
setpencolor 300
forward 1

forever [
    penup
    setpos 599 599
    setheading 90
    
    if equal pixel 150 [
        setpos 596 599
        setpencolor 90
        pendown
        forward 0
        
        penup
        setpos 597 599
        setpencolor plus pixel 8
        pendown
        forward 0
    ]
    if equal pixel 151 [
        setpos 596 599
        setpencolor 270
        pendown
        forward 0
        
        penup
        setpos 597 599
        setpencolor minus pixel 8
        pendown
        forward 0
    ]
    if equal pixel 152 [
        setpos 596 599
        setpencolor 180
        pendown
        forward 0
        
        penup
        setpos 598 599
        setpencolor plus pixel 8
        pendown
        forward 0
    ]
    if equal pixel 153 [
        setpos 596 599
        setpencolor 0
        pendown
        forward 0
        
        penup
        setpos 598 599
        setpencolor minus pixel 8
        pendown
        forward 0
    ]
    
    penup
    setpos 596 599
    setheading pixel
    
    setpos 597 599
    setpencolor pixel
    setpos 598 599
    setpos pencolor pixel
    
    nextframe
]

The Cantor Set

This program draws the cantor set fractal with some rounding errors.

penup
setpos 0 0
pendown

setpencolor 1
back 0

penup
setpos 1 0
pendown

setpencolor 100
back 1
setpencolor 400
back 0

penup
setpos 0 0
pendown

setheading 90
while lessthan pixel 128 [
    penup
    setpos pixel 0
    
    setpencolor pixel
    while not equal pixel 599 [ forward 1 ]
    pendown
    forward 0
    
    penup
    setpos 0 0
    setpos pixel 1
    
    setpencolor pixel
    setpos xcor 2
    
    pendown
    forward 0
    setpencolor 0
    while lessthan
        plus plus pencolor pencolor pencolor
        pixel
    [
        setpencolor plus pencolor 1
    ]
    setpencolor minus pencolor 1
    forward 0
    
    penup
    setpos xcor 1
    while not equal pixel 599 [ forward 1 ]
    pendown
    forward 1
    
    penup
    setpos 0 0
    setpos pixel 0
    
    setpencolor pixel
    setpos xcor 2
    setpencolor plus plus pencolor pixel pixel
    
    setpos xcor 0
    while not equal pixel 599 [ forward 1 ]
    pendown
    forward 0
    
    penup
    setpos 0 0
    setpencolor plus pixel 1
    pendown
    forward 0
]

penup
setpos 0 1
pendown

setpencolor 1
back 0

while lessthan pixel 128 [
    penup
    setpos pixel 1
    
    setpencolor pixel
    setpos xcor 0
    setpos pixel plus 2 3
    setheading 180
    while not equal pixel 599 [ forward 2 ]
    
    setheading 90
    pendown
    forward 0
    setpencolor 0
    forward pixel
    
    penup
    setpos 0 1
    setpencolor plus pixel 1
    pendown
    forward 0
]