Senso bzw SimonSays programmieren

2Kcinnay

Mitglied
Hallo,

Ich versuche momentan das Spiel SimonSays mit meinem derzeitigen Kenntnisstand in Java zu programmieren.
Wer nicht weiss was das für ein Spiel ist hier der Link:

Senso (Spiel) – Wikipedia

Leider habe ich viele Fragen...

Zum einen gibt es viele Fehlermeldungen deren Ursprung ich nicht verstehe. Diese habe ich im Code "auskommentiert".

Das Grundkonzept ist soweit auch noch nicht ganz vorhanden. Einerseits weil ich die Fehlermeldungen noch nicht gelöst habe, andererseits weil ich nicht wirklich weiss wie ich weiter machen soll.

Ich habe einen Array erzeugt indem die Reihenfolge der Labels gespeichert wird, die nacheinander aufblinken.

Ich weiss aber nicht wie man überprüfen kann, ob vom Nutzer der Button geklickt wurde (also der Button der zum jeweiligen Label gehört), der auch an x-ter Stelle auf dem Bildschirm aufblinkte.

Hier erstmal der Code:

Java:
[COLOR=#000000]package senso;


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
import [U]java.lang[/U].*;




publicclass[U]senso[/U]extends JFrame
{
  Container c;
  private JLabel label1;
  private JLabel label2;
  private JLabel label3;
  private JLabel label4;
  private JLabel sensol;
  private JButton b1;
  private JButton b2;
  private JButton b3;
  private JButton b4;
  private JButton start_stop;
 
  
  
  public senso (String title)
  {
    super(title);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    c = getContentPane();
    c.setLayout(new FlowLayout());
    c.setBackground(Color.GRAY);
    
    int frameWidth = 450;
    int frameHeight = 610;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2;
    setLocation(x, y);
    
    label1 = new JLabel("ROT");
    Dimension d2 = new Dimension(200,200);
    label1.setPreferredSize(d2);
    label1.setOpaque(true);
    label1.setFont(new Font("Helvetica",Font.BOLD,28));
    label1.setForeground(Color.WHITE);
    label1.setBackground(Color.RED);
    c.add(label1);
    
    label2 = new JLabel("BLAU");
    
    label2.setPreferredSize(d2);
    label2.setOpaque(true);
    label2.setFont(new Font("Helvetica",Font.BOLD,28));
    label2.setForeground(Color.WHITE);
    label2.setBackground(Color.BLUE);
    c.add(label2);
    
    label3 = new JLabel("GRÜN");
    
    label3.setPreferredSize(d2);
    label3.setOpaque(true);
    label3.setFont(new Font("Helvetica",Font.BOLD,28));
    label3.setForeground(Color.WHITE);
    label3.setBackground(Color.GREEN);
    c.add(label3);
    
    label4 = new JLabel("GELB");
    
    label4.setPreferredSize(d2);
    label4.setOpaque(true);
    label4.setFont(new Font("Helvetica",Font.BOLD,28));
    label4.setForeground(Color.WHITE);
    label4.setBackground(Color.YELLOW);
    c.add(label4);
    
    sensol = new JLabel ("SENSO");
    Dimension d6 = new Dimension(400,40);
    sensol.setPreferredSize(d6);
    sensol.setOpaque(true);
    sensol.setFont(new Font("Helvetica",Font.BOLD,28));
    sensol.setHorizontalAlignment(SwingConstants.CENTER);
    sensol.setForeground(Color.WHITE);
    sensol.setBackground(Color.GRAY);
    c.add(sensol);
    
    knopflistener kl = new knopflistener();
    knopflistener2 kl2 = new knopflistener2();
    knopflistener3 kl3 = new knopflistener3();
    knopflistener4 kl4 = new knopflistener4();
    
    b1 = new JButton("Change colour 1");
    b1.addActionListener(kl);
    
    b2 = new JButton("Change colour 2");
    b2.addActionListener(kl2);
    
    b3 = new JButton("Change colour 3");
    b3.addActionListener(kl3);
    
    b4 = new JButton("Change colour 4");
    b4.addActionListener(kl4);
    
    knopflistener5 kl_start_stop = new knopflistener5();
   
    start_stop = new JButton("Start/Stop");
    start_stop.addActionListener(kl_start_stop);
    
    c.add(b1);
    c.add(b2);
    c.add(b3);
    c.add(b4);
    c.add(sensol);
    c.add(start_stop);
    
    setResizable(false);
    setVisible(true);
  }
  
  
  
  
  class knopflistener implements ActionListener
  {
booleaneins = false;
    public void actionPerformed(ActionEvent e)
    {
      
      if (eins == false) {
        label1.setBackground(Color.BLACK);
        eins = true;
      } // end of if
      else {
        label1.setBackground(Color.RED);
        eins = false;
      } // end of if
    }
  }
  class knopflistener2 implements ActionListener
  {
booleanzwei = false;
    public void actionPerformed(ActionEvent e)
    
    {
      
      if (zwei == false) {
        label2.setBackground(Color.BLACK);
        zwei = true;
      } // end of if
      else {
        label2.setBackground(Color.BLUE);
        zwei = false;
      } // end of if
    }
  }
  class knopflistener3 implements ActionListener
  {
booleandrei = false;
    public void actionPerformed(ActionEvent e)
    {
      
      if (drei == false) {
        label3.setBackground(Color.BLACK);
        drei = true;
      } // end of if
      else {
        label3.setBackground(Color.GREEN);
        drei = false;
      } // end of if
    }
  }
  class knopflistener4 implements ActionListener
  {
booleanvier = false;
    public void actionPerformed(ActionEvent e)
    {
      
      if (vier == false) {
        label4.setBackground(Color.BLACK);
        vier = true;
      } // end of if
      else {
        label4.setBackground(Color.YELLOW);
        vier = false;
      } // end of if
      
    }
  }
  class knopflistener5 implements ActionListener 
      {
        boolean ss = false;
 
        public void actionPerformed(ActionEvent e)
        {
          if (ss == false) {
            ss = true;
          } // end of if
          else {
            ss = true;
          } // end of if
          
        }
      }     
  


     
booleancomputeramzug = true; 
booleanrichtig = true;
int[] welchesfeld = newint[100][U];[/U]// Syntax error on token ";", { expected after this token
     
     
      
     for (int i = 0; i<100;i++)
     {
         welchesfeld[i]= (int) (Math.random()*4 +1);
     }
      
     int runde = 0;
     
     
do{      // [U]Hier[/U] [U]blinken[/U] die Labels [U]nacheinander[/U] [U]auf[/U], die [U]der[/U] [U]Nutzer[/U] [U]dann[/U]  in
              // [U]richtiger[/U] [U]Reihenfolge[/U] [U]anklicken[/U] [U]soll[/U]
         
         for (int a = 0; a <= runde; a++){
         
         if (welchesfeld[a] == 1){
             label1.setBackground(Color.BLACK);
             Thread.sleep(1000);
             label1.setBackground(Color.RED);
         }
         else if (welchesfeld[a] == 2){
             label2.setBackground(Color.BLACK);
             Thread.sleep(1000);
             label2.setBackground(Color.BLUE);
         }
         else if (welchesfeld[a] == 3){
             label3.setBackground(Color.BLACK);
             Thread.sleep(1000);
             label3.setBackground(Color.GREEN);
         }
         else if (welchesfeld[a] == 4){
             label4.setBackground(Color.BLACK);
             Thread.sleep(1000);
             label4.setBackground(Color.YELLOW);
         }
         
        }
         
      }while (ss == true && richtig == true && computeramzug == true);
          


    
  
publicstaticvoid main[U]([/U]String[] args[U])[/U]//Multiple markers at this line
    //- Syntax error on token ")", ; 
    // expected
    //- Syntax error on token "(", ; 
     //expected
  {
new senso("SENSO by Yannick");
  }


[U]}[/U]//Syntax error, insert "}" to complete ClassBody
[/COLOR]

Danke im Voraus

PS: 1. Bin neu im Forum, sry wenn ich was falsch gemacht habe
2. Wer so ein Spiel schon einmal programmiert hat, kann mir auch gerne seinen Ansatz mitteilen!
 

strußi

Top Contributor
also in zeile 262 die main schreibt man "public static void main( String[] args){"
das dürfte einen fehler beheben

poste doch bitte die fehlermeldungen.
grüße
 

Saheeda

Top Contributor
Hi,

- Klassen werden in Java mit großem Buchstaben angefangen. Momentan heißt deine senso-Klasse genauso wie dein Package, evtl ruft das Konflikte hervor
- dir fehlen ganz ganz oft Leerzeichen, z.B. Z. 15, 131, 147, 164, 216. Schau nochmal Zeile für Zeile durch
 

strußi

Top Contributor
moin,
um es noch mal klar zu stellen:
zwischen Sichtbarkeit/Zugriff(public, private, protected)
static oder nicht (nach notwendigkeit)
final oder nicht (nach notwendigkeit)
Rückgabetyp (void, String, int, ....)
name
gehört immer ein leerzeichen

mir ist auch nicht ergründlich warum du html-tags verwendest.
 

2Kcinnay

Mitglied
Die html tags und die Leerzeichen sind irgendwie beim Copy/Pasten mit reingerutscht. Keine Ahnung wieso, in eclipse sieht das alles sauber aus...
Daran kann der Fehler also nicht liegen
 

2Kcinnay

Mitglied
Fehlermeldungen habe ich als Kommentare mit reingeschrieben. Leider sind auch hier beim Einfügen in den Post irgendwie Html Tags reingerutscht....
 

strußi

Top Contributor
mit fehlermeldung meine ich so was

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous tree type: <any>
at pkgtry.Array.main(Array.java:19)
einfach mal alles was da steht hier posten
 

2Kcinnay

Mitglied
nach dem kompilieren wir diese Angezeigt:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
Syntax error on token "(", ; expected
Syntax error on token ")", ; expected

Die Fehlermeldungen die ausser dieser vor dem kompilieren in eclipse neben den Zeilen markiert werden habe ich ja bereits auskommentiert.
 

strußi

Top Contributor
hab mir das mal kurz angeschaut,

wie gesagt, ein paar syntaxfehler, freilaufende for -schleife, Namensgebenung, Formatierung, ...

jetzt sollte es soweit laufen, bis auf die Methode in 212, die dir gefehlt hat, die musst du noch anbinden oder in eine deiner inneren klassen einbinden,

deine Klasse knopflistener macht immer das selbe auf einem anderen Label. mach eine Action daraus und übergib das label als variable, einmal code (oop)

Java:
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package javaforum.senso;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
 
 
 
 
public class Senso extends JFrame
{
  Container c;
  private JLabel label1;
  private JLabel label2;
  private JLabel label3;
  private JLabel label4;
  private JLabel sensol;
  private JButton b1;
  private JButton b2;
  private JButton b3;
  private JButton b4;
  private JButton start_stop;
 
 
 
  public Senso (String title)
  {
    super(title);// kann auch mit setTitle(title); realisiert werden
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    c = getContentPane();
    c.setLayout(new FlowLayout());
    c.setBackground(Color.GRAY);
 
    int frameWidth = 450;
    int frameHeight = 610;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2;
    setLocation(x, y);
 
    label1 = new JLabel("ROT");
    Dimension d2 = new Dimension(200,200);
    label1.setPreferredSize(d2);
    label1.setOpaque(true);
    label1.setFont(new Font("Helvetica",Font.BOLD,28));
    label1.setForeground(Color.WHITE);
    label1.setBackground(Color.RED);
    c.add(label1);
 
    label2 = new JLabel("BLAU");
 
    label2.setPreferredSize(d2);
    label2.setOpaque(true);
    label2.setFont(new Font("Helvetica",Font.BOLD,28));
    label2.setForeground(Color.WHITE);
    label2.setBackground(Color.BLUE);
    c.add(label2);
 
    label3 = new JLabel("GRÜN");
 
    label3.setPreferredSize(d2);
    label3.setOpaque(true);
    label3.setFont(new Font("Helvetica",Font.BOLD,28));
    label3.setForeground(Color.WHITE);
    label3.setBackground(Color.GREEN);
    c.add(label3);
 
    label4 = new JLabel("GELB");
 
    label4.setPreferredSize(d2);
    label4.setOpaque(true);
    label4.setFont(new Font("Helvetica",Font.BOLD,28));
    label4.setForeground(Color.WHITE);
    label4.setBackground(Color.YELLOW);
    c.add(label4);
 
    sensol = new JLabel ("SENSO");
    Dimension d6 = new Dimension(400,40);
    sensol.setPreferredSize(d6);
    sensol.setOpaque(true);
    sensol.setFont(new Font("Helvetica",Font.BOLD,28));
    sensol.setHorizontalAlignment(SwingConstants.CENTER);
    sensol.setForeground(Color.WHITE);
    sensol.setBackground(Color.GRAY);
    c.add(sensol);
 
    knopflistener kl = new knopflistener();
    knopflistener2 kl2 = new knopflistener2();
    knopflistener3 kl3 = new knopflistener3();
    knopflistener4 kl4 = new knopflistener4();
 
    b1 = new JButton("Change colour 1");
    b1.addActionListener(kl);
 
    b2 = new JButton("Change colour 2");
    b2.addActionListener(kl2);
 
    b3 = new JButton("Change colour 3");
    b3.addActionListener(kl3);
 
    b4 = new JButton("Change colour 4");
    b4.addActionListener(kl4);
 
    knopflistener5 kl_start_stop = new knopflistener5();
 
    start_stop = new JButton("Start/Stop");
    start_stop.addActionListener(kl_start_stop);
 
    c.add(b1);
    c.add(b2);
    c.add(b3);
    c.add(b4);
    c.add(sensol);
    c.add(start_stop);
 
    setResizable(false);
    setVisible(true);
  }
 
 
 
 
  class knopflistener implements ActionListener
  {
    boolean eins = false;
    public void actionPerformed(ActionEvent e)
    {
 
      if (eins == false) {
        label1.setBackground(Color.BLACK);
        eins = true;
      } // end of if
      else {
        label1.setBackground(Color.RED);
        eins = false;
      } // end of if
    }
  }
  class knopflistener2 implements ActionListener
  {
    boolean zwei = false;
    public void actionPerformed(ActionEvent e)
 
    {
 
      if (zwei == false) {
        label2.setBackground(Color.BLACK);
        zwei = true;
      } // end of if
      else {
        label2.setBackground(Color.BLUE);
        zwei = false;
      } // end of if
    }
  }
  class knopflistener3 implements ActionListener
  {
    boolean drei = false;
    public void actionPerformed(ActionEvent e)
    {
 
      if (drei == false) {
        label3.setBackground(Color.BLACK);
        drei = true;
      } // end of if
      else {
        label3.setBackground(Color.GREEN);
        drei = false;
      } // end of if
    }
  }
  class knopflistener4 implements ActionListener
  {
    boolean vier = false;
    public void actionPerformed(ActionEvent e)
    {
 
      if (vier == false) {
        label4.setBackground(Color.BLACK);
        vier = true;
      } // end of if
      else {
        label4.setBackground(Color.YELLOW);
        vier = false;
      } // end of if
 
    }
  }
  class knopflistener5 implements ActionListener 
      {
        boolean ss = false;
 
        public void actionPerformed(ActionEvent e)
        {
          if (ss == false) {
            ss = true;
          } // end of if
          else {
            ss = true;
          } // end of if
 
        }
      }     
 
 
public void methodeFEHLT( boolean ss) throws InterruptedException{
 
    boolean computeramzug = true; 
    boolean richtig = true;
    int[] welchesfeld = new int[100];// Syntax error on token ";", { expected after this token
 
 
 
     for (int index = 0; index<welchesfeld.length; index++)
     {
         welchesfeld[index]= (int) (Math.random()*4 +1);
     }
 
     int runde = 0;
 
 
    do{      // Hier blinken die Labels nacheinander auf, die der Nutzer dann  in
              // richtiger Reihenfolge anklicken soll
 
         for (int a = 0; a <= runde; a++){
 
         if (welchesfeld[a] == 1){
             label1.setBackground(Color.BLACK);
             Thread.sleep(1000);
             label1.setBackground(Color.RED);
         }
         else if (welchesfeld[a] == 2){
             label2.setBackground(Color.BLACK);
             Thread.sleep(1000);
             label2.setBackground(Color.BLUE);
         }
         else if (welchesfeld[a] == 3){
             label3.setBackground(Color.BLACK);
             Thread.sleep(1000);
             label3.setBackground(Color.GREEN);
         }
         else if (welchesfeld[a] == 4){
             label4.setBackground(Color.BLACK);
             Thread.sleep(1000);
             label4.setBackground(Color.YELLOW);
         }
 
        }
 
      }
while (ss == true && richtig == true && computeramzug == true);
 
 
}
 
 
public static void main(String[] args)//Multiple markers at this line
    //- Syntax error on token ")", ; 
    // expected
    //- Syntax error on token "(", ; 
     //expected
  {
    new Senso("SENSO by Yannick");
  }
 
 
}//Syntax error, insert "}" to complete ClassBody

es gäbe sicher mehr zu sagen, aber dass sollte erstmal reichen
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Swing Kugel/Sphäre programmieren AWT, Swing, JavaFX & SWT 12
H RPG Programmieren, label.setLocation funktioniert nicht AWT, Swing, JavaFX & SWT 7
H LayoutManager RPG Programmieren, eigenes Spielfeld grafisch generieren aus Tileset AWT, Swing, JavaFX & SWT 18
T Button für GUI programmieren AWT, Swing, JavaFX & SWT 1
T Wie kann man in java aufwendige grafiken programmieren AWT, Swing, JavaFX & SWT 1
A 2D-Grafik Sprung programmieren AWT, Swing, JavaFX & SWT 35
M Nutzer interface Programmieren AWT, Swing, JavaFX & SWT 2
J Kleines Helikopterspiel programmieren AWT, Swing, JavaFX & SWT 2
R kleinen JPanelEditor programmieren AWT, Swing, JavaFX & SWT 3
C Gesucht: Hilfe beim programmieren. AWT, Swing, JavaFX & SWT 1
C Hilfe beim programmieren mit studiumgebundenes Projekt AWT, Swing, JavaFX & SWT 1
T Möchte Android-ähnlich programmieren AWT, Swing, JavaFX & SWT 7
R Eclipse GUI Programmieren AWT, Swing, JavaFX & SWT 8
I LookAndFeel HTML Auflösung - Online Editor programmieren AWT, Swing, JavaFX & SWT 2
J 2D-Grafik Menü programmieren AWT, Swing, JavaFX & SWT 2
J Swing Landkarte mithilfe von Swing programmieren AWT, Swing, JavaFX & SWT 4
T Kleinen "Gui Builder" programmieren AWT, Swing, JavaFX & SWT 12
SexyPenny90 Wie Ball programmieren, der im 4 Eck rum fliegt AWT, Swing, JavaFX & SWT 7
I Rechner programmieren AWT, Swing, JavaFX & SWT 6
F UI Toolkit programmieren AWT, Swing, JavaFX & SWT 9
3 Eigenes Frame/Window programmieren AWT, Swing, JavaFX & SWT 2
S Desktop Programmieren AWT, Swing, JavaFX & SWT 2
A Programmieren einer Agenda mit einer Liste (als Applet und .txt zum Speichern) AWT, Swing, JavaFX & SWT 7
C Swing Orderbook programmieren AWT, Swing, JavaFX & SWT 6
B Editor programmieren AWT, Swing, JavaFX & SWT 26
LittleJavaCup Suchmaschine programmieren (wie bei Windows) AWT, Swing, JavaFX & SWT 2
T AWT verschiedene Oberflächen programmieren AWT, Swing, JavaFX & SWT 5
vandread Swing Probleme mit "Game of Life" programmieren AWT, Swing, JavaFX & SWT 8
J Modelleisenbahn - Kontroll-Tafel programmieren AWT, Swing, JavaFX & SWT 3
L Regler in Java Programmieren AWT, Swing, JavaFX & SWT 12
I Preisvergleich programmieren AWT, Swing, JavaFX & SWT 4
P Swing Roter Faden beim Applet GUI Programmieren AWT, Swing, JavaFX & SWT 2
J FAQ programmieren, welche Swing-Elemente AWT, Swing, JavaFX & SWT 7
G GUI - Inhalte wechseln (Eingabe-Assistenten programmieren) AWT, Swing, JavaFX & SWT 2
C Zeitplaner: Terminblock programmieren AWT, Swing, JavaFX & SWT 7

Ähnliche Java Themen

Neue Themen


Oben