Ich habe ein kleines Reaktionsspiel mit Eclipse programmiert , bei dem man einfach innerhalb einer bestimmten Zeit einen roten Button klicken muss .Während des Spielverlaufs kommen noch mehrere Ablenkfarbbuttons dazu und die Rektionszeit(noch nicht eingebaut)verkürtz sich.
Mein Problem ist , dass ich wenn ich das Programm starte nur den Anfangsbildschirm angezeigt bekomme.
Sobald ich jedoch einen Button drücke reagiert das Programm auf nichts mehr .
Ich vermute einfach , dass das an meinem Laptop liegt.
Deswegen brauche ich jemanden der das Programm mal ausführt und mir dann sagt :
1. Ob es läuft
2. Ob es läuft aber während des Programmverlaufs Fehler gibt
3. Ob irgendetwas auffällig ist .(Das kann alles von Verzögerungen bis Bugs sein)
und 4.(optional) Verbesserungsvorschläge
eine schnelle Antwort wäre sehr hilfreich.
Und im folgenden der Programmcode: ( ich bin neu hier also schreib ich ihn einfach)
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Reactor implements ActionListener {
JButton[] btns = new JButton[25];
int punktzahl = 0;
int schwierigkeit=5;
int sekundenzähler=0;
int limit=10000;
int wartezeit=1000;
int high = 26;
int low = 1;
int mommentaneZahl=12;
int spielfeldgröße=25;
int spielfeldlänge = (int) Math.sqrt(spielfeldgröße);
boolean start=false;
public Reactor() {
initializeButtons();
JFrame f = new JFrame();
JPanel panel=new JPanel();
JPanel spielfeld = new JPanel();
panel.setLayout(new BorderLayout());
spielfeld.setLayout(new GridLayout(spielfeldlänge,spielfeldlänge));
for (int zeile = 0; zeile < spielfeldgröße; zeile++) {
spielfeld.add(btns[zeile]);
btns[zeile].addActionListener(this);
btns[zeile].setBackground(Color.WHITE);
btns[zeile].setText(""+(zeile)+"");
btns[zeile].setActionCommand(""+zeile+"");
}
btns[12].setBackground(Color.RED);
panel.add(spielfeld, BorderLayout.CENTER);
f.getContentPane().add(panel);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.pack();
f.setLocationRelativeTo(null);
}
private void initializeButtons() {
for (int a = 0; a < spielfeldgröße; a++) {
btns[a] = new JButton(" ");
}
while(start=true){
while(sekundenzähler<limit){
sekundenzähler++;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
@Override
public void actionPerformed(ActionEvent arg0) {
start=true;
String gedrückteZahl= arg0.getActionCommand();
if (gedrückteZahl.equals(btns[mommentaneZahl])){
punktzahl++;
if(punktzahl>5){
int zufallszahlextra1 =(int)(Math.random()*(spielfeldgröße+1));
btns[zufallszahlextra1].setBackground(Color.BLUE);
}
if(punktzahl>10){
int zufallszahlextra2 =(int)(Math.random()*(spielfeldgröße+1));
btns[zufallszahlextra2].setBackground(Color.GREEN);
}
if(punktzahl>15){
int zufallszahlextra3 =(int)(Math.random()*(spielfeldgröße+1));
btns[zufallszahlextra3].setBackground(Color.YELLOW);
}
if(punktzahl>20){
int zufallszahlextra4 =(int)(Math.random()*(spielfeldgröße+1));
btns[zufallszahlextra4].setBackground(Color.ORANGE);
}
if(punktzahl>25){
int zufallszahlextra5 =(int)(Math.random()*(spielfeldgröße+1));
btns[zufallszahlextra5].setBackground(Color.BLACK);
}
btns[mommentaneZahl].setBackground(Color.WHITE);
int zufallszahl =(int)(Math.random()*(spielfeldgröße+1));
btns[zufallszahl].setBackground(Color.RED);
mommentaneZahl=zufallszahl;
sekundenzähler=0;
}
else{
for (int zeile = 0; zeile < spielfeldgröße; zeile++) {
btns[zeile].removeActionListener(this);
start=false;
}
}
}
public static void main(String[] args) {
Reactor r = new Reactor();
}
}
Mein Problem ist , dass ich wenn ich das Programm starte nur den Anfangsbildschirm angezeigt bekomme.
Sobald ich jedoch einen Button drücke reagiert das Programm auf nichts mehr .
Ich vermute einfach , dass das an meinem Laptop liegt.
Deswegen brauche ich jemanden der das Programm mal ausführt und mir dann sagt :
1. Ob es läuft
2. Ob es läuft aber während des Programmverlaufs Fehler gibt
3. Ob irgendetwas auffällig ist .(Das kann alles von Verzögerungen bis Bugs sein)
und 4.(optional) Verbesserungsvorschläge
eine schnelle Antwort wäre sehr hilfreich.
Und im folgenden der Programmcode: ( ich bin neu hier also schreib ich ihn einfach)
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Reactor implements ActionListener {
JButton[] btns = new JButton[25];
int punktzahl = 0;
int schwierigkeit=5;
int sekundenzähler=0;
int limit=10000;
int wartezeit=1000;
int high = 26;
int low = 1;
int mommentaneZahl=12;
int spielfeldgröße=25;
int spielfeldlänge = (int) Math.sqrt(spielfeldgröße);
boolean start=false;
public Reactor() {
initializeButtons();
JFrame f = new JFrame();
JPanel panel=new JPanel();
JPanel spielfeld = new JPanel();
panel.setLayout(new BorderLayout());
spielfeld.setLayout(new GridLayout(spielfeldlänge,spielfeldlänge));
for (int zeile = 0; zeile < spielfeldgröße; zeile++) {
spielfeld.add(btns[zeile]);
btns[zeile].addActionListener(this);
btns[zeile].setBackground(Color.WHITE);
btns[zeile].setText(""+(zeile)+"");
btns[zeile].setActionCommand(""+zeile+"");
}
btns[12].setBackground(Color.RED);
panel.add(spielfeld, BorderLayout.CENTER);
f.getContentPane().add(panel);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.pack();
f.setLocationRelativeTo(null);
}
private void initializeButtons() {
for (int a = 0; a < spielfeldgröße; a++) {
btns[a] = new JButton(" ");
}
while(start=true){
while(sekundenzähler<limit){
sekundenzähler++;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
@Override
public void actionPerformed(ActionEvent arg0) {
start=true;
String gedrückteZahl= arg0.getActionCommand();
if (gedrückteZahl.equals(btns[mommentaneZahl])){
punktzahl++;
if(punktzahl>5){
int zufallszahlextra1 =(int)(Math.random()*(spielfeldgröße+1));
btns[zufallszahlextra1].setBackground(Color.BLUE);
}
if(punktzahl>10){
int zufallszahlextra2 =(int)(Math.random()*(spielfeldgröße+1));
btns[zufallszahlextra2].setBackground(Color.GREEN);
}
if(punktzahl>15){
int zufallszahlextra3 =(int)(Math.random()*(spielfeldgröße+1));
btns[zufallszahlextra3].setBackground(Color.YELLOW);
}
if(punktzahl>20){
int zufallszahlextra4 =(int)(Math.random()*(spielfeldgröße+1));
btns[zufallszahlextra4].setBackground(Color.ORANGE);
}
if(punktzahl>25){
int zufallszahlextra5 =(int)(Math.random()*(spielfeldgröße+1));
btns[zufallszahlextra5].setBackground(Color.BLACK);
}
btns[mommentaneZahl].setBackground(Color.WHITE);
int zufallszahl =(int)(Math.random()*(spielfeldgröße+1));
btns[zufallszahl].setBackground(Color.RED);
mommentaneZahl=zufallszahl;
sekundenzähler=0;
}
else{
for (int zeile = 0; zeile < spielfeldgröße; zeile++) {
btns[zeile].removeActionListener(this);
start=false;
}
}
}
public static void main(String[] args) {
Reactor r = new Reactor();
}
}