Illegal start of expression

punicaman

Mitglied
Ich habe hier ein Code für ein 4-Gewinnt aber leider will er kann ich das Programm nicht starten da ich ein bisschen dran "rumgepfuscht" habe... 😳

Hier sind die Fehler. Ich weiß dass das etwas mit der Klasse zu tun hat aber weiß nicht was ich machen soll ;( :

Spiel.java:8:5: error: illegal start of expression
private int[][] board;
^
Spiel.java:9:7: error: illegal start of expression
private boolean red = true;
^
Spiel.java:11:7: error: illegal start of expression
private Test gui;
^
Spiel.java:13:7: error: illegal start of expression
private int[] row = {5, 5, 5 ,5 ,5, 5, 5};
^
Spiel.java:15:7: error: illegal start of expression
private int[] index = {35, 36, 37, 38, 39, 40, 41};
^
Java:
import java.awt.event.*;

import javax.swing.JOptionPane;

public class Spiel implements ActionListener
{
  public static void main(String[] args) {

    private int[][] board;
      private boolean red = true;
      //private boolean green = false;
      private Test gui;
      // Zeilenindizes werden von 5 bis auf 0 dekrementiert
      private int[] row = {5, 5, 5 ,5 ,5, 5, 5};
      // nummerische Werte der letzten Felder im Swing-Container
      private int[] index = {35, 36, 37, 38, 39, 40, 41};
  }


    public Spiel(Test gui)
    {
      this.gui = gui;
      board = new int[6][7];
    }

    public void setField(int i, int j, int y)
    {
      board[i][j] = y;
    }

    public void actionPerformed(ActionEvent e)
    {
      Object button = e.getSource();
      for(int i = 0; i < 7; i++)
      {
        try
        {
          if(button == gui.getButton(i))
          {
            if(red)
            {
              gui.setIcon(index[i], 1);
              setField(row[i], i, 1);
              red = false; //green = true;
              index[i] -= 7;
              pruefeHorizontal(i, 1);
              pruefeVertikal(row[i], 1);
              pruefeDiagonal(1);
              row[i]--;
              gui.setDisplay("Gruen ist am Zug.");
              break;
            }
            else // (green)
            {
              gui.setIcon(index[i], 0);
              setField(row[i], i, 2);
              red = true; //green = false;
              index[i] -=7;
              pruefeHorizontal(i, 2);
              pruefeVertikal(row[i], 2);
              pruefeDiagonal(2);
              row[i]--;
              gui.setDisplay("Rot ist am Zug.");
              break;
            }
          }
        }
        catch(ArrayIndexOutOfBoundsException ex)
        {
          gui.setDisplay("Spalte ist voll!");
          //ex.printStackTrace();
          break;
        }
      }
    }

    /* Ueberprueft, ob es horizontale Vierer-Reihen
     * von der Farbe f in der Spalte c gibt.
     * */
    public void pruefeHorizontal(int c, int f)
    {
      int win = 0;
      for(int j = 5; j >= 0; j--)
      {
        if(j<5)
        {
          if(board[j][c]==f && board[j+1][c]==f)
            win++;
          if(win==3)
          {
            gewonnen(f); clean();
            gui.gameOver();
            break;
          }
        }
      }
    }

    /* Ueberprueft, ob es vertikale Vierer-Reihen
     * von der Farbe f in der Zeile r gibt.
     * */
    public void pruefeVertikal(int r, int f)
    {
      int win = 0;
      for(int j = 0; j <= 6; j++)
      {
        if(j<6)
        {
          if(board[r][j]==f && board[r][j+1]==f)
            win++;
          if(win==3)
          {
            gewonnen(f); clean();
            gui.gameOver();
            break;
          }
        }
      }
    }

    /*Ueberprueft alle moglichen Vierer-Diagonalen
     * */
    public void pruefeDiagonal(int f)
    {
      int win = 0;
      /* uebepruefe alle -potenziellen- Vierer-Diagonalen
         von links unten nach rechts oben
       */
      for(int i = 0; i < 4; i++)
      {
        for(int j = 3; j < 6; j++)
        {
          win = 0;
          int tmp = j;
          for(int y = i; y < 6; y++)
          {
            if(tmp>0)
            {
              if(board[tmp][y]==f && board[tmp-1][y+1]==f)
                win++;
              if(win==3)
              {
                gewonnen(f); clean();
                gui.gameOver();
                break;
              }
            }
            tmp--;
          }
        }
      }

      int win2 = 0;
      /* uebepruefe alle -potenziellen- Vierer-Diagonalen
         von rechts unten nach links oben
       */
      for(int i = 6; i > 3; i--)
      {
        for(int j = 3; j < 6; j++)
        {
          win2 = 0;
          int tmp = j;
          for(int y = i; y > 0; y--)
          {
            if(tmp>0)
            {
              if(board[tmp][y]==f && board[tmp-1][y-1]==f)
              {
                win2++;
              }

              if(win2==3)
              {
                gewonnen(f); clean();
                gui.gameOver();
                break;
              }
            }
            tmp--;
          }
        }
      }
    }

    // Arrays saeubern und wiederherstellen für neues Spiel
    public void clean()
    {
      int nI = 35;
      for(int i = 0; i < 7; i++)
      {
        row[i] = 5;
        index[i] = nI; nI++;
        for(int j = 0; j < 6; j++)
        {
          board[j][i] = 0;
        }
      }
      red = true;
      gui.setDisplay("Rot beginnt");
    }

    public void gewonnen(int farbe)
    {
      if(farbe==1)
        JOptionPane.showMessageDialog(null, "Rot hat gewonnen!" );
      if(farbe==2)
        JOptionPane.showMessageDialog(null, "Gruen hat gewonnen!" );
    }
}
 
Aber wenn ich die Methode leer lasse kann ich das Programm wiederum nicht Starten... und wenn ich sie ganz weg lasse will der Java Editor dass ich sie beifüge.

Tut mir leid wenn ich mich blöd anstelle oder so aber ich bin sehr unerfahren was programmieren angeht^^
 
Die privaten Variablen gehören in die Klasse. Die main Methode wird ausgeführt wenn du dein Programm startest, da machst du bisher ja noch gar nichts.
 
Okay ich habe jetzt die main so geschrieben:
Java:
    public static void main(String[] args){
      new Test("Vier gewinnt");
    }

Test ist meine GUI.

Jedoch Funktioniert es immer noch nicht...


Spiel.java:208:7: error: constructor Test in class Test cannot be applied to given types;
new Test("Vier gewinnt");
^
required: no arguments
found: String
reason: actual and formal argument lists differ in length
 
Die Antwort steht doch schon in der Fehlermeldung:

Spiel.java:208:7: error: constructor Test in class Test cannot be applied to given types;
new Test("Vier gewinnt");
^
required: no arguments
found: String
reason: actual and formal argument lists differ in length

PS:
Schau dir bitte erstmal die Grundlagen an bevor du mit GUIs rumhantierst.
 
Okay bevor ich deine Zeit weiter verschwende werde ich nun Google auseinander nehmen^^
Trotzdem danke!

PS: Ja es tut mir leid ich sagte ja bereits dass ich kaum ahnung habe... jedoch muss ich für die Schule eine "Gfs" machen mit welcher ich mich wohl etwas überfordert habe... und eine Schlechte Note sollte dabei ja nicht heraus kommen.
 

Zurück
Oben