Methoden Fehlermeldung(Illegal start of expression) bei 4-Gewinnt-Spiel

Oneeilus

Neues Mitglied
Guten Tag liebe Community,
ich bin zurzeit in einem neuen Informatikkurs an meiner Schule.
Unsere Aufgabe bestand darin, ein 4-Gewinnt-Spiel zu programmieren, doch ich finde den Fehler,der beim Compilen angezeigt wird einfach nicht.

Der Fehler wird bei der Methode "public void Steuerung()" (Siehe Zeile 85) angezeigt.
Ich hoffe ihr könnt mir Tipps zur Behebung geben ! ???:L

Hier der Quellcode:

[JAVA=42] import java.util.*;

public class Game
{
Spielfeld meinFeld; // Spielfeld wird definiert
boolean win=false;

public Game() // das Spiel wird eröffnet
{
meinFeld = new Spielfeld(); // Spielfeld meinFeld wird erzeugt



}
public int gibZug1()
{
Eingabeleser meineEingabe = new Eingabeleser();
int spalte = -1;
String t = meineEingabe.gibEingabe();
if(t.equals ("0"));
{
spalte=0;
}
return spalte;
meinFeld.einwerfen(spalte,1);
}
public int gibZug2()
{
Random random =new Random();
int x= random.nextInt(7);
return x;
}
public boolean istGewinn(int[][] meinFeld, int farbe)
{
int spieler;
spieler = farbe;

for(int j=0; j<6;j++)
{
for(int i=0; i<5;i++)
{
if ((meinFeld [j]== spieler)&&
(meinFeld [j+1]== spieler)&&
(meinFeld [j+2]== spieler)&&
(meinFeld [j+3]== spieler))

{
return true;
}
{
if ((meinFeld [j]== spieler)&&
(meinFeld [i+1] [j]== spieler)&&
(meinFeld [i+2] [j]== spieler)&&
(meinFeld [i+3] [j]== spieler))

{
return true;
}
{
if ((meinFeld [j]== spieler)&&
(meinFeld [i+1] [j+1]== spieler)&&
(meinFeld [i+2] [j+2]== spieler)&&
(meinFeld [i+3] [j+3]== spieler))


{
return true;
}
{
if ((meinFeld [j]== spieler)&&
(meinFeld [i+1] [j-1]== spieler)&&
(meinFeld [i+2] [j-2]== spieler)&&
(meinFeld [i+3] [j-3]== spieler))

{
return true;
}
}

}
}
}
}

public void Steuerung()
{
while (win==false)
{
meinFeld.printDisplay();
meinFeld.einwerfen(gibZug1());
meinFeld.printDisplay();
meinFeld.einwerfen(gibZug2());
System.out.println("Gewinn Spieler 1: "+istGewinn(meinFeld.spielefeld,1));
System.out.println("Gewinn Spieler 2: "+istGewinn(meinFeld.spielefeld,2));
}
}
return false;
}
[/code]
 
Zuletzt bearbeitet:
Wenn du mit einer IDE arbeitest, dann lass dir deinen Code mal ordentlich formatieren, oder mach es mit Hand.
Einige öffnende und schließende, geschweifte Klammern sind nicht korrekt gesetzt!

Zudem kommt, dass bei deiner Methode gibZug1 die letzte Zeile nicht ausgeführt wird.
 
mhn da sind oben schon ein paar fehler...
Java:
public int gibZug1()
  {
        Eingabeleser meineEingabe = new Eingabeleser();
        int spalte = -1;
        String t = meineEingabe.gibEingabe();
        if(t.equals ("0")); // der ; gehört hier nicht in
        {
            spalte=0;
        }
        return spalte;
        meinFeld.einwerfen(spalte,1); // diese zeile wird nicht erreicht, da du drüber schon mit return aufhörst...
  }
 
Zuletzt bearbeitet:
Vielen Dank schon mal.
Das Problem ist halt das ich Informatik erst seit kurzer zeit habe und deshalb da noch einige fehler drin sind.
 
Und außerdem: public VOID Steuerung() & return FALSE :lol:
Was soll das denn :question: VOID bezeichnet den Rückgabetyp, welcher in deinem Fall BOOLEAN sein müsste, wenn du einen solchen "RETURNen", also zurückgeben möchtest :exclaim:
 
Ich bin ja ein Fan von Test-driven-devlelopment und rate dir in KLEINEREN testbaren Schritten vorzugehen!

Beispielsweise sehe ich eine Klasse Spielfeld, aber es gibt die Methode istGewinn in Game UND hier greifst du direkt auf das "Spielfeld"-Array zu.

Das KANN Sinn machen, sieht für mich aber mehr danach aus, das die Methode IN die Klasse Spielfeld gehört. So etwas nennen wir einen bad-smell.

Wie kann man da einen kleinen Test schreiben?
Java:
import static org.junit.Assert.*;

import org.junit.Test;

public class GewinntTest {

	@Test
	public void test() {
		//@formatter:off
		Spielfeld meinFeld = new Spielfeld(
				"0100", 
				"0111", 
				"1100", 
				"0100");
		//@formatter:on
		assertTrue(meinFeld.gewinnt("1"));
	}
}

class Spielfeld {
	public Spielfeld(String... zeilen) {

	}

	public boolean gewinnt(String spieler) {
		return true;
	}
}


Nun weisst du das ein Teil des Tests auf Sieg funktioniert. Nun kannst du weitermachen, weitere Tests für den Sieg von Spieler 1 bzw. 0 schreiben und/oder beispielsweise eine Eingabe vornehmen und testen, ob die Ausgabe (neues Spielfeld) richtig ist.

Zu grosse Schritte machen dich und uns unsicher, ob das was bereits da ist, funktioniert oder nicht.
 

Zurück
Oben