Bundeswehr – Die verschmähte Armee

Ein sehr guter Artikel, der alles das widerspiegelt, was ich empfinde und an was ich glaube. Es ist nicht einfach, ein Soldat zu sein, ein Bürger in Uniform. Aber es ist sinnvoll und gut, dass es Menschen gibt, die sich für unser Land, für mein Land, einsetzen!

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ß!

I’m Okay!

YARGL 0.1

YARGL 0.1

Ich habe mich entschlossen, ein sehr lange zurückliegendes Projekt wieder aufzunehmen und möchte das Ganze auch dementsprechend dokumentieren.

Hier folgen also in der nächsten Zeit ein paar Beitrage mit wirrem Quellcode und mehr. Macht euch also auf etwas gefasst. Kommentieren ist gerne erlaubt!

Constructor Injection vs. Setter Injection

Da ich gerade mein Wissen um Algorithmen und Programmiersprachen etwas aufbessere und auffrische, bin ich über den verlinkten Artikel gestoßen. Es geht darum, ob ihr lieber einen Contstructor erstellt der keine Parameter bekommt, das Objekt mit Standardwerten besetzt und individuelles Verhalten mit Hilfe von Settern regelt, oder ob ihr lieber einen Construcor benutzt, der alle Parameter gleich von Anfang an bekommt.

Persönlich finde ich den Ansatz mit Constructor Injection wesentlich besser. Man vergisst halt keine Werte und alles wird immer in der richtigen Reihenfolge instantiiert.

 

javAuto: Java based cross platform automation

javAuto

In einer leicht abgewandelten Java-Syntax kann man sehr schnell tolle Automationen erstellen.  Einfach genial! (zum Beispiel für den CookieClicker)