Java – Pure Java text interface for a roguelike game

javaroguelikeswing

OK, this is going to sound like a crazy idea – but I'm interested in emulating a 1980s style roguelike game text interface in pure Java, i.e. using Swing or similar.

Here's roughly what it needs to do:

  • Provide a fixed size grid of fixed size characters as the "screen" (e.g. 100*75)
  • Use an appropriate monospaced font, ideally with lots of interesting symbols
  • Allow setting of foreground and background character colours for each character position individually
  • Allow printing of strings or individual characters at any place in the screen (which should overwrite whatever is already in the screen buffer in those locations)

Anyone know of a good existing solution that would enable this? Or am I stuck with hacking one together from scratch?

p.s. the reason I want pure Java is so that it can run in a sandboxed applet. So JNI solutions like jcurses are sadly ruled out…..

Best Answer

Not crazy at all, this is the approach I implemented in Legerdemain:http://roguelikefiction.com

I used a two dimensional array of characters (char[][]) with a corresponding array of java.awt.Color[][] objects to track the colors. You can shove these arrays into a class that inherits from JPanel (which in turn is part of a JFrame) and do all of the drawing in the panel's paintComponent() callback.

Nothing wrong with the Curses/JNI approach either, although you get all sorts of great Unicode glyphs if you go the Swing route. Legerdemain uses five or six hundred of them.