crystal-robots
A great way to learn about programming with a simple Ruby-like syntax. Write programs to battle it out with other programs on a virtual battlefield. Then, learn about how programming languages turn your code into instructions a machine can understand.
crystal-robots
is inspired and derived from:
- CROBOTS - a programming game, for programmers, or aspiring programmers,
- the Crystal Programming Language - A language for humans and computers,
- and chasm - a simple compile-to-WASM language.
crystal-robots
is my exploration of depending on my own programming tools, taking control over a programming
language itself.
Installation
TODO Write installation instructions here
Usage
TODO Write usage instructions here
The primary method for using crystal-robots
is by using my hosted server. The compiler is built into the web page. You can provide sources for the various robots and watch them battle it out.
There are a lot of other methods to battle your crystal-robots
and each peels back a layer to teach you more about full-stack programming.
My hosted server
Browse to https://jkridner.beagleboard.io/crystal-robots and ...
Self-hosted server
Start your own server by invoking crystal-robots
and specifying a port ...
bin/crystal-robots -p 8080
Compiled to native code with crystal
To setup the environment for your robots, use prelude.cr
...
crystal run --prelude=../src/prelude robot1.cr robot2.cr robot3.cr robot4.cr -- -m 500
Command-line interpretation by crystal-robots
Using the crystal-robots
compiler, you can perform battles by running the built-in interpreter ...
bin/crystal-robots -i -m 5 robot1.cr robot2.cr robot3.cr robot4.cr
Compiled to WASM by crystal-robots
and executed with wasmer
Support
TODO Write support instructions here
Roadmap
TODO Describe the development roadmap here
Development
TODO Write development instructions here
Contributing
- Fork it (https://openbeagle.org/jkridner/crystal-robots/-/forks/new)
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Merge Request
License
crystal-robots
is distributed under terms of the GNU General Public License, version 2.
This is in line with Tom Poindexter's release of CROBOTS
. While more restrictive than
Colin Eberhardt's release of chasm
under an MIT license, it seems to me to be better
to follow the more restrictive license. I hope that Colin agrees and if I ever complete
this, I'll be sure to engage to find a suitable compromise.
Contributors
- Tom Poindexter - creator of
CROBOTS
- Colin Eberhardt - creator of
chasm
- Jason Kridner - creator and maintainer of
crystal-robots