Java/Tutorials/Karteneditor Kapitel 7
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.
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); } 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.
Herzlichen Glückwunsch, ihr habt fast einen voll Funktionierenden Karteneditor. Nun fehlt nur noch das Laden, Speichen und anlegen von neuen Karten.