Movement System für Spiel

Kirby.exe

Top Contributor
Also ein Kommilitone von mir hat mich um Hilfe gebeten, ihm zu helfen ein "Movement System" zu coden. Dieses ist im Grunde eine 8-fach double Linked List xD Jeder Knoten kennt seine 8 Nachbarn. Jedoch zerbreche ich mir schon seit Stunden meinen Kopf, wie ich eine vernünftige add-Methode implementieren könnte :( Ich schicke einfach mal die Code Schnipsel, welche bis jetzt entstanden sind :)

Java:
package game;

public class Node<T>{
 
    private int id;
    private Node<T> north;
    private Node<T> northWest;
    private Node<T> west;
    private Node<T> southWest;
    private Node<T> south;
    private Node<T> southEast;
    private Node<T> east;
    private Node<T> northEast;
 
    public Node(Node<T> n, Node<T> nw, Node<T> w, Node<T> sw, Node<T> s, Node<T> so, Node<T> o, Node<T> no, int id) {
        this.north = n;
        this.northWest = nw;
        this.west = w;
        this.southWest = sw;
        this.south = s;
        this.southEast = so;
        this.south = o;
        this.northEast = no;
        this.id = id;
    }
 
    public Node<T> getNorth(){
        return north;
    }
 
    public void setNoth(Node<T> north) {
        this.north = north;
    }
 
    public Node<T> getNorthWest(){
        return northWest;
    }
 
    public void setNorthWest(Node<T> northWest) {
        this.northWest = northWest;
    }
 
    public Node<T> getWest(){
        return west;
    }
 
    public void setWest(Node<T> west) {
        this.west = west;
    }
 
    public Node<T> getSouthWest(){
        return southWest;
    }
 
    public void setSouthWest(Node<T> southWest) {
        this.southWest = southWest;
    }
 
    public Node<T> getSouth(){
        return south;
    }
 
    public void setSouth(Node<T> south) {
        this.south = south;
    }
 
    public Node<T> getSouthEast(){
        return southEast;
    }
 
    public Node<T> getEast(){
        return east;
    }
 
    public void setEast(Node<T> east) {
        this.east = east;
    }
 
    public Node<T> getNorthEast(){
        return northEast;
    }

}
Java:
package game;

public class LinkedGameList <T> {
 
    private Node<T> front;
    private Node<T> newNode;
    private static int ID = 1;
 
    public LinkedGameList() {
        front = null;
    }
 
    public void add() {
         if(isEmpty()) {
             Node<T> newNode = new Node<T>(null, null, null, null, null, null, null, null, ID);
             ID++;
             this.front = newNode;
             this.newNode = newNode;
         }else {
         
         }
    }
 
    public boolean isEmpty() {
        return front == null;
    }

}
 
Zuletzt bearbeitet:

Kirby.exe

Top Contributor
Im Grunde soll es ein Kletter System modellieren xD Die jeweiligen Knoten sind Plattformen im Spiel und man soll sich von jeder Plattform in alle Richtungen bewegen können :)
 

mihe7

Top Contributor
OK, das könnte Node erklären aber wofür ist LinkedGameList?

BTW, ohne eine Vorstellung davon zu haben, was das ganze eigentlich soll: ich würde ein enum für die Himmelsrichtungen definieren und eine EnumMap in Node verwenden. Das ist ja alles der gleiche Code. Getter/Setter in Node sowie die add-Methode bekämen dann das enum als Parameter.
 

Kirby.exe

Top Contributor
Okee :) Die LinkedGameList sollte eigentlich nur die Datenstruktur sein, welche die Nodes verwaltet :) Ich spiele mal eben Picasso und Versuche die Liste aufzumalen :)
 

mihe7

Top Contributor
Gut, dann hast Du also zunächst mal einen ungerichteten, zusammenhängenden Graphen. Da Du die Himmelsrichtungen je Kante angeben willst, wäre es ein gerichteter Graph. Ausgehend von irgendeinem Knoten kannst Du einen Pfad zum Zielknoten angeben. Dort kannst Du einen Knoten einfügen. Du kannst natürlich auch direkt den Knoten verwenden.

Um die Sache zu vereinfachen, könnte man zwei Kanten je Knoten auch Koordinaten verwenden, um die Himmelsrichtung implizit anzugeben.
 

Kirby.exe

Top Contributor
Ahhhhh sowas in der Art hatte mir schon fast gedacht :) Es gibt ja nur eine X und Y Achse :) Soweit so gut, was mich einfach komplett verwirrt ist diesen Graph "parallel" aufzubauen xD Ich war sogar schon so verzweifelt dass ich einfach ein Array von Arrays nehmen wollte xD
 

mihe7

Top Contributor
Soweit so gut, was mich einfach komplett verwirrt ist diesen Graph "parallel" aufzubauen
Wenn Du es ganz "brutal" machen willst, fügst Du erst alle Knoten und dann die betreffenden Kanten hinzu. Die relative Lage in Himmelsrichtungen ergibt sich automatisch aus den Koordinaten. Wie Du den Graph intern speicherst, ist eine andere Frage: ein 2D-Array als Adjazenzmatrix ist einfach, hat aber quadratischen Platzverbrauch. Mir fällt gerade auf: zwei Kanten zwischen je zwei Knoten bieten sich sowieso an, da Du in beide Richtungen navigieren willst.
 

