2012-03-31 9 views
3

Hey ich versuche einen Dungeon Crawler zu machen und ich stecke auf der Kartengeneration fest. Ich möchte, dass zufällige Räume erzeugt werden, aber bevor ich das alles tun kann, muss ich die Karte auf dem Bildschirm zeichnen. Ich möchte, dass die Karte von oben nach unten verläuft und ein Raster ist, dem ich später das Bodenbild hinzufügen werde. Meine Art zu denken ist, einen JFrame zu erstellen und ein Rectangle2D mit paintComponent und eine for-Schleife zu zeichnen, um ein Gitter aus Quadraten zu erstellen. Ist das der richtige Weg? Und wie würde ich den Charakter dazu bringen, sich mit einem keyListener von Quadrat zu Quadrat zu bewegen?Java Zeichnen eines Kartenrasters für ein Spiel

BEARBEITEN: Ein Dungeon Crawler ist ein Top-Down-Spiel, bei dem du einen Charakter kontrollierst und ihn um ein Gitter herum bewegst. Du tötest Monster, bekommst Waffen und Gegenstände, die sie fallen lassen, levelst, etc. Im Moment möchte ich nur unsere beste Möglichkeit vorstellen, die Karte auf dem Bildschirm zu drucken. Ich beginne mit einem Raster, wo sich der Charakter von Quadrat zu Quadrat bewegt und die Pfeiltasten anschlägt. Dann gehe ich zur zufälligen Kartengenerierung über!

+1

Sie sollten [Key Bindings] (http://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html) verwenden, keinen KeyListener, wenn dies eine Swing-Anwendung ist. Kannst du mehr Details zu deinem Problem angeben? Zum Beispiel habe ich keine Ahnung, was ein "Dungeon Crawler" ist. Ich glaube, ich habe ein behütetes Leben gelebt. –

Antwort

2

Es ist eine gute Idee, Abstraktionslevel zuerst zu erstellen. Start from array, das Informationen über jede Zelle enthält (leer, Hindernis, Gegner, Spieler, Gegenstand usw.).

etwas wie das

int[][] a={ 
    {0,0,0,0,0}, 
    {0,1,0,0,0}, //"1" - obstacle 
    {0,0,1,0,0}, 
    {2,0,1,0,0}, //for example "2" is player 
    {0,0,1,0,0} 
} 

Jetzt ziehen Sie einfach Ihre Rechtecke (oder Bilder, die eigentlich besser aussieht :)) auf diese Karte. Normalerweise sollte jede Zelle dieselbe Größe haben, also zeichne Rechtecke mit einem Schritt.

+0

Ausgezeichneter Rat. 1+ –

+0

Also nach dem Zeichnen einer Karte mit Symbolen auf der Tastatur in einem 2D-Array, kann ich nur die Symbole durch abgebildete Kacheln ersetzen? – user1198199

+0

@ user1198199, nicht genau "ersetzen". Es ist nicht notwendig, dieses Array zu zeichnen (in meinem Beispiel "a" genannt). Sie sollten Ihre Kacheln (oder Rechtecke) entsprechend diesem Array zeichnen. –

1

Sie möchten BufferedImages erstellen, die so groß sind, dass sie Ihrer Kartengröße entsprechen. Sie können das Graphics-Objekt abrufen und Ihre Karte mit diesem Objekt zeichnen und dann entsorgen. Dann können Sie es einfach in einem ImageIcon, das von einem JLabel gehalten wird, oder in einer JPanels paintComponent(...) Methode anzeigen.