asteroids

2019-10-07

An improved asteroids game with sounds

Upstream URL

github.com/stacksmith/asteroids

Author

stacksmith stack@sdf.org

License

Do Whatever The Fuck You Want (DWTFYF)
README
Provided Systems

asteroids

Classic asteroids arcade game in Common Lisp, using SDL.

Originally ported from Python by andyhd (thanks, andyhd!). The game now has sounds, keyboard controls, a built-in REPL (triggered by ESC key) and is very playable.

Installation (no git cloning needed)

Install SBCL (or CCL) and quicklisp as described here)

IMPORTANT - install native sdl libraries! For linux, that means apt-get install

  • libsdl-dev
  • libsdl-gfx1.2-dev
  • libsdl-mixer1.2-dev

Now, in lisp (ql:quickload "asteroids") (asteroids:main)

Quicklisp updates monthly. If you want the newest version, git clone this repo into an asdf-visible directory (see Xach's article). ql:quickload will load the local repo first

Play Instructions

The game plays like original asteroids, except instead of saucers you get powerups. Ram the powerups to pick up super-missiles that go through anything, shields, or to stop time.

Keyboard controls:

Q - quit A - rotate ship left F - rotate ship right J - thrust SPC - fire ESC - REPL

P starts the game in attract mode.

Notes

In retrospect, this was my first attempt at programming in Lisp, by modifying code written by someone who was probably doing the same thing (I think original code was in some other language...). Don't look too closely; I know I won't.

Code has been re-organized and cleaned up. Names have been altered to make it more sensible and bugs fixed. Now loading with quicklisp

ESC now brings you to a REPL. Examine the game state, recompile anything (carefully).

I also added audio using MAME asteroids samples. lispbuilder-sdl-mixer is fragile and very sensitive to being shut down correctly in an interactive environment.

Background music is courtesy http://teknoaxe.com/Home.php.

TODO:

  • allow remapping of keys
  • fix pause

Dependencies (1)

  • lispbuilder

Dependents (0)

    • GitHub
    • Quicklisp