Kirby.exe

Top Contributor
Wenn Du es ganz "brutal" machen willst, fügst Du erst alle Knoten und dann die betreffenden Kanten hinzu. Die relative Lage in Himmelsrichtungen ergibt sich automatisch aus den Koordinaten. Wie Du den Graph intern speicherst, ist eine andere Frage: ein 2D-Array als Adjazenzmatrix ist einfach, hat aber quadratischen Platzverbrauch. Mir fällt gerade auf: zwei Kanten zwischen je zwei Knoten bieten sich sowieso an, da Du in beide Richtungen navigieren willst.
Aber wenn ich doch die Knoten einfach einfüge ohne sie mit Pointern zu verbinden, dann kann ich sich doch nicht ansteuern? Oder etwa doch?
 

mihe7

Top Contributor
Aber wenn ich doch die Knoten einfach einfüge ohne sie mit Pointern zu verbinden, dann kann ich sich doch nicht ansteuern?
Wie meinst Du das?!? Zwei Knoten werden durch eine Kante miteinander verbunden. Wie direkt Du das darstellst, bleibt ja Dir überlassen. (0,1) könnte z. B. eine Kante darstellen, die den Knoten mit dem Index 0 in einer Knotenliste mit dem Knoten mit dem Index 1 verbindet. Die Kanten musst Du dann natürlich verwalten: Hey, gib mir alle Knoten, die mit Knoten x verbunden sind. Oder: gib mir den Knoten, der westlich von Knoten x liegt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Movement auf bestimmten Weg bestimmen Allgemeine Java-Themen 11
X Input/Output InputStream/Scanner(System.in) read()/hasNextLine() block unterbrechen Allgemeine Java-Themen 7
P9cman java.Lang Klassen fehlen in JRE System Library Allgemeine Java-Themen 1
B Lottospielen mit System, Versuch 2, noch umständlicher als vorher Allgemeine Java-Themen 1
J Frage zu System.getproperties. Allgemeine Java-Themen 60
sascha-sphw Erste Schritte Unit und Integration-Tests im Java Modul System Allgemeine Java-Themen 10
F Frage zu System.in Allgemeine Java-Themen 3
E System property setzten Allgemeine Java-Themen 8
O Beziehung System.exit(x) <>Errorlevel Allgemeine Java-Themen 2
B System.out Ausgabe auf jtextarea Fehlersuche Allgemeine Java-Themen 8
F System Tray Menubutton ActionListener Allgemeine Java-Themen 5
H Im Tiled-Map-System ein Item anklicken Allgemeine Java-Themen 0
S Java Plugin System (ohne OSGI) Allgemeine Java-Themen 10
D System.arraycopy verhält sich seltsam Allgemeine Java-Themen 1
C Login System Allgemeine Java-Themen 19
A BufferedReader ohne System.in Allgemeine Java-Themen 9
VfL_Freak JDK installieren System-Property "user.dir" Allgemeine Java-Themen 6
J System.arraycopy ergibt anderes Resultat als for-loop Allgemeine Java-Themen 4
F Wie kann ich auf einem System prüfen, ob eine lib verfügbar ist? Allgemeine Java-Themen 2
D Java System.out::println Allgemeine Java-Themen 1
D Methoden Java Applikation Die System Auslastung optimieren ? Allgemeine Java-Themen 7
S Ist Java ein geschlossenes System? Allgemeine Java-Themen 2
L Erste Schritte Suche Java Wiki System? Allgemeine Java-Themen 5
chuxXo System/JLayer Volume ändern Allgemeine Java-Themen 0
Neumi5694 System.out und System.err umleiten - NICHT im Quelltext Allgemeine Java-Themen 4
X System.out/err(Die Console) in JTextArea ausgeben Allgemeine Java-Themen 2
S Best Practice System.arrayCopy verändert Ziel-Array Allgemeine Java-Themen 2
A Methoden Der Sinn von system.out.print(); Allgemeine Java-Themen 9
A System freezes when trying to run external command from Java with wait for Allgemeine Java-Themen 3
A Java | Login-System Allgemeine Java-Themen 3
C System.out.print("") Compiler Fehler Allgemeine Java-Themen 2
Joew0815 Best Practice Wie am besten Plugin-System erstellen? Allgemeine Java-Themen 12
C System.in erhält Input von Tastatur. wo wird das festgelegt? Allgemeine Java-Themen 4
F Benachrichtigungs-System Webapp Java Servlet Allgemeine Java-Themen 10
M collection persistence system Allgemeine Java-Themen 4
V System.out.println an jeder Stelle im Projekt löschen Allgemeine Java-Themen 4
D System.out's in String speichern. Allgemeine Java-Themen 2
H Interpreter-Fehler ArrayIndexOutOfBoundsException bei System.arraycopy() Allgemeine Java-Themen 3
M System herausfinden Allgemeine Java-Themen 6
O Variablen System.getenv: Sinnlose Werte, Arrays?! Allgemeine Java-Themen 6
G java.exe in System 32. Hilfe!!! Allgemeine Java-Themen 8
R Methoden Tag System Problem Allgemeine Java-Themen 3
J System.out im GUI anzeigen Allgemeine Java-Themen 3
N System.exit(0/1) Allgemeine Java-Themen 3
F System.out.println mit log4j ersetzen Allgemeine Java-Themen 10
D System.LoadLibrary(..) - Programm stürzt ab Allgemeine Java-Themen 2
U Classpath DLLs mittels System.load() laden: Allgemeine Java-Themen 6
D Listener auf System.out.err / System.out.println Allgemeine Java-Themen 5
G Input/Output System.in "umbiegen" für junit-Test Allgemeine Java-Themen 4
Kr0e User management system Allgemeine Java-Themen 2
S Java Programm -System Neustart überleben? Allgemeine Java-Themen 3
Rudolf Wann System.exit und wann dispose? Allgemeine Java-Themen 9
ruutaiokwu System.out auf files umlenken in log4j.xml Allgemeine Java-Themen 4
K Objekt-Austausch zwischen zwei Programmen über System-Clipboard Allgemeine Java-Themen 5
agent47 Plugin System Verständnisfrage Allgemeine Java-Themen 6
M Wie externe System-Ressourcen zwangsweise freigeben Allgemeine Java-Themen 2
E Durch System.in.read() blockierten Thread stoppen Allgemeine Java-Themen 10
P System.out im Eclipse plugin Allgemeine Java-Themen 4
C File System Watcher Allgemeine Java-Themen 2
S Verhalten von System.getenv() in Ubuntu / Linux Allgemeine Java-Themen 12
A Problem mit System.getProperty(...) Allgemeine Java-Themen 5
D System.loadlibrary funktioniert nicht Allgemeine Java-Themen 6
H Event ähnliches System Allgemeine Java-Themen 20
Dissi Gammawerte des Grafiktreibers / System ändern? Allgemeine Java-Themen 3
M Plugin-System Allgemeine Java-Themen 4
A NullPointer bei System.getProperty("file.seperator") Allgemeine Java-Themen 4
R System.out oder System.err? Allgemeine Java-Themen 10
M Wie kann ich alle System.out Strings in ein log window umleiten? Allgemeine Java-Themen 6
K System.exec() Programm mit mehreren Parametern Allgemeine Java-Themen 8
G unerklärliches System.out Allgemeine Java-Themen 3
M System.setProperty("javax.net.ssl.trustStore", "mykey.pkx"); Allgemeine Java-Themen 1
T System Preferences + LInux (Ubuntu) Allgemeine Java-Themen 8
G OutputStream to System.out Allgemeine Java-Themen 35
J Wo werden die System properties gespeichert Allgemeine Java-Themen 12
C JSR295 in Produktiven System zu empfehlen? Allgemeine Java-Themen 3
B System CPU Zeit / Last auslesen Allgemeine Java-Themen 2
G Bringt es etwas System.gc() nach großen Aufgaben aufzurufen? Allgemeine Java-Themen 2
T Feststellen ob System-Konsole verfügbar Allgemeine Java-Themen 2
L remote debugging of a multi threaded system Allgemeine Java-Themen 2
F Probleme mit eigenem Plugin-System Allgemeine Java-Themen 3
L System.exit Allgemeine Java-Themen 3
G System.out und String machen was anderes Allgemeine Java-Themen 5
G System.out im window h.inein bringen? Allgemeine Java-Themen 8
A System.in pipen Allgemeine Java-Themen 3
P System.getProperty zu Classloader Allgemeine Java-Themen 21
I Am System angemeldeten Benutzer abfragen Allgemeine Java-Themen 11
E System.out umleiten Allgemeine Java-Themen 2
S system.out und system.err einer Methode in Datei schreiben. Allgemeine Java-Themen 7
S System Informationen auslesen. Allgemeine Java-Themen 3
N Thread und System.out.print() Allgemeine Java-Themen 2
K Kann man System.out in eine Datei speichern? ähnlich wie log Allgemeine Java-Themen 7
B Native DLL zweimal laden: System.load(sPath); Allgemeine Java-Themen 5
P System.getProperty("user.dir") Allgemeine Java-Themen 10
K Abfrage ob JRE oder JDK auf System installiert ist. Allgemeine Java-Themen 12
B serlvet system.out ausgabe Allgemeine Java-Themen 4
N Plugin-System: Klassen über String laden Allgemeine Java-Themen 3
O System.nanoTime() einheitlichen Wert auf mehreren Rechnern? Allgemeine Java-Themen 9
T System-Monitoring in Echtzeit Allgemeine Java-Themen 2
E System.out.println Allgemeine Java-Themen 5
G Umrechnen von grossen Zahlen ins Hex-System Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben