Spielbrett programmieren: Datenstruktur

iTobi97

Aktives Mitglied
Hallo liebe Community, ich bin auf der Suche nach alternativen Lösungswegen, ein Spielbrett in Java zu modellieren. Die naheliegende Antwort wäre ja ein mehrdimensionales Array, in welchem ich Feld-Objekte speichere; Problem dabei: zwischen den einzelnen Feldern können sich Mauern befinden.

2 Möglichkeiten, die mir eingefallen sind:
  1. Ein Array mit einer Größe von der doppelten Feldanzahl, in den "Zwischenräumen" kann ich eine Mauer platzieren. Allerdings wird das Spielbrett so relativ groß und unübersichtlich.
  2. Ein Array mit den selben Größen wie das Original verwenden, und in jedem Feldobjekt vier boolean-Platzhalter für eine Mauer (links, rechts, oben, unten) vorbereiten. Problem hierbei ist, dass ich bei der Initialisierung des Spielbretts und der Feld-Objekte darin, besonders aufpassen muss, da eine Mauer dann nicht nur in einem Feld ist, sondern auch in dem Feld daneben/darunter/darüber. Das wird vermutlich das Spielbrett auch nicht übersichtlicher machen, insbesondere, da ich bei der Initialisierung der Spielfelder nochmal 4 Übergabeparameter mehr habe.

Ihr seht schon, keine der beiden Lösungen ist optimal, und mir ist bisher noch keine wirklich sinnvolle Lösung eingefallen. Eine mögliche Variation der zweiten Variante wäre noch, eine eigene Datenstruktur zu erstellen, die automatisch beim Einfügen eines Feldes mit Wand, das nachfolgende/darunterliegende,... Feld auch mit einer Wand in seinen Variablen ausstattet.

Allerdings hoffe ich natürlich, dass mir jemand eine schönere Lösung empfehlen kann, wie man mit solchen Problemen am besten umgeht bzw. welche Datenstruktur man am besten verwendet.

Vielen Dank schon einmal im Voraus
 

MoxxiManagarm

Top Contributor
Die "richtige" Lösung hängt ganz von deiner Implementierung ab. Ich erweitere deine Liste um 2 weitere Möglichkeiten.
3. boolean Platzhalter nur für rechts und unten. Jedes rechts ist auch das links eines anderen Feldes. Es reicht wenn ein Feld hier dominant ist. Allerdings musst du dann bei der Interaktion mit der Mauer mehr Logik einbauen, beispielsweiste müsste dann ein Move nach oben überprüfen, ob das Nachbarfeld oben die Mauer unten hat.
4. Mauer nicht als boolean im Feld, sondern als Objekt. Das Mauerobjekt könnte dann eine register-Logik haben die ohne größere Vorsicht im restlichen Programm beide relevanten Felder behandelt. Oder ggf. sogar nur ein Feld, sofern es eine Randmauer ist.
 

mrBrown

Super-Moderator
Mitarbeiter
Ihr seht schon, keine der beiden Lösungen ist optimal, und mir ist bisher noch keine wirklich sinnvolle Lösung eingefallen. Eine mögliche Variation der zweiten Variante wäre noch, eine eigene Datenstruktur zu erstellen, die automatisch beim Einfügen eines Feldes mit Wand, das nachfolgende/darunterliegende,... Feld auch mit einer Wand in seinen Variablen ausstattet.
Das ist btw bei allen möglichen Lösungen sinnvoll und deutlich besser, als im Rest des Programms direkt mit dem Array zu arbeiten ;)
 

iTobi97

Aktives Mitglied
@mrBrown Vielen Dank noch für die Ermutigung.
Letztendlich versuche ich mich nun an einer Art Graphen, allerdings speichere ich dessen Knoten/Vertices (Felder) in ein zwei-dimensionales Array, um sowohl den Zugriff per Index als auch Zugriff über die Kanten auf die Knoten/Felder zu haben. Ist zwar keine konventionelle Implementierung eines Graphen in einem Array/Matrix, allerdings stelle ich mir eine zweidimensionale Datenstruktur in diesem Fall vorteilhaft vor. Die einzelnen Kanten speichere ich nicht wie üblich in einer Liste ab, sondern in einer EnumMap, welche nur die vier final Werte meiner Enum UP, DOWN, LEFT und RIGHT als Key ermöglicht und somit die vier möglichen Kantenrichtungen symbolisiert.
Ich sehe darin einen Vorteil, um später intelligente Algorithmen auf das Spielbrett zu implementieren, um z.B. den besten/schnellsten Weg zu finden (anhand von Kantengewichten, die ich später noch hinzufügen kann).

Eine hard-gecodete Initialisierung ist damit zwar umständlicher, wenn ich allerdings die Karte in das Spiel aus einer Datei lade, ist das ja nicht weiter relevant.

