ZN80.NET

Carstens Blog

Tag: YARLG

YARLG – Yet Another RogueLike Game

Da es die nächsten Tage draußen etwas kühler und windig ist, werde ich mich mal wieder meinem RogueLike Spiel widmen. Es wird Zeit, dass ich dieses Projekt, welches ich bestimmt schon zum fünften oder sechsten Mal beginne, endlich einmal fertigstelle. Eclipse ist installiert und auch das Github-Repository ist erstellt.

Da ich auch etwas über Maven lernen will, haben ich jetzt alle Projekte als Maven-Projekte eingerichtet. Zum einen könnte ich das AsciiPanel als abhängiges Projekt einbinden, allerdings finde ich den Weg über jitpack.io viel interessanter. Denn mit jitpack.io kann man GitHub Projekte als Maven-Dependencies einbinden.

YARLG – AsciiPanel 2.0

Für mein Roguelike benoetige ich eine passende Terminal-Bibliothek. Bei meinen Recherchen dazu , bin ich auf den Blog von Trystan gestossen. Dieser hat im Jahre 2011 ein hervoragendes Roguelike-Development-Tutorial verfasst und eine Implementierung eines Terminal zur Verfuegung gestellt.

Ich laufe des Tutorials ist mir aber immer mehr aufgefallen, dass ich mit der Darstellung der Zeichen nicht ganz zufrieden bin. Nach einem kurzen Blick in den Source-Code ist mir aufgefallen, dass die Zeichen eine Höhe von 16 Pixeln und eine Breite von 9 Pixeln haben. Um das zu ändern, habe ich mich auf die Suche nach anderen Schriftarten begeben. Die Schriftarten sind eigentlich mehr Bilder/Grafiken auf denen die Buchstaben in einem festen Raster angeordnet sind.

Im Wiki von Dwarf Fortress gibt es Seite mit diversen Tilesets, auf der viele verschiedene Fonts gelistet sind. Dort habe ich mir ein paar qudratische herausgesucht und sie dem AsciiPanel hinzugefügt. implementiert.

Meine Version vom  asciiPanel findet ihr hier bei Github.

Zum testen, erstellen wir eine AsciiPanelFrame-Klasse:

import javax.swing.JFrame;

import asciiPanel.AsciiFont;
import asciiPanel.AsciiPanel;

public class AsciiPanelFrame extends JFrame {

	private static final long serialVersionUID = -233245833980108360L;
	AsciiPanel terminal;
	
	public AsciiPanelFrame(AsciiFont font) {
		super();
		// damit wir auch wissen welche Schriftart wir haben
		setTitle("AsciiPanelTest: " +  font.toString());
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setResizable(false);
		
		// erstelle ein neues Terminal
		terminal = new AsciiPanel(50, 25, font);
		this.add(terminal);
		this.pack();
		this.setVisible(true);
		
		// Zum Schluss schreiben wir noch etwas.
		terminal.clear();
		
		terminal.writeCenter("ASCII FONT TEST " + font.getFontFilename() , 1);
		terminal.writeCenter("abcdefghijklmnopqrstuvwxyz 0123456789", 3 ,AsciiPanel.brightBlue);
		// und einmal alle Zeichen ausgeben an Spalte 17 und Zeile 5
		for (int i = 0; i < 256; i++) {
			int x = i % 16 + 17;
			int y = i / 16 + 5;
			terminal.write((char)i, x, y);
		}
		// zum schluss noch repaint aufrufen
		super.repaint();
		terminal.repaint();
	}
}

Und dann die passende Hauptklasse ApplicationMain.java

import javax.swing.SwingUtilities;

import asciiPanel.AsciiFont;

public class ApplicationMain {
	/**
	 * @param args
	 * @throws FontNotFoundException
	 */
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				for (AsciiFont font : AsciiFont.values()) {
					AsciiPanelFrame frame = new AsciiPanelFrame(font);
				}
			}
		});
	}
}

In Eclipse geht das schnell und einfach. Die asciiPanel.jar noch als Library einbinden und viele Fenster gehen auf.

Viel Spaß!

© 2019 ZN80.NET

Theme by Anders NorenUp ↑