Datentypen NimSpiel

LJDW94

Mitglied
Guten Tag,
ich habe die Aufgabe erhalten ein Nim-Spiel zu programmieren.
Es soll einen Spieler und einen Computer geben.

Nun gut, ich habe bisher die Eingabe für den Spieler sowie das Spielfeld fertig.
Schwierigkeiten habe ich beim Computer.

(Aufgabenstellung im Anhang)

Ich verstehe, was der Computer können muss, jedoch weiß ich nicht wie ich beispielsweise die Anzahl der Streichhoelzer in binär "umstelle" (Integer.toBinaryString();??) und aus den 5 Zeilen zwischen den Streichhoelzern(1,3,5,7 --> binär) jeweils Spaltensummen bilde.
Ich hoffe ihr könnt mir helfen und versteht mein Problem.

lG LJDW94
 

Anhänge

  • Aufgabe5.pdf
    37,3 KB · Aufrufe: 39
Zuletzt bearbeitet:
F

Firephoenix

Gast
Ich hab leider keinen Zugriff auf das Forum in dem sich offenbar die Aufgabenstellung befindet, dein Problem scheint aber irgendwo in die Richtung Binäroperationen zu gehen.
Kannst du evtl die Aufgabenstellung hier reinstellen oder (noch besser) zusammengefasst das konkrete Problem an dem du gerade hängst?

Gruß
 

LJDW94

Mitglied
Ich habe die PDF in den Anhang gepackt. Ich muss jetzt leider los, ich werde das Problem nachher genauer schildern und meinen Quellcode einstellen.

lG LJDW94

//edit wieder da, beschreibe es nun genauer
 
Zuletzt bearbeitet:

LJDW94

Mitglied
1. Ich habe die Eingabe des Spielers fertig.
2. Spielfeld ebenfalls fertig.
3. Computer:
- eindimensionales Array mit 4 Werten {1,3,5,7}
- die Zahlen des Arrays (1,3,5,7) nun binär im Array abspeichern
- 3 Spaltensummen bilden
- Anhand der Berechnung mit den Spaltensummen, Streichhölzer entfernen lassen
 
Zuletzt bearbeitet:

.Buh

Mitglied
Speichern ist leicht

einfach alle zahlen mit Integer.toBinaryString(); in eine binär zahl umwandeln und wieder in nem array speichern :p

beim rest weiß ich leider nicht was du meinst :D
 

LJDW94

Mitglied
Wenn du dir die Aufgabenstellung anguckst, man muss wenn die Zahlen der verschiedenen Spalten binär sind (Integer.toBinaryString()),
jede Stelle der binären Zahl mit der Stelle der binären Zahl aus den nächsten Zeilen addieren, das meine ich mit "Spalten".

Das sieht dann so aus:
1 Zeile: 1 > 0 0 1
2 Zeile: 3 > 0 1 1
3 Zeile: 5 > 1 0 1
4 Zeile: 7 > 1 1 1
Spaltensu. 2 2 4
 
F

Firephoenix

Gast
mit einfachen Stringoperationen könntest du dir per
String zeile.charAt(spalte) den char an der passenden Spalte besorgen und den auf '1' oder '0' testen können. Das ganze mit ein paar Schleifen und Zählern zusammenpacken und die Spaltensummen sollten recht einfach werden.
Gruß
 

LJDW94

Mitglied
Danke für eure Antworten :)
Also die Methode für den Computer sieht momentan so aus:

Java:
private static void aktionComputer() {
		System.out.println("Nun ist der Computer am Zug");

		int[] bytearray = Spielfeld.getTabelle();

		for (int i = 0; i < 4; i++) {
			Integer.toBinaryString(bytearray[i]);
		}
 

.Buh

Mitglied
da speicherst du doch aber nicht die binär zahlen oder?

Also ich bin auch noch recht neu würde das dann aber so machen

Java:
List<String> binar = new List<String>
int[] bytearray = Spielfeld.getTabelle();

        for (int i = 0; i < 4; i++) {
            binar.add(Integer.toBinaryString(bytearray[i]));
        }

dann hast du das ergebniss in der List :)

dann müsstest du nur noch die ergebniss gleich lang machen in dem du "0" vor setzt bei allen bis sie auch 3 stellen haben und dann könntest du sie vergleichen :p
 

LJDW94

Mitglied
da speicherst du doch aber nicht die binär zahlen oder?

Also ich bin auch noch recht neu würde das dann aber so machen

Java:
List<String> binar = new List<String>
int[] bytearray = Spielfeld.getTabelle();

        for (int i = 0; i < 4; i++) {
            binar.add(Integer.toBinaryString(bytearray[i]));
        }

dann hast du das ergebniss in der List :)

dann müsstest du nur noch die ergebniss gleich lang machen in dem du "0" vor setzt bei allen bis sie auch 3 stellen haben und dann könntest du sie vergleichen :p

Habe mich mit Listen noch garnicht beschäftigt, habe versucht das in eine Liste zu schreiben, ich erhalte dann immer eine Meldung "syntax error on token, misplaced constructs"
 

Logaff

Bekanntes Mitglied
Hiho,
soweit ich weiss gibt es keine List Objekte da List nen Interface ist. Du musst denn eine Spezielle Liste nehmen wie ArrayList(Liste als Dynamisches Array), LinkedList(Verkettete Liste) usw.

Beispiel:
Java:
ArrayList<String> list = new ArrayList<String>() //du hattest () vergessen

mfg,
Andreas
 

Saturas

Mitglied
Der statische Typ darf ruhig List sein, der Konstruktor den man dann aber aufrufen möchte, muss ne konkrete Liste sein. Also sowas ist auch legitim.

Java:
List<String> liste = new ArrayList<String>();
 

Oben