Punkt auf Schachbrett bewegen

Status
Für weitere Antworten geschlossen.

Jony

Registered +
Registriert
Aug. 2007
Beiträge
356
Also ich würde gerne mit dem Java.awt ein kleines Spiel erstellen.
Nur fehlt mir dazu etwas Grundlegendes , wie mache ich es das ich in meinem GUI ein 100x100 großes Feld bekomme in dem sich 2 oder mehr Punkte (Roboter ) befinden. Die Punkte sollen sich nach Druck auf die Pfeiltasten , um ein Feld in die Pfeil richtung bewegen. Und bei Druck auf die Leertaste sollen sie Feuern.
Ich kenne mich mit dem Awt immer noch nicht wirklich aus deswegen habe ich nur so eine leise Ahnung wie das gehen könnte. Währe nett wenn mir wer helfen könnt.

Außerdem würde ich noch gerne wissen wie ich auf meinem 100x100 großen Feld , an gewissen Punkten Blockaden ziehen kann durch die mein Punkt (Roboter nicht durchkommt).

Schon mal ein großes Danke im Voraus,
Jony
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

erstmal würde ich dir Swing und Awt empfehlen, denn Awt ist schon nen bissel veraltet ;)
Da ich auch gerade am lernen bin, was Swing etc. angeht, kann ich dir nur bei deinem Blockaden Problem mit Pseudo Code helfen :

Code:
if(tasteLinks == gedrückt) // am beispiel mit linker Bewegung
{
if(player.xPos > Barikade1.xPos+Barikade1.width) // xPos ist der Abstand zwischen linkem
//Fensterrahmen und linker Seite des "players" bzw der Barrikade
// Diese einfach Kollisionabfrage kann man sich anhand zweier Vierecke klarmachen,
// zB mit Dina4 Blättern. Test einfach wann sie sich (nicht) berühren, leite daraus Formeln 
//ab und bewege erst nach der prüfung.
{
//dann bewegen
}
}
 
Ein einfacher Ansatz wäre, ein 100x100 großes Array zu erstellen, welchem
du die Werte
0: leer, begehbar
1: Wand, Stopper usw
2: Roboter zuweist.
So kann man eigenene Maps designen.
Dann lässt du das ganze per doppelter for-Schleife in deiner GUI anzeigen
(zB. über JLabel, hier empfiehlt sich dann natürlich das Gridbaglayout^^).
Jetzt musst du "nur noch" die Keyevents abfangen (das geht bestimmt über die
entsprechenden Listener sehr einfach) und das Verhalten der Roboter aufstellen.
So sollte, wenn man nach obigem Muster vorgegangen ist, ein Check erfolgen,
ob das Feld x,y im Array den Wert 0 hat, wenn ja dann bewege den Roboter
da hin.
Dh. aktualisiere das Label wo der Roboter stand und das, auf wo er jetzt steht.
Feuern würde dann mehr oder weniger analog ablaufen.
 
Hmm, ich dachte es wäre einfacher mit einem Canvas zu arbeiten, da könnte man das schön machen.
Da wäre es auch einfacher mit Schüssen umzugehen, wenn man mit meiner "Kollisionsabfrage" arbeiten würde, sonst würde der Schuss ziemlich hüpfen, bei einem 100*100 Feld, da es keine keine glatten Bewegungen macht.

Aber das is dem TS überlassen.

lg
 
ok danke für die hilfe . Ich habe das Problem gelöst. Das Feld mit einem Array und den Rest über KeyEvent mit ner verschachtelteten if - Abfrage.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben Unten