DCR (Draw Color Repeat) 1.0.0 has been released! It is a simplified minimal subset of the Logo programming language, which aims at providing school kids in 1st - 3rd grade the simplest programming language learning experience possible. It is built with Ruby (JRuby) using Glimmer DSL for SWT and released under the MIT license.
You may download a packaged version for the Mac from the project page on GitHub (if you need a packaged version for Windows, hit me up in the comments, and I could guide you towards building your own Windows native executable installer using the Glimmer DSL for SWT glimmer package feature).
Alternatively, you may install as a Ruby gem that runs on top of JRuby and JDK8 on any platform.
Below is the project writeup from its README.
DCR (Draw Color Repeat) 1.0.0
A young child programming language for drawing and coloring with repetition.
DCR is a minimal subset of Logo that is intentionally simplified to teach computer programming to all 1-3 grade young children in school (not just the ones who already gravitate towards math and computers). It uses a stick figure to draw instead of Logo's turtle.
Download version 1.0.0 for the Mac (x64 Big Sur and older)
Programming Language Syntax
DCR always starts with a stick figure at the center of the drawing area, facing up.
Programming language commands may be entered as text with the keyboard.
Commands are automatically executed while being entered, so no "Run" button is needed. Children will get to see their commands instantly drawn and alter the drawings spontaneously, thus turning this into a sort of a game too, not just a programming language.
Any invalid commands or values are simply ignored, so the programming language never errors.
If a partial command is entered (e.g.
right), it is interpreted as the full command.
If a partial color value is entered (e.g.
red), it is interpreted as the full color value.
If an invalid value is entered (e.g.
right asdf), the default is assumed (e.g.
r): Turn right by 90 degrees or any angle (e.g.
right 30, or
l): Turn left by 90 degrees or any angle (e.g.
left 120, or
f): Draw in black while moving foreward by one or more pixels (e.g.
forward 50, or
b): Draw in black while moving backward by one or more pixels (e.g.
backward 30, or
c): Color the shape already drawn by closing it and filling it with a random or specified color from the following list (e.g.
color red, or
p): Repeat all previous operations (up to the last empty line or the beginning otherwise) once or a number of times (e.g.
repeat 5, or
forward 80 right forward 160 right repeat color green
forward 80 right repeat 3 color yellow
right 60 forward 180 right 80 forward 270 color black
left forward 100 right 120 repeat 2 color blue
right 45 forward 80 repeat 7 color red
forward right 1 repeat 360 color orange
left 60 forward 104 right 150 forward 180 right 150 forward 104 backward 104 left 60 forward 90 right forward 180 right forward 90 color white
right 60 forward 20 repeat 4 color yellow left 60 forward 20 repeat 2 right 60 forward 20 repeat 4 right 60 forward 20 left 60 forward 20 repeat 5
Five Pointed Star
left 144 forward 140 repeat 4 color white
Sherrif Badge Star
right 37 forward 28 right 51 forward 28 left 102 repeat 6 color yellow
forward 20 right forward 20 left repeat 5 backward 240 left forward 240 right forward 20 right forward 20 left repeat 5 color white
right forward 20 left forward 20 repeat 5 right forward 20 right forward 20 left forward 20 repeat 5 color yellow
right 65 forward 70 backward 70 left 130 forward 70 backward 70 right 65 forward 30 right left 4 forward 1 repeat 90 right 94 forward 80 right 55 forward 90 backward 90 left 110 forward 90
Octagon of Squares
right forward 30 repeat 2 right 45 forward 60 repeat 7 color blue
Octagon of Octagons
forward 20 right 45 repeat 6 color forward 70 repeat 9
Circle of Circles
right 8 forward 2 repeat 45 color right 10 forward 32 repeat 19
right 10 forward 180 repeat 35 right 110 forward 260 repeat 35
forward 200 right 45 repeat 6 color forward 200 right 38 repeat 51
back 450 forward 150 right 5 repeat color yellow back 300 left 5 repeat 180
forward 50 right forward 36 right repeat color left 9 forward 5 repeat 14
backward 40 forward right 2 repeat 180 color green left 2 forward 60 forward right 2 repeat 180 color yellow left 2 forward 60 forward right 2 repeat 180 color red forward right 2 repeat 90 left 4 forward 120
right 45 forward 80 right forward 80 right 135 forward 113 color red right right forward 113 right forward 113 right forward 74 right forward 40 right forward 30 right forward 40 right forward 70 right color gray
The draw_color_repeat ruby gem requires the JDK and JRuby versions mentioned in the pre-requisites of Glimmer DSL for SWT to run via the
Contributing to dcr
- Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
- Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
- Fork the project.
- Start a feature/bugfix branch.
- Commit and push until you are happy with your contribution.
- Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
- Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
Copyright (c) 2021 Andy Maleh. See LICENSE.txt for further details.
Built with Glimmer DSL for SWT (JRuby Desktop Development GUI Framework)
Top comments (0)