4 Gewinnt 11 Klasse IT (Spieler abwechelnd mit if)

Cold as ic

Newbie
Registriert
März 2018
Beiträge
3
In Java Programmiert

Guten Tag,

Ich bin Aktuell in der 11 Klasse und wir haben von unserem Lehrer die Aufgabe bekommen ein Spiel zu Programmieren.
Am Anfang war ich mit jemandem in einem Team, aber das hat mir nicht so gefallen und Schreibe seit paar Stunden an diesem Spiel. Leider komme ich Gerade nicht wirklich weiter. Hänge an diesem Problem seit einer Stunde.

Ich versuche eine abwechselnde wahl der Spieler zu erschaffen in dem ich für die variablen setzte und diese um ein erhöhe und dann die andere so triggern sie sich selber in zwei if anweisunge, aber irgendwie geht das nicht...
Als Rar datei zum downloaden oder direkt im Forum zu lesen der Code
Der Code:

public class gewinntSchul {

public static void main(String[] args) {
System.out.println("Willkommen zu 4 Gewinnt\n\n\n \nDruecke 1 um zu Spielen \nDrueck eine Taste um das Spiel zu verlassen\n\n");
int Spielmodus = Keyboard.intInput();

if (Spielmodus==1) {
char Spielfeld[][]= {{' ',' ',' ',' ',' ',' '},{' ',' ',' ',' ',' ',' '},{' ',' ',' ',' ',' ',' '},{' ',' ',' ',' ',' ',' '},{' ',' ',' ',' ',' ',' '},{' ',' ',' ',' ',' ',' '}}
;
int Spieler1abwechseln = 1; //Auserhalb der while sonst wird die Variabel immer auf 1 und 0 neu gestezt
int Spieler2abwechseln = 1;

int wiederholung=0;
while (wiederholung<=47)
{
char Spieler1 = 'X';
char Spieler2 = 'O';

/* setzen der Variablen für While, Zeichen für die Tabelle, die Tabelle in einem Array und Keyboard.intInput() bzw.
allgemein
Keyboard ist eine Datei die unsere eingabe einlesen kann von der Schule bekommen. */


for(int s=0;s<1;s++)
{

for(int i = 0;i<=5;i++)
{
System.out.println();

System.out.println("-------------------");
for(int j = 0;j<=5;j++)
{
System.out.print("|"+Spielfeld[j]+"|");

}
}
System.out.println();
// Das Spielfeld zeichnen

System.out.println("Die eingabe erfolg so: A bis F fuer die Reihe und 0 bis 5 fuer die Spalte");
System.out.print("Setze deinen Stein: ");
}

String ZahlStein;
ZahlStein = Keyboard.stringInput();

// Sag dem das ZahlStein ein Zeichen und eine Zahl haben wird

if (Spieler1abwechseln==Spieler2abwechseln) { //Wenn Sp1 und Sp2 den Gleichen wert haben wird X Gemalt

for (int reihen=0;reihen<=6;reihen++ ) { // For anweisung um schreibarbeit zu sparen

if (ZahlStein.matches(reihen+"A") || ZahlStein.matches("A"+reihen)|| ZahlStein.matches("a"+reihen)|| ZahlStein.matches(reihen+"a") ) {
for (int arrayreiheA=0;arrayreiheA<=5;arrayreiheA++) {
Spielfeld [0][reihen]=Spieler1;
} ;
}

if (ZahlStein.matches(reihen+"B") || ZahlStein.matches("B"+reihen)|| ZahlStein.matches("b"+reihen)|| ZahlStein.matches(reihen+"b") ) {
for (int arrayreiheA=0;arrayreiheA<=5;arrayreiheA++) {
Spielfeld [1][reihen]=Spieler1;
} ;
}

if (ZahlStein.matches(reihen+"C") || ZahlStein.matches("C"+reihen)|| ZahlStein.matches("c"+reihen)|| ZahlStein.matches(reihen+"c") ) {
for (int arrayreiheA=0;arrayreiheA<=5;arrayreiheA++) {
Spielfeld [2][reihen]=Spieler1;
} ;
}

if (ZahlStein.matches(reihen+"D") || ZahlStein.matches("D"+reihen)|| ZahlStein.matches("d"+reihen)|| ZahlStein.matches(reihen+"d") ) {
for (int arrayreiheA=0;arrayreiheA<=5;arrayreiheA++) {
Spielfeld [3][reihen]=Spieler1;
} ;
}

if (ZahlStein.matches(reihen+"E") || ZahlStein.matches("E"+reihen)|| ZahlStein.matches("e"+reihen)|| ZahlStein.matches(reihen+"e") ) {
for (int arrayreiheA=0;arrayreiheA<=5;arrayreiheA++) {
Spielfeld [4][reihen]=Spieler1;
} ;
}

if (ZahlStein.matches(reihen+"F") || ZahlStein.matches("F"+reihen)|| ZahlStein.matches("f"+reihen)|| ZahlStein.matches(reihen+"f") ) {
for (int arrayreiheA=0;arrayreiheA<=5;arrayreiheA++) {
Spielfeld [5][reihen]=Spieler1;
} ;
}

}
Spieler1abwechseln = Spieler1abwechseln+1; //Sp1 wird um 1 erhöht für die nächste runde
wiederholung++; //nächste rund wird eingeleutet
}

if (Spieler1abwechseln!=Spieler2abwechseln) { //Wenn Sp1 und Sp2 ungleich sind wird die ausgeführt und O als zeichen verwendet

for (int reihen=0;reihen<=6;reihen++ ) { //Schreibarbeit ersparen

if (ZahlStein.matches(reihen+"A") || ZahlStein.matches("A"+reihen)|| ZahlStein.matches("a"+reihen)|| ZahlStein.matches(reihen+"a") ) {
for (int arrayreiheA=0;arrayreiheA<=5;arrayreiheA++) {
Spielfeld [0][reihen]=Spieler2;
} ;
}

if (ZahlStein.matches(reihen+"B") || ZahlStein.matches("B"+reihen)|| ZahlStein.matches("b"+reihen)|| ZahlStein.matches(reihen+"b") ) {
for (int arrayreiheA=0;arrayreiheA<=5;arrayreiheA++) {
Spielfeld [1][reihen]=Spieler2;
} ;
}

if (ZahlStein.matches(reihen+"C") || ZahlStein.matches("C"+reihen)|| ZahlStein.matches("c"+reihen)|| ZahlStein.matches(reihen+"c") ) {
for (int arrayreiheA=0;arrayreiheA<=5;arrayreiheA++) {
Spielfeld [2][reihen]=Spieler2;
} ;
}

if (ZahlStein.matches(reihen+"D") || ZahlStein.matches("D"+reihen)|| ZahlStein.matches("d"+reihen)|| ZahlStein.matches(reihen+"d") ) {
for (int arrayreiheA=0;arrayreiheA<=5;arrayreiheA++) {
Spielfeld [3][reihen]=Spieler2;
} ;
}

if (ZahlStein.matches(reihen+"E") || ZahlStein.matches("E"+reihen)|| ZahlStein.matches("e"+reihen)|| ZahlStein.matches(reihen+"e") ) {
for (int arrayreiheA=0;arrayreiheA<=5;arrayreiheA++) {
Spielfeld [4][reihen]=Spieler2;
} ;
}

if (ZahlStein.matches(reihen+"F") || ZahlStein.matches("F"+reihen)|| ZahlStein.matches("f"+reihen)|| ZahlStein.matches(reihen+"f") ) {
for (int arrayreiheA=0;arrayreiheA<=5;arrayreiheA++) {
Spielfeld [5][reihen]=Spieler2;
} ;
}

}
Spieler2abwechseln = Spieler2abwechseln+1; //Sp2 wird um ein erhöht
wiederholung++; // neu beginn der While wenn das ausgefphrt wird ist wieder Sp2 und Sp1 gleich wert und es beginnt von vorne
}

} // hier kommt noch ein else mit einer nachricht z.b. du hast das Spiel beendet

}

}
}
 

Anhänge

Zuletzt bearbeitet:
Soweit sind wir noch nicht im Unterricht wir haben das Programmieren seit Anfang Februar.
Im unterricht haben wir nur Datentypen, If(else), for, arrays und while schleifen mehr auch nicht.
Wir sollen in dem Project nur das anwenden was wir im Unterricht gelernt haben
 
naja mit diesen Vorraussetzungen kann man schon einiges erreichen.

Hatte glaub mal BlackJack programmiert. Mit einfachsten Mitteln. Inklusive Grafik. (ASCI Tabelle)
Also der PC musste da glaub ich mindestens 17 Punkte in der Hand haben um stoppen zu dürfen.
Der Spieler kann glaub ich stoppen wann er will.

Naja Irgendein Würfelspiel ginge sicher auch.
Oder Zahlenraten.

Man könnte ja selbst etwas erfinden was man sich am ehesten zutraut.
 
Also zunächst mal was Grundsätzliches: Variablen werden in Java immer klein geschrieben (außer diese sind static).

Also folgende Variablen werden alle klein geschrieben!
Code:
int Spielmodus = Keyboard.intInput();
int Spieler1abwechseln = 1; //Auserhalb der while sonst wird die Variabel immer auf 1 und 0 neu gestezt
int Spieler2abwechseln = 1;
char Spieler1 = 'X';
char Spieler2 = 'O';
String ZahlStein;
usw.

