programm noch einmal starten

Ich denke mal dass du diese nicht importiert hast. Hast du die Klasse Hangman schon wieder umbenannt?

MFG

zEriX
 
alsoso wie oben sieht jetzt mein quellcode aus. eigentlich hab ich da nichts umbenant.muss ich HangmanInstance erst noch wo vereinbaren?!
 
Zuletzt bearbeitet:
Jetzt verstehe ich erst wie dein Programm funktioniert.

Versuch es mal hiermit

Code:
import java.awt.*;
import java.awt.event.*;
import java.io.*;      // für Dateioperationen

import javax.swing.JFrame;

public class Hangman extends Panel { 
	   
	private static final long serialVersionUID = 1L;
	// Globale Variablen
    final static int WND_B=425, WND_H=350;
    final int SX=50, SY=50;
    RandomAccessFile file;
    String myword=null;  // das zu erratene wort
    char xyword[];        // das ungelöste Wort
    char probed[];
    char notprobed[];
    char alphab[]={'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',
		           'Ä','Ö','Ü','ß'};
    int mistakes=0;  // Anzahl der Fehler
    int tries=0;     // Anzahl der Versuche
    KL CONTROL;
    char c;
 
    public Hangman() {                // Hauptroutine
    	
	String stmp=new String();
	try {
	    int wordcount=0;           // neuer Integer für Wörterzahl
	    int wordseek=0;            // ~ für Zielwort-Position
	    RandomAccessFile f=new RandomAccessFile("hangman.dat","r");
	    while ((stmp=f.readLine())!=null) {  // solange das, was wir lesen, noch sichtbar ist
		if (stmp.charAt(0) != '#') {      // und wenn kein '#' am anfang steht
		    wordcount++;                  // zähle es als Wort
		}  
	    }
	    if (wordcount==0) {
	    	System.out.println("ACHTUNG! In der Datendatei sind keine gültigen Wörter zu finden.");
	    	System.exit(0);
	    }
	    System.out.println("Woerter in Datendatei: "+wordcount);  // Statusbericht
	    while (wordseek==0) {    // Solange wordseek noch 0 ist, tue ...
		wordseek=(int)(Math.random()*wordcount)+1;  // hol' Dir einen Integer-Wert
	    }
	    System.out.print("Ausgewaehltes Wort: #"+wordseek);  // Statusbericht
	    f.seek(0);      // Position auf Dateianfang setzen
	    wordcount=0;    // Wieder auf NULL

	    while ((stmp=f.readLine())!=null) {   // und das ganze von vorne
		if (stmp.charAt(0) != '#') {
		    wordcount++;
		    if (wordcount==wordseek) {     // wenn an der Position, die wir suchen ...
			myword=stmp;               // setze myword auf gerade gelesenen String
			break;                    
		    }
		}
	    }
	    f.close();         // Datei wieder schließen
	}
	catch(IOException ioe) {    // Falls ein Fehler auftreten sollte Fehlermeldung ausgeben
	    System.out.println("IOException: "+ioe.toString());  // Fehlermeldung
	    System.out.println("\n\nFehler beim Bearbeiten der Datendatei. Stellen Sie sicher, daß die Datei HANGMAN.DAT auch existiert und lesbar ist.");
	    System.exit(0);
	}
	
	CONTROL=new KL();   // neuer KeyListener: CONTROL
	addKeyListener(CONTROL);  // hinzufügen
	xyword=new char[myword.length()];      // array erstellen
	for (int i=0;i<myword.length();i++) {  // array initialisieren
	    xyword[i]='_';
	}
	probed=new char[alphab.length];                // array erstellen
	notprobed=new char[alphab.length];
	for (int i=0;i<alphab.length;i++) {            // array initialisieren
	    probed[i]='-';
	    notprobed[i]=alphab[i];
	}
    }
  public void update(Graphics g)
    {
         paint(g);
    }