Siehst du irgendwelche Nachteile in meiner Idee bzw. hast du Verbesserungsvorschläge?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Stopp Feld programmieren für Spielbrett Java Basics - Anfänger-Themen 8
C Input/Output Ein Spielbrett auf Konsole ausgeben Java Basics - Anfänger-Themen 2
K Spielbrett kopieren Java Basics - Anfänger-Themen 4
C Rohfassung von Spielbrett über Main ausgeben Java Basics - Anfänger-Themen 12
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
B OOP was heißt objektorientiertes Programmieren (fragt ein absoluter Anfänger) Java Basics - Anfänger-Themen 17
laxla123 Rechteck programmieren Java Basics - Anfänger-Themen 4
A Erste Schritte Dynamische Stempel im PDF Exchange programmieren Java Basics - Anfänger-Themen 0
D Programmieren nach UML Java Basics - Anfänger-Themen 2
Y Taschenrechner programmieren Java Basics - Anfänger-Themen 3
B Überweisung programmieren Java Basics - Anfänger-Themen 7
bluetrix Programmieren eines Bots für Zahlen-Brettspiel Java Basics - Anfänger-Themen 9
D Ampel Programmieren die jede 10 sekunden ihre farbe wechselt Java Basics - Anfänger-Themen 6
J ArrayList add methode selbst programmieren Java Basics - Anfänger-Themen 10
00111010101 Objektorientiertes Programmieren mit Vererbung (Zahlen in Array verschwinden) Java Basics - Anfänger-Themen 3
thor_norsk Fernseher programmieren mit Java Java Basics - Anfänger-Themen 4
M Jenga Regeln Java Programmieren Java Basics - Anfänger-Themen 1
M Ressourcensparend programmieren Java Basics - Anfänger-Themen 3
brypa Wie Programmieren lernen? Java Basics - Anfänger-Themen 15
G Spielerwechsel programmieren Java Basics - Anfänger-Themen 1
J Solitär (Brettspiel) programmieren Java Basics - Anfänger-Themen 3
H Objektorientiertes Programmieren Java Basics - Anfänger-Themen 4
K 12- Stunden Konverter Programmieren Java Basics - Anfänger-Themen 1
WAB9703-04 Programm zum automatischen Ausfüllen von Formularen programmieren Java Basics - Anfänger-Themen 3
L Zahlenspiel programmieren Java Basics - Anfänger-Themen 1
TimoN11 Automat programmieren Java Basics - Anfänger-Themen 4
G Erste Schritte Array Mittelwert Methode Programmieren Java Basics - Anfänger-Themen 5
ehmo würfelspiel programmieren anfänger Java Basics - Anfänger-Themen 1
N Ufospiel programmieren Java Basics - Anfänger-Themen 13
KogoroMori21 Vorbereitung auf die Programmieren Klausur vom ersten Semester Java Basics - Anfänger-Themen 4
Drinkerbell Erste Schritte Zu blöd zum Programmieren? Java Basics - Anfänger-Themen 9
G Stack programmieren Java Basics - Anfänger-Themen 6
I Brauche Hilfe bei Objektorientiertem programmieren Java Basics - Anfänger-Themen 23
T Auf einem Schachbrett bewegen programmieren Java Basics - Anfänger-Themen 2
G Bruchrechner programmieren Java Basics - Anfänger-Themen 6
G Ufo Spiel programmieren Java Basics - Anfänger-Themen 13
D Schachbrett (8x8) programmieren Java Basics - Anfänger-Themen 3
J Spiel programmieren Java Basics - Anfänger-Themen 16
J Hilfe beim Programmieren Java Basics - Anfänger-Themen 5
S Kreisberechnung3 Buch: Programmieren lernen mit Java von Hans-Peter Habelitz Java Basics - Anfänger-Themen 39
M Quiz in Java programmieren mit Array Java Basics - Anfänger-Themen 8
S Spiel-Programmieren. Wenn ein Objekt den anderen berührt. Java Basics - Anfänger-Themen 6
K Java programmieren Java Basics - Anfänger-Themen 6
V_Fynn03 Kontrolle des Quelltextes (Bank programmieren)(GUI) Java Basics - Anfänger-Themen 6
D Was tun gegen zu komplzierten Denken beim Programmieren Java Basics - Anfänger-Themen 27
V_Fynn03 Bruchrechner programmieren (2 Klassen) Java Basics - Anfänger-Themen 9
N Ticketautomat programmieren Java Basics - Anfänger-Themen 63
M Rechner programmieren Java Basics - Anfänger-Themen 3
V_Fynn03 Java Bruchrechner programmieren Java Basics - Anfänger-Themen 13
J Java Suchfunktion Programmieren Java Basics - Anfänger-Themen 1
L Erste Schritte Bin ich "zu dumm" oder nicht geeignet zum Programmieren? Java Basics - Anfänger-Themen 3
U Ist jemad gut in programmieren (JAVA) und kann mir helfen? Java Basics - Anfänger-Themen 1
H Uhr programmieren Java Basics - Anfänger-Themen 10
T Schalter programmieren Java Basics - Anfänger-Themen 17
S Ampel Programmieren Java Basics - Anfänger-Themen 5
P Erste Schritte Probleme mit dem Programmieren Java Basics - Anfänger-Themen 12
D Richtig für Programmieren an der UNI lernen Java Basics - Anfänger-Themen 8
B Folgende Abfrage dynamisch programmieren? Java Basics - Anfänger-Themen 8
D Beim Programmieren auf die Logisch einfache Lösung kommen. Java Basics - Anfänger-Themen 17
B UML Klassen Diagramm zu Java Code Programmieren und ausführen Java Basics - Anfänger-Themen 21
steven789hjk543 Kann man mit Java und Eclipse einen Virus programmieren? Java Basics - Anfänger-Themen 13
S Spiel programmieren mit Java Java Basics - Anfänger-Themen 11
A Kalender programmieren, ich finde meinen Fehler nicht. Java Basics - Anfänger-Themen 9
S Erste Schritte Hilfe beim lernen von Programmieren Java Basics - Anfänger-Themen 2
V Zeichenkette programmieren Java Basics - Anfänger-Themen 20
O Fenster programmieren Java Basics - Anfänger-Themen 2
R Uebersichtlicher bzw. besser Programmieren Java Basics - Anfänger-Themen 13
N Dynamisches Programmieren/Fibonacci Java Basics - Anfänger-Themen 1
B Spielfiguren für ein Beute-Jägerspiel programmieren Java Basics - Anfänger-Themen 12
A Programmieren lernen Java Basics - Anfänger-Themen 28
F ArrayListe manuell programmieren? Java Basics - Anfänger-Themen 24
X Erste Schritte Einstieg ins Programmieren Java Java Basics - Anfänger-Themen 2
O Erste Schritte ln(1+x) Reihe Programmieren Java Basics - Anfänger-Themen 6
Ellachen55 Weihnachtsbaum in Eclipse programmieren Java Basics - Anfänger-Themen 6
L Klassen Geldrückgabe - Aufgabe Programmieren Java Basics - Anfänger-Themen 23
H Stern Dreieck (Buch: Grundkurs Programmieren) Java Basics - Anfänger-Themen 2
V Variablen Vorkommen programmieren Java Basics - Anfänger-Themen 18
S Dreieckssignal programmieren Java Basics - Anfänger-Themen 5
K Fehler beim Programmieren von TicTacToe Java Basics - Anfänger-Themen 12
M Spiel programmieren Java Basics - Anfänger-Themen 16
A Fenster programmieren Java Basics - Anfänger-Themen 1
V OOP Kassensystem objektorientiert programmieren Java Basics - Anfänger-Themen 15
A Erste Schritte DoodleJump programmieren: Kollisionsabfrage Java Basics - Anfänger-Themen 4
CT9288 Kleine Simulation programmieren, denkanstöße erbeten Java Basics - Anfänger-Themen 19
H Welche IDE zum Buch "Programmieren mit Java" von Reinhard Schiedermeier des Verlags Pearson Studium Java Basics - Anfänger-Themen 19
D Könnt ihr mir helfen beim Programmieren eines Ping Pong Spieles? Java Basics - Anfänger-Themen 9
M Rekursive Methode Programmieren Java Basics - Anfänger-Themen 3
G Rekursives Programmieren --> harmonische Reihe Java Basics - Anfänger-Themen 3
A Endlich anfangen mit Programmieren ! Java Basics - Anfänger-Themen 8
L Karawane programmieren Java Basics - Anfänger-Themen 0
kokojamboo92 Spiel programmieren Java Basics - Anfänger-Themen 1
E Mastermind programmieren, wie den falschen Platz aber richtige Farbe schecken? Java Basics - Anfänger-Themen 23
steven789hjk543 Erste Schritte java programmieren/ Schritt für Schritt Java Basics - Anfänger-Themen 14
I Spiel programmieren. Java Basics - Anfänger-Themen 16
H [Studium] Mäxchenspiel programmieren Java Basics - Anfänger-Themen 10
C BlueJ Zahlenschloss programmieren Java Basics - Anfänger-Themen 5
steven789hjk543 mit dem Smartphone java programmieren Java Basics - Anfänger-Themen 44
F Okjektorientiert programmieren Java Basics - Anfänger-Themen 2
S OOP Ticketsystem programmieren Java Basics - Anfänger-Themen 6
P Selber Programmieren lernen oder Uni? Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben