Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
MethodenFehlermeldung(Illegal start of expression) bei 4-Gewinnt-Spiel
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;
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.
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...
}
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.