Ebenfalls unsinnige sind die Semikolon nach den for-Schleifen. Diese solltest du entfernen. zB hier:
Code:
for (int arrayreiheA=0;arrayreiheA<=5;arrayreiheA++) {
Spielfeld [0][reihen]=Spieler1;
} ;

Ansonsten solltest du statt irgendwelchen Integers (Zahlen) Spieler1abwechseln oder Spieler1abwechseln Variablen einen Boolean nutzen. Sowas wie:
Code:
boolean spieler1Spielzug = true;

...
if (spieler1Spielzug) {
...

spieler1Spielzug = !spieler1Spielzug;
wiederholung++;

Anstatt wie bisher:
Code:
int Spieler1abwechseln = 1; //Auserhalb der while sonst wird die Variabel immer auf 1 und 0 neu gestezt
int Spieler2abwechseln = 1;

...
if (Spieler1abwechseln == Spieler2abwechseln) {
...

Spieler1abwechseln = Spieler1abwechseln + 1;
wiederholung++;

Versuch mal ob du es dann ans laufen bekommst.:)
 
Zuletzt bearbeitet:
Cold as ic schrieb:
Ich versuche eine abwechselnde wahl der Spieler zu erschaffen in dem ich für die variablen setzte und diese um ein erhöhe und dann die andere so triggern sie sich selber in zwei if anweisunge, aber irgendwie geht das nicht...

Was genau ist das Problem? Willst du wissen, wie du nach jedem Zug den Spieler wechselst?
Dazu müsstest du nur z.B. am Ende des Zuges Die Variable für den aktiven Spieler setzen. Also entweder direkt den Char den du zur Auswahl nutzt (X, O) du könntest einen Zähler hochzählen und mit Modulo 2 den aktiven Spieler bestimmen.

Also sowas wie
Code:
if (aktiverSpieler == 'X') {
 aktiverSpieler = 'O'
} elseif (aktiverSpieler == 'O') {
 aktiverSpieler = 'X'
}

Oder habe ich dein Problem falsch verstanden?
 
Noch eine Ergänzung: Du brauchst du den ganzen Block und die Prüfung welcher Spieler dran ist nicht doppelt. Es unterscheidet sich doch nur welches Zeichen gesetzt wird ("X" oder "O").

Das kannst du (wenn du wie ich oben beschrieben habe einen Boolean nutzt) auch erreichen in dem du an dieser Stelle jeweils sowas schreibst:
Code:
Spielfeld[0][reihen] = spieler1Spielzug ? Spieler1 : Spieler2;
Schau dir dazu mal das an: Java Bedingter Ausdruck (ist im Prinzp nichts anders als ein verkürztes If/Else).
 
Zuletzt bearbeitet:
Wenn ich dich richtig verstehe, hast du die Wahl, was für ein Spiel du schreibst. Wenn das stimmt, hast du dich mit 4 Gewinnt wohl hart übernommen. Überleg dir besser ein simpleres Spiel, oder denk dir selbst ein simples Spiel aus.
 

Ähnliche Themen

D
  • Gesperrt
Antworten
5
Aufrufe
3.075
Antworten
4
Aufrufe
8.199
Antworten
19
Aufrufe
20.805
Stefan_Sch
S
Zurück
Oben