Ich habe schon nachgeschaut ob ich zu meinem Problem was finde aber ich blicke da irgendwie nicht durch.
Ich bin gerade dabei Simon says zu programmieren und habe ein Feld mit 25 Buttons. Wenn ich auf Start drücke dann blinkt irgendein Radom Button den ich dann im nachhinein klicken muss der bringt mich dann in die zweite runde des Spiels und dann blinkt wieder der Button der davor geleuchtet hat und irgendein neuer aus den 25 ( es kann auch der gleiche wieder kommen). Soweit wenn ich auf Start drücke, dann blinkt ein Button Random. Jetzt verstehe ich nicht wie ich das machen muss um in die zweite runde zu kommen. Nach meiner Programmierung, wo ich mal was versucht hatte blinkt der nächste Button immer erst wenn ich den anderen gedrückt habe. aber in der zweiten runde sollen als erstes alle blinken also in diesem fall 2 und dann muss man die drücken. Was kann ich da machen ?
Mein Problem liegt eher bei der Ausführung also beim ActionListener(also die rechte seite) aber hier trotzdem der ganze Code.
[CODE lang="java" title="Simon Says"]package simonSay;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.Timer;
public class Simonsay extends JFrame implements ActionListener
{
private static final long serialVersionUID = 1L;
JLabel ueberschrift = new JLabel("Simon Says");
JButton knopf1[]=new JButton[30];
JButton knopf27 = new JButton();
JButton start = new JButton();
JButton reset = new JButton();
private Timer timer;
private int speicher[];
private int speicher2[];
private int speicher3[];
private int speicher4[];
JLabel Runde = new JLabel("Runde: ");
public Simonsay() {
speicher = new int[25];
for(int i=0;i<speicher.length;i++)
speicher = (int)(Math.random()*25)+1;
speicher2 = new int[25];
for(int i=0;i<speicher2.length;i++)
speicher2 = (int)(Math.random()*25)+1;
speicher3 = new int[25];
for(int i=0;i<speicher3.length;i++)
speicher3 = (int)(Math.random()*25)+1;
speicher4 = new int[25];
for(int i=0;i<speicher4.length;i++)
speicher4 = (int)(Math.random()*25)+1;
for(int test : speicher)
System.out.println(test);
//frame einstellungen
timer = new Timer(1000,this);
this.setResizable(false);
this.add(ueberschrift);
this.setLayout(null);
this.setTitle("Simon Says");
this.add(Runde);
for (int i=1;i<=25;i++) {
knopf1=new JButton();
knopf1.addActionListener(this);
this.add(knopf1);
knopf1.setBackground(Color.GRAY);
}
//Location gesetzt
for(int i=1; i<=5;i++) {
knopf1.setBounds(300+i*52,200,50,50);
}
for(int i=6; i<=10;i++) {
knopf1.setBounds(40+i*52,250+2,50,50);
}
for(int i=11; i<=15;i++) {
knopf1.setBounds(-220+i*52,300+4,50,50);
}
for(int i=16; i<=20;i++) {
knopf1.setBounds(-480+i*52,350+6,50,50);
}
for(int i=21; i<=25;i++) {
knopf1.setBounds(-740+i*52,400+8,50,50);
}
knopf27.setBounds(830, 630, 100, 50);
start.setBounds(850, 490, 80, 50);
reset.setBounds(840, 560, 90, 50);
ueberschrift.setBounds(435, 0, 200, 50);
//Buttons dem frame hinzugefügt und Text gegeben
this.add(knopf27);
this.add(start);
this.add(reset);
knopf27.addActionListener(this);
start.addActionListener(this);
reset.addActionListener(this);
knopf27.setText("Schließen");
start.setText("Start");
reset.setText("Neustart");
Runde.setBounds(450, 470, 250, 50);
//hintergrundfarben
getContentPane().setBackground(Color.LIGHT_GRAY);
knopf27.setBackground(Color.GRAY);
start.setBackground(Color.GRAY);
reset.setBackground(Color.GRAY);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[]args)
{
//neues frame
Simonsay fenster = new Simonsay();
fenster.setSize(1000, 800);
fenster.setLocation(450, 100);
fenster.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e)
{
//Schließen
if(e.getSource()==knopf27) {this.dispose();}
//Reset
for(int a=1;a<=25;a++) {
knopf1[a].setBackground(Color.GRAY);
if(e.getSource()==reset) {
int reset=1;
Runde.setText("Runde: "+reset);
for (int u=1;u<=25;u++) {
knopf1[a].setBackground(Color.RED);
timer.start();
}
}}
//Startrunde:
for(int u=0;u<1;u++) {
int zahl = 1;
if(e.getSource()==start) {
knopf1[speicher[0]].setEnabled(true);
knopf1[speicher[0]].setBackground(Color.GRAY);
if(zahl==1) {
knopf1[speicher[0]].setBackground(Color.YELLOW);
timer.start();
Runde.setText("Runde: "+zahl);
}
}}
if(e.getSource()==knopf1[speicher[0]])
knopf1[speicher[0]].setEnabled(false);
if(e.getSource()==knopf1[speicher[0]]) {
System.out.println("Richtig!!!");
}
else
if(e.getSource()==knopf1[speicher[1]]) {
System.out.println("Richtig!!");
}
}
}
[/CODE]
Ich bin gerade dabei Simon says zu programmieren und habe ein Feld mit 25 Buttons. Wenn ich auf Start drücke dann blinkt irgendein Radom Button den ich dann im nachhinein klicken muss der bringt mich dann in die zweite runde des Spiels und dann blinkt wieder der Button der davor geleuchtet hat und irgendein neuer aus den 25 ( es kann auch der gleiche wieder kommen). Soweit wenn ich auf Start drücke, dann blinkt ein Button Random. Jetzt verstehe ich nicht wie ich das machen muss um in die zweite runde zu kommen. Nach meiner Programmierung, wo ich mal was versucht hatte blinkt der nächste Button immer erst wenn ich den anderen gedrückt habe. aber in der zweiten runde sollen als erstes alle blinken also in diesem fall 2 und dann muss man die drücken. Was kann ich da machen ?
Mein Problem liegt eher bei der Ausführung also beim ActionListener(also die rechte seite) aber hier trotzdem der ganze Code.
[CODE lang="java" title="Simon Says"]package simonSay;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.Timer;
public class Simonsay extends JFrame implements ActionListener
{
private static final long serialVersionUID = 1L;
JLabel ueberschrift = new JLabel("Simon Says");
JButton knopf1[]=new JButton[30];
JButton knopf27 = new JButton();
JButton start = new JButton();
JButton reset = new JButton();
private Timer timer;
private int speicher[];
private int speicher2[];
private int speicher3[];
private int speicher4[];
JLabel Runde = new JLabel("Runde: ");
public Simonsay() {
speicher = new int[25];
for(int i=0;i<speicher.length;i++)
speicher = (int)(Math.random()*25)+1;
speicher2 = new int[25];
for(int i=0;i<speicher2.length;i++)
speicher2 = (int)(Math.random()*25)+1;
speicher3 = new int[25];
for(int i=0;i<speicher3.length;i++)
speicher3 = (int)(Math.random()*25)+1;
speicher4 = new int[25];
for(int i=0;i<speicher4.length;i++)
speicher4 = (int)(Math.random()*25)+1;
for(int test : speicher)
System.out.println(test);
//frame einstellungen
timer = new Timer(1000,this);
this.setResizable(false);
this.add(ueberschrift);
this.setLayout(null);
this.setTitle("Simon Says");
this.add(Runde);
for (int i=1;i<=25;i++) {
knopf1=new JButton();
knopf1.addActionListener(this);
this.add(knopf1);
knopf1.setBackground(Color.GRAY);
}
//Location gesetzt
for(int i=1; i<=5;i++) {
knopf1.setBounds(300+i*52,200,50,50);
}
for(int i=6; i<=10;i++) {
knopf1.setBounds(40+i*52,250+2,50,50);
}
for(int i=11; i<=15;i++) {
knopf1.setBounds(-220+i*52,300+4,50,50);
}
for(int i=16; i<=20;i++) {
knopf1.setBounds(-480+i*52,350+6,50,50);
}
for(int i=21; i<=25;i++) {
knopf1.setBounds(-740+i*52,400+8,50,50);
}
knopf27.setBounds(830, 630, 100, 50);
start.setBounds(850, 490, 80, 50);
reset.setBounds(840, 560, 90, 50);
ueberschrift.setBounds(435, 0, 200, 50);
//Buttons dem frame hinzugefügt und Text gegeben
this.add(knopf27);
this.add(start);
this.add(reset);
knopf27.addActionListener(this);
start.addActionListener(this);
reset.addActionListener(this);
knopf27.setText("Schließen");
start.setText("Start");
reset.setText("Neustart");
Runde.setBounds(450, 470, 250, 50);
//hintergrundfarben
getContentPane().setBackground(Color.LIGHT_GRAY);
knopf27.setBackground(Color.GRAY);
start.setBackground(Color.GRAY);
reset.setBackground(Color.GRAY);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[]args)
{
//neues frame
Simonsay fenster = new Simonsay();
fenster.setSize(1000, 800);
fenster.setLocation(450, 100);
fenster.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e)
{
//Schließen
if(e.getSource()==knopf27) {this.dispose();}
//Reset
for(int a=1;a<=25;a++) {
knopf1[a].setBackground(Color.GRAY);
if(e.getSource()==reset) {
int reset=1;
Runde.setText("Runde: "+reset);
for (int u=1;u<=25;u++) {
knopf1[a].setBackground(Color.RED);
timer.start();
}
}}
//Startrunde:
for(int u=0;u<1;u++) {
int zahl = 1;
if(e.getSource()==start) {
knopf1[speicher[0]].setEnabled(true);
knopf1[speicher[0]].setBackground(Color.GRAY);
if(zahl==1) {
knopf1[speicher[0]].setBackground(Color.YELLOW);
timer.start();
Runde.setText("Runde: "+zahl);
}
}}
if(e.getSource()==knopf1[speicher[0]])
knopf1[speicher[0]].setEnabled(false);
if(e.getSource()==knopf1[speicher[0]]) {
System.out.println("Richtig!!!");
}
else
if(e.getSource()==knopf1[speicher[1]]) {
System.out.println("Richtig!!");
}
}
}
[/CODE]
Zuletzt bearbeitet von einem Moderator: