Heyho,
habe ein kleines Senso-Spiel programmiert. Bei mir auf dem Pc und auf meinem Laptop (auf beiden JDK 8u20 & NetBeans 8.0.1) läuft die Jar auch, wenn ich es allerdings auf anderen Pc's versuche, kommt folgende Fehlermeldung: "A Java Exception Has Occured".
Jemand eine Idee wodran es liegt?
Hier mal der Code, falls das weiterhilft:
Mfg Fabian
habe ein kleines Senso-Spiel programmiert. Bei mir auf dem Pc und auf meinem Laptop (auf beiden JDK 8u20 & NetBeans 8.0.1) läuft die Jar auch, wenn ich es allerdings auf anderen Pc's versuche, kommt folgende Fehlermeldung: "A Java Exception Has Occured".
Jemand eine Idee wodran es liegt?
Hier mal der Code, falls das weiterhilft:
Java:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import static java.lang.Thread.sleep;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.UIManager;
public class Farbfeld extends JFrame implements Runnable {
int frameHoehe;
int frameBreite;
Integer anzahl;
int geschwindigkeitMS;
int anzahlKlicks;
Integer score;
boolean rundeLaeuft;
boolean gewonnen;
GridLayout layout;
JLabel scoreLabel, statusLabel;
JPanel rotPanel, blauPanel, gelbPanel, gruenPanel;
JButton startButton;
Thread runde;
ArrayList computerFelder, spielerFelder;
public Farbfeld(int hoehe, int breite) {
this.frameHoehe = hoehe;
this.frameBreite = breite;
rundeLaeuft = false;
anzahl = 1;
geschwindigkeitMS = 400;
score = 0;
spielfelderIni(100, 100);
startButtonIni();
mausListenerStarten();
frameIni();
}
private void feldFarbeAendern(JPanel feld) {
if (feld.equals(rotPanel)) {
feld.setBackground(new Color(160, 0, 0));
}
if (feld.equals(gelbPanel)) {
feld.setBackground(new Color(160, 160, 0));
}
if (feld.equals(gruenPanel)) {
feld.setBackground(new Color(0, 160, 0));
}
if (feld.equals(blauPanel)) {
feld.setBackground(new Color(000, 000, 160));
}
}
private JPanel zufallsFeld() {
int zahl = (int) (Math.random() * 4);
if (zahl == 0) {
return rotPanel;
}
if (zahl == 1) {
return blauPanel;
}
if (zahl == 2) {
return gruenPanel;
}
if (zahl == 3) {
return gelbPanel;
} else {
System.out.println("Fehler: zahl zw 0-3");
return null;
}
}
private void zuComputerListeAddieren(JPanel feld) {
if (feld.equals(rotPanel)) {
computerFelder.add("rot");
}
if (feld.equals(gelbPanel)) {
computerFelder.add("gelb");
}
if (feld.equals(gruenPanel)) {
computerFelder.add("gruen");
}
if (feld.equals(blauPanel)) {
computerFelder.add("blau");
}
}
private void rundeSpielen() {
rundeLaeuft = true;
statusLabel.setText("merken");
computerFelder = new ArrayList();
for (int i = 0; i < anzahl; i++) {
JPanel zufallsFeld = zufallsFeld();
zuComputerListeAddieren(zufallsFeld);
Color feldFarbeBackup = zufallsFeld.getBackground();
feldFarbeAendern(zufallsFeld);
try {
sleep(geschwindigkeitMS);
} catch (InterruptedException ex) {
}
zufallsFeld.setBackground(feldFarbeBackup);
try {
sleep(geschwindigkeitMS);
} catch (InterruptedException ex) {
}
}
anzahlKlicks = 0;
spielerFelder = new ArrayList();
statusLabel.setText("spielen");
}
private void mausListenerStarten() {
rotPanel.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent me) {
}
@Override
public void mousePressed(MouseEvent me) {
if (rundeLaeuft) {
anzahlKlicks++;
spielerFelder.add("rot");
rotPanel.setBackground(new Color(200, 0, 0));
}
}
@Override
public void mouseReleased(MouseEvent me) {
if (rundeLaeuft) {
rotPanel.setBackground(new Color(255, 0, 0));
}
}
@Override
public void mouseEntered(MouseEvent me) {
}
@Override
public void mouseExited(MouseEvent me) {
}
});
blauPanel.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent me) {
}
@Override
public void mousePressed(MouseEvent me) {
if (rundeLaeuft) {
anzahlKlicks++;
spielerFelder.add("blau");
blauPanel.setBackground(new Color(0, 0, 200));
}
}
@Override
public void mouseReleased(MouseEvent me) {
if (rundeLaeuft) {
blauPanel.setBackground(new Color(0, 0, 255));
}
}
@Override
public void mouseEntered(MouseEvent me) {
}
@Override
public void mouseExited(MouseEvent me) {
}
});
gelbPanel.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent me) {
}
@Override
public void mousePressed(MouseEvent me) {
if (rundeLaeuft) {
anzahlKlicks++;
spielerFelder.add("gelb");
gelbPanel.setBackground(new Color(200, 200, 0));
}
}
@Override
public void mouseReleased(MouseEvent me) {
if (rundeLaeuft) {
gelbPanel.setBackground(new Color(255, 255, 0));
}
}
@Override
public void mouseEntered(MouseEvent me) {
}
@Override
public void mouseExited(MouseEvent me) {
}
});
gruenPanel.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent me) {
}
@Override
public void mousePressed(MouseEvent me) {
if (rundeLaeuft) {
anzahlKlicks++;
spielerFelder.add("gruen");
gruenPanel.setBackground(new Color(0, 200, 0));
}
}
@Override
public void mouseReleased(MouseEvent me) {
if (rundeLaeuft) {
gruenPanel.setBackground(new Color(0, 255, 0));
}
}
@Override
public void mouseEntered(MouseEvent me) {
}
@Override
public void mouseExited(MouseEvent me) {
}
});
}
private void updateGame() {
if (anzahlKlicks == anzahl) {
ergebnisCheck();
rundeLaeuft = false;
rotPanel.setBackground(Color.red);
blauPanel.setBackground(Color.blue);
gelbPanel.setBackground(Color.yellow);
gruenPanel.setBackground(Color.green);
}
}
private void schwierigkeitSteigern() {
anzahl += 1;
if (geschwindigkeitMS > 180) {
geschwindigkeitMS -= 10;
}
}
private void schwierigkeitReset() {
anzahl = 1;
geschwindigkeitMS = 400;
}
private void ergebnisCheck() {
gewonnen = true;
for (int i = 0; i < anzahl; i++) {
if (!computerFelder.get(i).equals(spielerFelder.get(i))) {
gewonnen = false;
break;
}
}
if (gewonnen) {
score += anzahl;
scoreLabel.setText(score.toString());
schwierigkeitSteigern();
statusLabel.setText("Runde " + anzahl);
} else {
score = 0;
scoreLabel.setText(score.toString());
schwierigkeitReset();
statusLabel.setText("Runde " + anzahl);
}
}
private void threadStarten() {
runde = new Thread(this);
runde.start();
}
private void startButtonIni() {
startButton = new JButton("Start");
startButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (!rundeLaeuft) {
threadStarten();
}
}
});
}
private void spielfelderIni(int hoehe, int breite) {
rotPanel = new JPanel();
gelbPanel = new JPanel();
blauPanel = new JPanel();
gruenPanel = new JPanel();
rotPanel.setPreferredSize(new Dimension(hoehe, breite));
gelbPanel.setPreferredSize(new Dimension(hoehe, breite));
blauPanel.setPreferredSize(new Dimension(hoehe, breite));
gruenPanel.setPreferredSize(new Dimension(hoehe, breite));
rotPanel.setBackground(Color.red);
gruenPanel.setBackground(Color.green);
blauPanel.setBackground(Color.blue);
gelbPanel.setBackground(Color.yellow);
}
private void frameIni() {
this.setTitle("Farbfeld");
this.setLocation(400, 200);
this.setSize(new Dimension(frameHoehe, frameBreite));
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
layout = new GridLayout(4, 1);
layout.setHgap(10);
layout.setVgap(10);
this.setLayout(layout);
scoreLabel = new JLabel(score.toString());
statusLabel = new JLabel("Runde " + anzahl);
statusLabel.setFont(scoreLabel.getFont().deriveFont(25f));
statusLabel.setForeground(Color.GRAY);
scoreLabel.setFont(scoreLabel.getFont().deriveFont(60f));
scoreLabel.setForeground(Color.GRAY);
add(scoreLabel);
add(statusLabel);
add(rotPanel);
add(gruenPanel);
add(gelbPanel);
add(blauPanel);
add(startButton);
this.setResizable(false);
this.setVisible(true);
}
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(
javax.swing.UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
}
new Farbfeld(280, 400);
}
@Override
public void run() {
rundeSpielen();
while (rundeLaeuft) {
updateGame();
try {
sleep(100);
} catch (InterruptedException ex) {
}
}
}
}
Mfg Fabian
Zuletzt bearbeitet: