Java/Tutorials/Karteneditor Kapitel 7
Aus Scientia
Version vom 15. Februar 2009, 23:58 Uhr von DrachenKaiser (Diskussion | Beiträge)
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; } } }