Java (BlueJ) Mensch ärgere dich nicht Programmien

Vernon.098

Neues Mitglied
Hallo liebe Informatiker,

Ich möchte das Spiel Mensch ärgere dich nicht programmieren lol. Momentan habe ich Schwierigkeiten das Spielfeld und die Spielfiguren zu programmieren.
Gerade habe ich den Würfel programmier welcher so aussieht:

import java.util.Random;
public class Würfel {
private Random zufall;
// instance variables - replace the example below with your own
private int x;


public Würfel()
{
// initialise instance variables
zufall = new Random() ;
}

/**
* "Wirft" den Würfel, indem eine Zufallszahl zwischen 1 und 6 (einschliesslich) generiert wird.
* @Return Eine Ganzzahl von 1 bis 6
*/
public int werfen() {
// put your code here
return zufall.nextInt(6)+1;
}
}

Bin mir aber noch mega unsicher dabei xD
Das wäre mega nice, wenn jemand mir helfen könnte :)
 

Neumi5694

Top Contributor
Der Würfel passt schon mal :)
Was du jetzt als nächstes brauchst, ist die logische Darstellung des Spielfelds. Von jedem Feld aus muss es eine Möglichkeit geben, um weiter zu kommen.
Ohne mit Indizes zu arbeiten, wäre eine LinkedList wäre also schon mal eine Idee, das letzte Feld verweist wieder auf das erste.
Von 4 Feldern aus muss man auch in der Lage sein, einen Seitenzweig zu erreichen, alles anderen Felder haben diese Möglichkeit NICHT.
Die Seitenzweige sind speziell. Dort kannst du dich nämlich auch rückwärts bewegen. Das letzte Feld in jedem Seitenzweig hat keinen Nachfolger.
Alle Sondereigenschaften können natürlich bei jedem Feld vorhanden sein, dann brauchst du keine verschiedene Datentypen und ersetzt instanceof Abfragen durch besser lesbare Methoden.

Du brauchst also eine Doubly Linked List, jedes Element davon verweist auf den Nachfolger und Vorgänger, außerdem optional auf ein anderes Element.

Entwirf mal einen Datentyp, der diese Eigenschaften speichern kann und auch eine Eigenschaft, ob und welche Spielfigur darauf steht (dazu am Besten auch gleich einen Datentyp für die Spielfigur).
Bau auch gleich Hilfsmethoden wie "hasAlternativeRoute()" oder "hasNext()" ein, damit du dir die Null-Abfragen (wie getNext() != null) im Code sparst. Lesbare Bezeichnungen sind viel angenehmer.

Anschließend bau mal die Liste mit dem Spielfeld und die Seitzenwege auf.

ps: Die Form des Spielfelds ist für die Logik irrelevent, das ist nur grafische Darstellung. Vergiss mal, wie das Brett ausschaut und konzentrier dich darauf, was es macht.
 

Vernon.098

Neues Mitglied
Hallo,
erstmals vielen lieben Dank für die Antwort.
Leider kenn ich mich nicht so gut mit Java aus und habe grad echt gar keine Ahnung was ich machen muss.

Wär es vielleicht möglich, schon den die fertige Programmierung hier reinzuschicken, mit jeweils einer Erklärung ?

Das wär sehr sehr nett :)
 

Neumi5694

Top Contributor
Möglich wär's schon, dass überlass ich aber jemand anderem.

Versuch das Ganze auch mal auf dem Papier aufzuschreiben. Zeichne das Spielfeld, stell fest, welche verschiedenen Arten von Feldern es gibt. Was kann man über ein Feld sagen? Worin unterscheiden sich die Feldarten? Du solltest nicht gleich losprogrammieren.


Was du aber programmtechnisch als erstes machen musst: Dich damit beschäftigen, was eine doppelt verkettete Liste (Doubly Linked List) ist und wie man das realisieren könnte.
Insertion und Deletion kannst du erst mal ignorieren, dein Feld ändert sich ja nicht. Du brauchst erst mal nur Next und Previous.

Alternative: Fang mit was einfacherem an. Mensch ärgere dich nicht ist nicht gerade trivial. Es besteht zwar aus an sich einfachen Teilproblemen, aber eben doch aus einer reichlichen Menge davon.
 
Zuletzt bearbeitet:

KonradN

Super-Moderator
Mitarbeiter
Also ich fürchte, dass dies so nicht funktioniert. Du willst doch etwas lernen, daher wäre die Frage, an welchem Punkt Du nun genau nicht weiter kommst. Evtl. ist es auch einfach noch zu schwer für Dich? Was hast Du denn schon so gelernt?

Generell ist es so, dass man alles auch deutlich einfacher darstellen kann. Statt die Felder abzubilden kann man auch einfach alle Felder durchnummerieren.

Dann hat jedes Feld eine Nummer. Fang also einfach an bei dem Feld, an dem ein Spieler heraus kommt. Wir nennen diesen Spieler einfach einmal Spieler 1. Das Feld, an dem er heraus kommt, ist dann Feld Nr. 1, das nächste 2, 3, 4, 5, ...
Irgendwann kommt dann das Feld, ab dem der Spieler 2 in sein "Zuhause" einrücken kann. Diese Nummer ist wichtig. Dann kommt das Feld, in das Spieler 2 heraus kommt ... u.s.w.
Das letzte Feld wäre dann das Feld, ab dem Spieler 1 einrücken kann.
Somit hast Du jetzt Spieler1 / 2 / 3 / 4 und zu jedem Spieler hast Du das Ausrück- und das Einrück Feld.

Jede Figur hat ein Spielfeld. Das ist eine Nummer, die einfach die Nummer des Feldes angibt. Dabei bedeutet:
0 - Figur ist nicht im Spiel
-1 - -4 Figur ist auf einem Feld des Einrück-Bereiches.

Damit wäre das Spiel auch abgebildet. Klasse Spieler, jeder Spieler hat 4 Figuren (bzw. 4 Felder, auf denen seien Figuren sind).

Damit kannst Du dann auch das ganze Spiel steuern.
 

KonradN

Super-Moderator
Mitarbeiter
Wenn Du das Spiel ganz Universell handhaben willst, dann kannst Du auch gar nicht zählen. Dann erzeugst Du einfach ein Spielfeld mit variablen Anzahlen:
- Anzahl Spieler (Das kann eine beliebige Zahl > 0 sein)
- Anzahl Felder pro Spielern (>= 2, da mindestens einrück und ausrück Felder da sein müssen)
- Anzahl Figuren pro Spieler (>=1 - anzahl Einrückfelder = anzahl Figuren)

Da muss man sich dann nur überlegen, welches Feld welche Nummer hat. Und um zu sehen, ob ein Feld belegt ist, muss man halt alle Figuren durchprüfen.
 

pitsoft21

Mitglied
Hallo, ich habe die Oberfläche auf folgende Art geschrieben:
Anwendung in java.swing. Hauptfenster : JFrame. Davon habe ich den ContentPane geholt, der bekommt ein BorderLayout. Ein JPanel wird in das Layout als Center Komponente eingefügt. Dieses Panel hat ein GridLayout mit 13x13 Elementen. .Das sind die Felder. Die Felder wurden durchnumeriert. Über die Nummer wird festgelegt welcher Feldtype es ist (unsichtbar, waitforGame ,home, normal Feld, Einsetzfeld) Hier habe ich ein paar Klassen für die einzelnen Feldtypen definiert um sie speziell darstellen zu können. Die Darstellung passiert in der paintComponent Methode. Mit dem Graphics Objekt lassen sich verschieden graphische Figuren und Images darstellen. Die nicht sichtbaren Felder dieser Matrix haben keine paintComponent Methode. Welches Feld von einem Stein gelegt ist verwalte ich mit einer Hashtable (Key ist ein Integer der Feldnummer, Value ein Figur Object. Das zeichnet sich auch selbst.
Die Reihenfolge der Felder, die gegangen werden, verwalte ich über ein int Array pro Spielfarbe, indem die Feldnummern stehen.
Im NORTH Panel des BorderLayout verwalte ich die Anzahl der Mitspieler, das Würfeln und Infos zum Spiel.
Soweit erstmal zur Oberfläche. Die Funktionalität habe ich noch nicht ganz fertig, aber bis dahin kann ich auch Quellcode anbieten.
 

Anhänge

  • Feld.PNG
    Feld.PNG
    32 KB · Aufrufe: 3
Ähnliche Java Themen
  Titel Forum Antworten Datum
Arjunreddy Can someone please tell me how to use a debugger in BlueJ(a Java environment) Java Basics - Anfänger-Themen 1
K Spieleidee gesucht für Informatikprojekt - JAVA (BlueJ)? Java Basics - Anfänger-Themen 15
D BlueJ Java: Strings voneinander trennen Java Basics - Anfänger-Themen 11
D Java BlueJ Programm wiederholen? Java Basics - Anfänger-Themen 6
F Java BlueJ Dinge verschwinden lassen Java Basics - Anfänger-Themen 2
X wie kann ich in bluej/java einene 2d array mit zahlen fuellen, so dass sich diese in der der zeilen Java Basics - Anfänger-Themen 2
D Wer wird Millionär ? BlueJ Java Java Basics - Anfänger-Themen 2
P Java mit BlueJ - Hilfe - Gegenstände Java Basics - Anfänger-Themen 10
X Erste Schritte Java BlueJ Programmieren Java Basics - Anfänger-Themen 36
P Java BlueJ Schatzsuche Java Basics - Anfänger-Themen 2
H Buch: Java lernen mit BlueJ Modulo-Operator Java Basics - Anfänger-Themen 16
X Methoden Java Dublikatsuche Hilfe(BlueJ) Java Basics - Anfänger-Themen 9
X Interpreter-Fehler "java.lang.NullPionterException: null" bei BlueJ Java Basics - Anfänger-Themen 10
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
richis-fragen Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
JaZuDemNo Java im Studium Java Basics - Anfänger-Themen 7
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
V Java-Ausnahmebehandlung: Behandlung geprüfter Ausnahmen Java Basics - Anfänger-Themen 1
krgewb Java Streams Java Basics - Anfänger-Themen 10
A Überwältigt von der komplexen Java Welt Java Basics - Anfänger-Themen 29
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
John_Sace Homogene Realisierung von Generics in Java ? Java Basics - Anfänger-Themen 19
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
R mit Java API arbeiten Java Basics - Anfänger-Themen 9
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
Timo12345 JNLP File mit Java öffnen Java Basics - Anfänger-Themen 2
S Video Editierung mit Java.._ Java Basics - Anfänger-Themen 2
F Einstelungen in Java - CursorBlinkRate Java Basics - Anfänger-Themen 10
A PHP $_POST["name"] in Java Java Basics - Anfänger-Themen 3
vivansai21 Is there a oneliner to create a SortedSet filled with one or multiple elements in Java? Java Basics - Anfänger-Themen 9
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
M Java assoziationen (UML) Java Basics - Anfänger-Themen 8
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
xXGrowGuruXx Java einstieg, leichte sache 0 verstanden Java Basics - Anfänger-Themen 7
A java.sql.SQLException: Data type mismatch. Java Basics - Anfänger-Themen 1
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
A Lerngruppe Java Java Basics - Anfänger-Themen 2
G Help me in the Java Program Java Basics - Anfänger-Themen 2
L Java- Vererbung Java Basics - Anfänger-Themen 4
LimDul Suche Java Stream Tutorial Java Basics - Anfänger-Themen 2
_so_far_away_ Ich möchte Java lernen Java Basics - Anfänger-Themen 11
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
V Bild per Java Script austauschen Java Basics - Anfänger-Themen 7
MoxMorris this Keyword in Java Java Basics - Anfänger-Themen 14
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
wolei JAVA Zeitdifferenz feststellen. Java Basics - Anfänger-Themen 4
DiyarcanZeren Rekursion in Java Java Basics - Anfänger-Themen 5
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
monsterherz Circle.java:5: error: <identifier> expected Java Basics - Anfänger-Themen 2
julian-fr Wie kann ich am besten Java lernen? Java Basics - Anfänger-Themen 17
A Java-Properties und -RessourceBundles Java Basics - Anfänger-Themen 5
lrnz22 Java-Basics-Aufgabe Java Basics - Anfänger-Themen 8
R Java kann nicht installiert werden Java Basics - Anfänger-Themen 8
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
G In ein java Dokument Ton einbinden Java Basics - Anfänger-Themen 1
C was heisst es wenn java ']' erwartet ? Java Basics - Anfänger-Themen 2
KeinJavaFreak Erste Schritte Programm "Java(TM) Platform SE binary " nicht vorhanden Java Basics - Anfänger-Themen 1
KeinJavaFreak Erste Schritte Java "Executable Jar File" nicht vorhanden Java Basics - Anfänger-Themen 1
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
J Java Testklasse Java Basics - Anfänger-Themen 5
P Java Selenium . Parameterized.Parameters erzeugt eine Fehlermeldung Java Basics - Anfänger-Themen 14
W Java-Code mit Array Java Basics - Anfänger-Themen 14
W Java-Code Java Basics - Anfänger-Themen 2
P BeforeEach AfterEach werden nicht ausgeführt. Java / Selenium Java Basics - Anfänger-Themen 4
A Wie führe ich eine Batch-Datei von meiner Java-Anwendung aus? Java Basics - Anfänger-Themen 18
W Java code- TicTac toe Java Basics - Anfänger-Themen 51
Ostkreuz Java Docs Java Basics - Anfänger-Themen 9
R Java boolean Unterschied " == " und " = " Java Basics - Anfänger-Themen 3
D Java Programm mit Batch-Datei starten Java Basics - Anfänger-Themen 32
W Java-code Java Basics - Anfänger-Themen 8
W Java-code Java Basics - Anfänger-Themen 9
W Java-Code erklären Java Basics - Anfänger-Themen 6
A Java Kurs / Tutorial Java Basics - Anfänger-Themen 6
K Java Lotto Spiel; ich komme nicht weiter Java Basics - Anfänger-Themen 15
R Operatoren Rechenoperation in Java verwenden für Calculator Java Basics - Anfänger-Themen 2
P Java 2n Potenzieren Java Basics - Anfänger-Themen 1
J Java Hamster Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben