|
|
||
|---|---|---|
| scripts | ||
| src | ||
| .clang-format | ||
| .editorconfig | ||
| .gitignore | ||
| LICENSE | ||
| Makefile | ||
| README.md | ||
SQL Space Invaders
Space invaders in SQLite3 with a C rendering engine.
note: Turns out I got the gameplay wrong, and I just verified it. I mixed it up with another game and I can't put my finger on it now. Oh well, had fun with this anyway. Close enough. Galaga?
Recently I watched this video: https://youtu.be/Ly9dtWwqqwY?t=183 and it talked about functional and object oriented programming. In that video, a statement was said that piqued my interest:
For example, SQL is a good example of a DSL, and it's great in finding a collection of records in a set, but it'd be a rather poor choice for writing space invaders
And I thought to myself - would this be even possible? Especially in SQLite? Turns out it is :D
Of course, rendering in SQLite is near impossible, however, combined with a C front-end this was more than possible.
Requirements
- A C compiler
- Libsqlite3
- Make
- Linux, probably
Compiling and Running
make game.db && make
./sql-space-invaders game.db
- Press
hto move left - Press
lto move right - Press
kto shoot a bullet
Configuring
You can configure stuff in src/sql/init.sql where the initial parameters are stored.
Scoring
The game is scored in how many ticks you manage to survive, however, you can change it to being how many invaders you kill by removing the score logic in state.sql and moving it to kill logic in invaders.sql.