hallo, bin neu in java und habe mit müh und not und etwas probieren ein applet a la familienduell gemacht (für schule) doch irgendwo ist ein Großer denkfehler drin. Als ich alles über awt gemacht habe (ohne schöne GUI) hats einigermaßen funktioniert. doch nun als ich das ganze versucht habe in Swing zu machen, ist irgendwo der wurm drin. ich find ihn einfach nicht und hoffe hier kann mir jemand helfen. Also die Fragen laufen über hashmap, und der Computergegner funktioniert. Doch irgendwie macht er bei jeder Benutzer eingabe FALSCHE ANTWORT auch wenns dir richtige ist… vielleicht weiß jemand weiter
public class GUI2 extends javax.swing.JApplet {
@Override
public void init() {
try {
java.awt.EventQueue.invokeAndWait(new Runnable() {
public void run() {
initComponents();
antwortFeld.setVisible(false);
benutzerFalscheAntwortZaehlerLabel.setVisible(false);
benutzerGewinnerLabel.setVisible(false);
benutzerPunkteLabel.setVisible(false);
neuesSpiel.setVisible(false);
skynetFalscheAntwortZaehlerLabel.setVisible(false);
skynetGewinnerLabel.setVisible(false);
skynetPunkteLabel.setVisible(false);
antwortButton.setVisible(false);
}
});
} catch (Exception ex) {
ex.printStackTrace();
}
}
public int berechneFrageIndex() {
Object[] frageKeys = fragenUAntworten.fragen.keySet().toArray();
int randIndex = (int) ((Math.random() * 10) + (Math.random() * 10)) - 1;
System.out.println(randIndex);
frageIndex = (Integer) frageKeys[randIndex];
return frageIndex;
}
public void skynet() {
antwortFeld.setVisible(false);
falscheAntwortZaehler = 0;
skynetFalscheAntwortZaehlerLabel.setText(((Integer) falscheAntwortZaehler).toString());
while (falscheAntwortZaehler < 3 && skynetPunkte <= 50) {
int antwortIndex = (int) (Math.random() * fragenUAntworten.antworten.get(frageIndex).keySet().size());
if (antwortIndex == 0) {
antwortIndex = (int) (Math.random() * fragenUAntworten.antworten.get(frageIndex).keySet().size()) + (int) (Math.random() * fragenUAntworten.antworten.get(frageIndex).keySet().size());
}
Object[] keys = fragenUAntworten.antworten.get(frageIndex).keySet().toArray();
while (keys.length <= antwortIndex) {
antwortIndex--;
}
System.out.println(keys[antwortIndex]);
anzahlAntwortZurFrage = fragenUAntworten.antworten.get(frageIndex).get(keys[antwortIndex]);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (anzahlAntwortZurFrage != null && anzahlAntwortZurFrage != 0) {
skynetPunkte += anzahlAntwortZurFrage;
if (skynetPunkte >= 50) {
System.out.println("Skynet hat gewonnen");
skynetGewinnerLabel.setVisible(true);
neuesSpiel.setVisible(true);
}
skynetPunkteLabel.setText(((Integer) skynetPunkte).toString());
fragenUAntworten.antworten.get(frageIndex).remove(keys[antwortIndex]);
Object[] wrongAnswerKeys = fragenUAntworten.antworten.get(frageIndex).keySet().toArray();
for (Object wrongAnswerKey : wrongAnswerKeys) {
if (fragenUAntworten.antworten.get(frageIndex).get(wrongAnswerKey) == 0) {
fragenUAntworten.antworten.get(frageIndex).remove(wrongAnswerKey);
break;
}
}
System.out.println("Richtige Antwort");
} else {
falscheAntwortZaehler++;
System.out.println("Falsche Antwort");
if (falscheAntwortZaehler == 3) {
System.out.println("Benutzer übernimmt das Kommando");
antwortFeld.setVisible(true);
}
skynetFalscheAntwortZaehlerLabel.setText(((Integer) falscheAntwortZaehler).toString());
}
antwortFeld.setText("");
}
falscheAntwortZaehler = 0;
}
public void benutzer() {
antwort = antwortFeld.getText();
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (antwort == null || antwort.equals("")) {
falscheAntwortZaehler++;
System.out.println("Falsche Antwort");
if (falscheAntwortZaehler == 3) {
System.out.println("Skynet übernimmt das Kommando");
benutzerFalscheAntwortZaehlerLabel.setText(((Integer) falscheAntwortZaehler).toString());
skynet();
}
benutzerFalscheAntwortZaehlerLabel.setText(((Integer) falscheAntwortZaehler).toString());
System.out.println(antwort);
} else {
fragenUAntworten.antworten.get(frageIndex).get(antwortFeld.getText());
if (anzahlAntwortZurFrage != null && anzahlAntwortZurFrage != 0) {
benutzerPunkte += anzahlAntwortZurFrage;
if (benutzerPunkte > 50) {
System.out.println("Sie haben gewonnen");
antwortFeld.setVisible(false);
antwortButton.setVisible(false);
benutzerGewinnerLabel.setVisible(true);
}
benutzerPunkteLabel.setText(((Integer) benutzerPunkte).toString());
fragenUAntworten.antworten.get(frageIndex).remove(antwortFeld.getText());
Object[] wrongAnswerKeys = fragenUAntworten.antworten.get(frageIndex).keySet().toArray();
for (Object wrongAnswerKey : wrongAnswerKeys) {
if (fragenUAntworten.antworten.get(frageIndex).get(wrongAnswerKey) == 0) {
fragenUAntworten.antworten.get(frageIndex).remove(wrongAnswerKey);
break;
}
}
System.out.println("Richtige Antwort");
} else {
falscheAntwortZaehler++;
System.out.println("Falsche Antwort");
if (falscheAntwortZaehler == 3) {
System.out.println("Skynet übernimmt das Kommando");
benutzerFalscheAntwortZaehlerLabel.setText(((Integer) falscheAntwortZaehler).toString());
skynet();
}
benutzerFalscheAntwortZaehlerLabel.setText(((Integer) falscheAntwortZaehler).toString());
}
antwortFeld.setText("");
}
}
/** This method is called from within the init() method to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
startButton = new javax.swing.JButton();
neuesSpiel = new javax.swing.JButton();
familienDuellLabel = new javax.swing.JLabel();
benutzerPunkteLabel = new javax.swing.JLabel();
skynetPunkteLabel = new javax.swing.JLabel();
skynetGewinnerLabel = new javax.swing.JLabel();
benutzerGewinnerLabel = new javax.swing.JLabel();
benutzerFalscheAntwortZaehlerLabel = new javax.swing.JLabel();
skynetFalscheAntwortZaehlerLabel = new javax.swing.JLabel();
antwortFeld = new javax.swing.JTextField();
frageLabel = new javax.swing.JLabel();
antwortButton = new javax.swing.JButton();
setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
setStub(null);
getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
jPanel1.setBackground(new java.awt.Color(0, 0, 0));
startButton.setBackground(new java.awt.Color(255, 255, 51));
startButton.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
startButton.setText("Startfrei zum Duell");
startButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
startButtonActionPerformed(evt);
}
});
neuesSpiel.setText("New Game");
neuesSpiel.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
neuesSpielMouseReleased(evt);
}
});
familienDuellLabel.setFont(new java.awt.Font("Tahoma", 1, 36)); // NOI18N
familienDuellLabel.setForeground(new java.awt.Color(255, 255, 0));
familienDuellLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
familienDuellLabel.setText("Familienduell");
benutzerPunkteLabel.setForeground(new java.awt.Color(255, 255, 0));
benutzerPunkteLabel.setText("0");
skynetPunkteLabel.setForeground(new java.awt.Color(255, 255, 0));
skynetPunkteLabel.setText("0");
skynetGewinnerLabel.setForeground(new java.awt.Color(255, 255, 0));
skynetGewinnerLabel.setText("skynet gewinnt");
benutzerGewinnerLabel.setForeground(new java.awt.Color(255, 255, 0));
benutzerGewinnerLabel.setText("Benutzer Gewinnt");
benutzerFalscheAntwortZaehlerLabel.setForeground(new java.awt.Color(255, 255, 0));
benutzerFalscheAntwortZaehlerLabel.setText("0");
skynetFalscheAntwortZaehlerLabel.setForeground(new java.awt.Color(255, 255, 0));
skynetFalscheAntwortZaehlerLabel.setText("0");
antwortFeld.setHorizontalAlignment(javax.swing.JTextField.CENTER);
antwortFeld.setText("Hier Antwort eingeben ");
frageLabel.setForeground(new java.awt.Color(255, 255, 0));
frageLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
antwortButton.setBackground(new java.awt.Color(255, 255, 0));
antwortButton.setText("Antworten");
antwortButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
antwortButtonActionPerformed(evt);
}
});
javax.swing.GroupLayout j.....
);
getContentPane().add(jPanel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, -1, -1));
}// </editor-fold>
private void startButtonActionPerformed(java.awt.event.ActionEvent evt) {
startButton.setVisible(false);
fragenUAntworten = new FragenUndAntworten();
frageLabel.setText(fragenUAntworten.fragen.get(berechneFrageIndex()));
antwortFeld.setVisible(true);
benutzerFalscheAntwortZaehlerLabel.setVisible(true);
benutzerPunkteLabel.setVisible(true);
/*neuesSpiel.setVisible(false);*/
antwortButton.setVisible(true);
skynetFalscheAntwortZaehlerLabel.setVisible(true);
skynetPunkteLabel.setVisible(true);
}
private void neuesSpielMouseReleased(java.awt.event.MouseEvent evt) {
fragenUAntworten = new FragenUndAntworten();
frageLabel.setText(fragenUAntworten.fragen.get(berechneFrageIndex()));
antwortFeld.setVisible(true);
antwortButton.setVisible(true);
benutzerPunkteLabel.setText("0");
skynetGewinnerLabel.setVisible(false);
benutzerGewinnerLabel.setVisible(false);
benutzerPunkte = 0;
skynetPunkteLabel.setText("0");
skynetPunkte = 0;
benutzerFalscheAntwortZaehlerLabel.setText("0");
falscheAntwortZaehler = 0;
skynetFalscheAntwortZaehlerLabel.setText("0"); // TODO add your handling code here:
}
private void antwortButtonActionPerformed(java.awt.event.ActionEvent evt) {
benutzer();
}
// Variables declaration - do not modify
private javax.swing.JButton antwortButton;
private javax.swing.JTextField antwortFeld;
private javax.swing.JLabel benutzerFalscheAntwortZaehlerLabel;
private javax.swing.JLabel benutzerGewinnerLabel;
private javax.swing.JLabel benutzerPunkteLabel;
private javax.swing.JLabel familienDuellLabel;
private javax.swing.JLabel frageLabel;
private javax.swing.JPanel jPanel1;
private javax.swing.JButton neuesSpiel;
private javax.swing.JLabel skynetFalscheAntwortZaehlerLabel;
private javax.swing.JLabel skynetGewinnerLabel;
private javax.swing.JLabel skynetPunkteLabel;
private javax.swing.JButton startButton;
// End of variables declaration
private int frageIndex;
private String antwort;
private String fragen;
private int falscheAntwortZaehler = 0;
private int benutzerPunkte = 0;
private int skynetPunkte = 0;
private FragenUndAntworten fragenUAntworten;
private Integer anzahlAntwortZurFrage;
}