    public void paint(Graphics g) {      // die Grafiken
    Toolkit tk=Toolkit.getDefaultToolkit(); 
	// g.drawString("Datensaetze: "+maxdat,40,350);
	// g.drawString("Wort: "+myword,40,200);
	// g.drawString("Zeichen: "+c,40,230);
	g.setColor(Color.white);           // Farbe auf Weiß
	g.fillRect(0,0,WND_B,WND_H);       // Fenster Weiß machen
	g.setColor(Color.black);          // Farbe auf Schwaz setzen
	g.drawImage(tk.getImage("images/bg.gif"),1,1,this);
	g.drawString("Wort: "+new String(xyword),40,215);
	if (mistakes!=-1) {
	    g.drawString("Buchstaben: ",40,260);
	    for (int i=0;i<alphab.length;i++) {
		g.drawChars(probed,i,1,118+i*8,260);
		g.drawChars(notprobed,i,1,118+i*8,275);
	    }
	    g.drawString("Fehler: "+mistakes,40,230);
	}
	UpdateHangMan(g);    // Hangman updaten
    }

    public void UpdateHangMan(Graphics g) {
	Toolkit tk=Toolkit.getDefaultToolkit();   // Toolkit (für Grafikdatei-Support) zuweisen
	
	switch(mistakes) {   // CASE mistakes of ...
	case 6:
	    g.drawImage(tk.getImage("images/hm6.gif"),SX,SY,this);
	    g.setColor(Color.red);
	    g.drawString(">>> VERLOREN <<<",WND_B/2-70,WND_H/2+10);
	    g.setColor(Color.white);
	    g.drawString("Das gesuchte Wort war '"+myword+"'!",WND_B/4-100,WND_H/2-10);
	    removeKeyListener(CONTROL);   // Tastenkontrolle abschalten
	    break;
	case 5:
	    g.drawImage(tk.getImage("images/hm5.gif"),SX,SY,this);
	    break;
	case 4:
	    g.drawImage(tk.getImage("images/hm4.gif"),SX,SY,this);
	    break;
	case 3:
	    g.drawImage(tk.getImage("images/hm3.gif"),SX,SY,this);
	    break;
	case 2:
	    g.drawImage(tk.getImage("images/hm2.gif"),SX,SY,this);
	    break;
	case 1:
	    g.drawImage(tk.getImage("images/hm1.gif"),SX,SY,this);
	    break;
	case 0:
	    g.drawImage(tk.getImage("images/hm0.gif"),SX,SY,this);
	    break;
	case -1:
	    g.drawImage(tk.getImage("images/hm.gif"),SX,SY,this);
	    g.setColor(Color.green);
	    g.drawString(">>> GEWONNEN <<<",WND_B/2-70,WND_H/2+10);
	    g.drawString(">>> GEWONNEN <<<",WND_B/2-70,WND_H/2+10);
	    removeKeyListener(CONTROL);
	    break;
	}

    }

    class KL implements KeyListener {
	public void keyPressed(KeyEvent e) { }
	public void keyReleased(KeyEvent e) { }
	public void keyTyped(KeyEvent e) {
	    c=e.getKeyChar();              // Taste holen
	    c=Character.toUpperCase(c);    // Buchstabe(?) evtl. GROß machen
	    int i;                        
	    boolean status=false;        // Booleans
	    boolean check=false;         // für versch. Status-Werte
	    for (i=0;i<alphab.length;i++) {
	    	if (c==alphab[i]) {        // wenn c = einer der Buchstaben des Alphabets ist ...
		    if (probed[i]!=c) probed[i]=c; else check=true;  // und der noch nicht vorher getippt wurde, dann ... u.s.w.
		    if (notprobed[i]==c) notprobed[i]='-';
		}
	    }
	    int underscores=0;            // Integer für Anzahl der "_" im bisherigen Wort
	    for (i=0;i<myword.length();i++) {
		if (c==Character.toUpperCase(myword.charAt(i))) {
		    xyword[i]=myword.charAt(i);
		    status=true;
		}
		if (xyword[i]=='_') underscores++;
	    }
	    if (!status && !check) mistakes++;  // wenn der Buchstabe Falsch ist und nicht schon einmal getippt wurde mistakes+1
	    if (!check) tries++;   // solange kein doppelter Tip: tries+1;
	    if (underscores==0 || mistakes>=6) {
		System.out.println(" ("+myword+")");
		System.out.println("Anzahl Versuche: "+tries+"    davon falsch: "+mistakes);
		System.out.println("Getippte Buchstaben: "+new String(probed));
		System.out.println("Anzahl versch. Buchstaben im Wort: "+(tries-mistakes));
		System.out.println("Trefferquote: "+(((tries-mistakes)*100)/tries)+"%");
	    }
	    if (underscores==0) mistakes=-1;   // wenn keine fehlenden Zeichen im Lösungswort ...
	    if (mistakes>=6) mistakes=6;       // wenn mehr als 5 Fehler gemacht wurden
	    repaint();        // Grafikfenster neuzeichnen
	}
    }

private static void initializeNewWindow(){
JFrame frame= new JFrame();       // neues Fenster
    	        frame.addWindowListener(new WindowAdapter() {   // WindowListener hinzufügen
    	            public void windowClosing(WindowEvent e) {  // wenn auf X geklickt:
    	                System.out.println();
    	                System.exit(0);       // Programm beenden.
    	            }
    	        });
    	        
    	        frame.setLayout(new BorderLayout());
    	        Panel buttonPanel = new Panel();
    	        buttonPanel.setLayout(new FlowLayout());
    	       
    	        final JFrame f = frame;
    	        Button button1 = new Button("Nochmal");
    	                       button1.setPreferredSize(new Dimension(80,20));
    	                       button1.addActionListener(new ActionListener() {
    	                       public void actionPerformed(ActionEvent arg0) {
    	                           System.out.print("Nochmal...");
    	                           f.dispose();
                                           initializeNewWindow();
    	                           }
    	      });
    	        Button button2 = new Button("Beenden");
    	        button2.setPreferredSize(new Dimension(80,20));
    	        button2.addActionListener(new ActionListener() {
    	            public void actionPerformed(ActionEvent arg0) {
    	            System.out.print("Bis zum nächsten mal...");
    	            System.exit(0); 
    	            }
    	      });
    	       
    	        buttonPanel.add(button1);
    	        buttonPanel.add(button2);
    	       
    	        frame.add(buttonPanel,BorderLayout.SOUTH);
    	       
    	        Hangman panel = new Hangman();
    	        frame.add(panel,BorderLayout.CENTER);
    	       
    	        frame.setTitle(".:Hangman:.");  // Titel setzen
    	        frame.setSize(WND_B, WND_H);   // Größe setzen
    	        frame.setVisible(true);                  // auf den Bildschirm
    	        panel.requestFocusInWindow();
}
    public static void main(String args[]) {
    	   initializeNewWindow();
    	    } 
}


MFG

zEriX
 
jetzt habe ich noch eine kleinigkeit :D

das ganze sieht jetzt so aus Hangman

jetzt hätte ich ganz gerne das den unteren teil wo die buttons sind in schwarz anstatt in grau. ich habe jetzt so probiert

Code:
JFrame frame= new JFrame();       // neues Fenster
    	        frame.addWindowListener(new WindowAdapter() {   // WindowListener hinzufügen
    	            public void windowClosing(WindowEvent e) {  // wenn auf X geklickt:
    	                System.out.println();
    	                System.exit(0);       // Programm beenden.
    	            }
    	        });
    	        
    	        frame.setLayout(new BorderLayout());
    	        Panel buttonPanel = new Panel();
    	        buttonPanel.setLayout(new FlowLayout());
    	        buttonpanel.setBackground(color.black);
    	       
    	        final JFrame f = frame;
    	        Button button1 = new Button("Nochmal");
    	                       button1.setPreferredSize(new Dimension(80,20));
    	                       button1.addActionListener(new ActionListener() {
    	                       public void actionPerformed(ActionEvent arg0) {
    	                           System.out.print("Nochmal...");
    	                           f.dispose();
                                           initializeNewWindow();
    	                           }
    	      });

wäre das so möglich?
 
Zuletzt bearbeitet:
Zurück