## To build: ``` make ``` There is an alternate version which has controls that will make much more sense to those familiar with vi. See [Alternate code](#alternate-code) below. ## To use: ``` ./prog ``` ## Try: ``` # Make your terminal as large as possible, possibly reduce your font size # then... ./prog ``` ## Alternate code: This version has the difference of moving forwards, left, backwards and right, where instead of `w`, `a`, `s` and `d`, you can use `k`, `h`, `j` and `l`. ### Alternate build: ``` make alt ``` ### Alternate use: ``` # Make your terminal as large as possible, possibly reduce your font size # then... ./prog.alt ``` ..and maybe curse less than you might otherwise, but still probably curse (see below) :-) ## Judges' remarks: This game does not use curses, but you may end up cursing. The code is made more difficult to read using an innovative, right justified, reverse indentation style. ## Author's remarks: ### Controls - Movement: `w` (forwards), `a` (left), `s` (backwards), `d` (right) - Fire: space - Quit: `q` - Pause: `p`, then use any other key to resume ``` /\ //\\ / \ /______\ /\/\ ``` ### Compile and run #### Linux ``` cc -std=c99 -O3 prog.c -o prog ./prog ``` #### Windows The only way I found to make it work is to use [MSYS2](https://www.msys2.org). When using the MSYS2 shell you can install gcc via pacman. ``` cc -std=c99 -O3 prog.c -o prog ./prog.exe ``` #### Warnings - `-Wno-missing-prototypes` - `-Wno-shorten-64-to-32` - `-Wno-sign-conversion` - `-Wno-implicit-int-float-conversion` - `-Wno-missing-field-initializers` - `-Wno-implicit-float-conversion` - `-Wno-vla` - `-Wno-float-conversion` - `-Wno-comma` - `-Wno-shadow` - `-Wno-format` - `-Wno-empty-body` - `-Wno-misleading-indentation` - `-Wno-maybe-uninitialized` - You may experience a mild [motion aftereffect](https://en.wikipedia.org/wiki/Motion_aftereffect) when playing for too long. ### High score Score will be shown in the top left corner. My best was **156**. If you beat that I'll send you the image of a very expensive chocolate. ### Features - Procedural star generation. - Very space-efficient `for` loops. - No use of `!=` or `==`. - Smooth rendering even on slow terminals. - Advanced ASCII art. - Cutting edge physics engine and collision detection. - Probably not many segfaults. - Every letter in the English alphabet has a variable or function named after it. - Not a virus. - Runs on my machine. ### Tips - Adjust your terminal size for different experiences. - Run this program in a virtual console to immerse yourself in the game.