Z
Zoda²
Gast
Hi, ich bin noch ziemlich neu in Java
und habe zwei Fragen zu einem Galgenmännchenspiel (das Spiel bei dem man ein Wort eingibt und der andere muss es erraten). Bis jetzt kann ein Spieler ein Wort eingeben und ein anderer über eine JComboBox einen Buchstaben auswählen. Ist der Buchstabe in Wort erhalten, kommt ein Fenster mit der Meldung das der Buchstabe im Wort befindet. Zusätzlich wird noch die Stelle angegeben. Jetzt würde ich gerne die Buchstaben in der richtigen Reihenfolge aufzeigen lassen. Bsp.: Spieler 1 gibt das Wort HALLO ein. Spieler 2 wählt den Buchstaben O aus. Jetzt soll der Buchstabe O angezeigt werden. Als nächstes wählt Spieler 2 den Buchstaben A aus und das ist jetzt mein Problem, weil ich nicht weiß, wie ich es programmier, dass das A vor dem O angezeigt wird und dazwischen noch zwei Leerzeichen für die zwei L's sind. Außerdem wird bei der aktuellen Version komischerweiße der letzte richtige Buchstabe nochmal angezeigt, wenn man einen anderen auswählt und ich habe keine Ahnung warum :bahnhof: . Währe net, wenn mir jemand helfen könnte. Hier ist der aktuelle Code:
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class galgenmaennchen extends JFrame implements ActionListener, ItemListener {
String Buchstaben1[] = { " ", "A", "B", "C", "D", "E", "F", "G",
"H", "I", "J", "K", "L", "M", "N", "O",
"P", "Q", "R", "S", "T", "U", "V", "W",
"X", "Y", "Z", "Ä", "Ö", "Ü" };
char[] buchstaben;
char d;
int Buchstabenzähler = 0;
int a = 0;
int b = 0;
int e = 0;
String c = "";
JPanel pane = new JPanel();
JComboBox Buchstaben2 = new JComboBox();
JButton neustart = new JButton("Start/Neustart");
JLabel länge = new JLabel("Das Wort besteht aus insgesamt " + a + " Buchstaben");
public galgenmaennchen() {
super("Galgenmännchen");
setSize(500, 100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
while (Buchstabenzähler < 30) {
Buchstaben2.addItem(Buchstaben1[Buchstabenzähler]);
Buchstabenzähler++;
}
Buchstaben2.addItemListener(this);
neustart.addActionListener(this);
pane.add(neustart);
pane.add(Buchstaben2);
pane.add(länge);
setContentPane(pane);
}
void start() {
a = 0;
pane.remove(länge);
String wort = JOptionPane.showInputDialog(null,
"Bitte das zu erratende Wort in GROSSBUCHSTABEN eingeben",
"Start",
JOptionPane.QUESTION_MESSAGE);
try {
while (true) {
char Buchstaben3 = wort.charAt(a);
a++;
}
}
catch (Exception e) {
}
b = a - 1;
buchstaben = new char[a];
while (b > 0) {
buchstaben[b] = wort.charAt(b);
b--;
}
buchstaben[0] = wort.charAt(0);
länge = new JLabel("Das Wort besteht aus insgesamt " + a + " Buchstaben");
pane.add(länge);
setContentPane(pane);
}
void auswertung() {
while (b < a) {
if (d == buchstaben[b]) {
e = b + 1;
JOptionPane.showMessageDialog(null,
"Der Buchstabe " + buchstaben[b] + " steht an " + e + ". Stelle");
}
b++;
}
b = 0;
}
public static void main(String[] args) {
galgenmaennchen spiel = new galgenmaennchen();
spiel.setVisible(true);
}
public void actionPerformed(ActionEvent evt1) {
Object source1 = evt1.getSource();
if (source1 == neustart) {
start();
}
}
public void itemStateChanged(ItemEvent evt2) {
Object source2 = evt2.getSource();
if (source2 == Buchstaben2) {
Object Buchstabe = evt2.getItem();
c = Buchstabe.toString();
d = c.charAt(0);
auswertung();
}
}
}