Hallo Leute,
wollte mich mal an das berühmte Galgenmännchen rannschmeißen, funktioniert auch halbwegs, aber dennoch hat sich ein Fehler eingeschlichen den ich nicht finde !! Es sollte bei einem Fehler ein Image geladen werden mit einer Nummer 0-4 (0 ist der Hügel, 1 ist der Mast etc. ) Auch das funktioniert, aber wenn jemand was falsches eingibt und danach wieder was richtiges, verschwindet das Bild von meinem Panel. Macht man danach wieder einen Fehler kommt zwar das "richtige" Fehlerbild, aber beim nächsten Mal richtig raten verschwindet es schon wieder....
Ich hoffe ihr findet daran etwas, was darauf hinweisen könnte warum das bild verschwindet.
wollte mich mal an das berühmte Galgenmännchen rannschmeißen, funktioniert auch halbwegs, aber dennoch hat sich ein Fehler eingeschlichen den ich nicht finde !! Es sollte bei einem Fehler ein Image geladen werden mit einer Nummer 0-4 (0 ist der Hügel, 1 ist der Mast etc. ) Auch das funktioniert, aber wenn jemand was falsches eingibt und danach wieder was richtiges, verschwindet das Bild von meinem Panel. Macht man danach wieder einen Fehler kommt zwar das "richtige" Fehlerbild, aber beim nächsten Mal richtig raten verschwindet es schon wieder....
Ich hoffe ihr findet daran etwas, was darauf hinweisen könnte warum das bild verschwindet.
Java:
package scramble;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Main {
/**
* @param args the command line arguments
*/
static String text = "Donauschifffahrt";
static char[] wort = new char[text.length()]; //Wort zerlegt in ein Array (Platzhalter)
static char[] gesWort = new char[text.length()]; //Wort mit Unterstriche "füttern" nur Anfangs und Endbuchstabe sollten erscheinen
static int[] stellen = new int[text.length()]; //zum testen an welcher Stelle ein Buchstabe ist (mittels indexOf)
static Image[] bilder = new Image[5]; // Array der Hangman BIlder
static int versuche = 0; // Anzahl der Versuche
static char[] rate; // Der geratene Buchstabe
public static void main(String[] args) throws Exception {
// TODO code application logic here
Fenster fen =new Fenster();
final JLabel label = fen.getWort();
final JTextField buchstabe = fen.getEingabe();
final JButton pruefung = fen.getBOk();
final JPanel bild = fen.getpBild();
text.getChars(0, text.length(), wort, 0); //Hier wird nun der String in das Array verfrachtet
// Bilder werden in Array verfrachtet
for (int i = 0; i < bilder.length; i++) {
BufferedImage image = ImageIO.read(new File("bilder/bild" +i +".jpg"));
bilder[i] = image;
}
System.out.println("Länge vom Text " +text.length());
//Das Wort "verschlüsselt" ausgeben
for (int i = 0; i < wort.length; i++) {
if (i == 0 || i == wort.length-1 || i == wort[i]) {
gesWort[i] = wort[i];
}else{
gesWort[i] = '_';
}
}
label.setText(new String(gesWort)); // Im Label das Wort als String hineinschreiben
// Action Lsitener hinzufügen
pruefung.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
rate = buchstabe.getText().toCharArray();
teste(rate, label,bild); //mitschicken vom Label und Panel und Ratebuchstaben
}
});
}
public static void teste(char[] buchi, JLabel label, JPanel bild){
//
//
System.out.println("Anfang vom teste Methode " +buchi[0]);
int vorhanden = text.indexOf(rate[0]);
System.out.println("Der Buchstabe an Stelle " +vorhanden +" vorhanden");
try{
Graphics tmp = (Graphics2D) bild.getGraphics();
if (vorhanden == -1){
tmp.drawImage(bilder[versuche], 0 , 0,bild.getWidth(),bild.getHeight(), bild);
versuche++;
} else {
if (versuche > 0)
tmp.drawImage(bilder[versuche-1], 0 , 0,bild.getWidth(),bild.getHeight(), bild);
// Geratenen Buchstaben einsetzen und String umwandeln
for (int i = 0; i < wort.length; i++)
{
if (buchi[0] == wort[i]) {
gesWort[i] = buchi[0];
}
}
String gesWortString = new String(gesWort);
label.setText(gesWortString);
System.out.println( "Versuch Nr. " +versuche);
System.out.println("Gültiger Versuch ");
int i = gesWortString.indexOf('_');
if (i == -1){
System.out.println("Spiel gewonnen ");
}
}
} catch (Exception e) {
e.printStackTrace();
}
if (versuche >= 5)
System.out.println("Spiel zu Ende - VERLOREN " + " Versuch Nr." +versuche);
}
}