Java/Tutorials/Karteneditor Kapitel 7

Aus Scientia
Wechseln zu: Navigation, Suche

In diesne Kapitel werde ich beschreiben wie man das Aktuelle Tile ändern kann. Wir benötigen als erstes eine Methode die uns unsere aktuelle TileID ändert. Daher legen wir die Methode setTileID(int x, int y) an. In dieser Methode wandeln wir zu erst die Mausposition in spalte und Reihe des angeklickten Tiles um, daher durch 32. Anschließend Multiplizieren wir die zeile * (Anzahl der Tile in einer Zeile) und addieren die Spalte hinzu. Als ergebnis bekommen wir die TileID. Um sicher zu gehen das wir kein TileID wählen die außerhalb unseres Tileset ist, machen wir eine if Abfrage wo wir die Anzahl an Tile im Array mit der TileID vergleichen, wenn sie kleiner ist, ändern wie die aktuelle TileID in die berechneten um. Anschließend fügen wir noch einen MouseListener hinzu der unsere Methode aufruft.

public class TilePalette extends JPanel {
	KartenFenster fenster;
	int aktuelleTile=0;
	public TilePalette(KartenFenster kartenfenster)
	{
		fenster=kartenfenster;
		setPreferredSize(new Dimension(4*32, (fenster.aktuelleKarte.tileset.size()/4)*32));
		setDoubleBuffered(true);
		this.addMouseListener(new MouseAdapter(){
			@Override
			public void mouseClicked(MouseEvent e) {
				setTileID(e.getX(), e.getY());
			}
		});
	}
 
	public void paintComponent(Graphics g)
	{
		int tileAnzahl=fenster.aktuelleKarte.tileset.size();
		int zeile=0;
		int spalte=0;
		for(int i=0;i<tileAnzahl;i++)
		{
			BufferedImage tile=fenster.aktuelleKarte.tileset.get(i);
			g.drawImage(tile,spalte*32, zeile*32, this);
 
			if(i%4 == 3)
			{
				zeile++;				
				spalte=0;
			}
			else spalte++;
		}
	}
 
	public void setTileID(int x, int y)
	{
		int spalte=x/32;
		int zeile=y/32;
		int tileID=zeile*4+spalte;
		if(tileID < fenster.aktuelleKarte.tileset.size())
		{
			aktuelleTile=tileID;
		}
	}
}

Und nun kann man eine Karte erstellen. Hier nochmal ein vergleichs Bild.

Karteneditor-Tilechange.png


Herzlichen Glückwunsch, ihr habt fast einen voll Funktionierenden Karteneditor. Nun fehlt nur noch das Laden, Speichen und anlegen von neuen Karten.


zurück Kapitel 6 - Index - weiter Kapitel 8