diff --git a/doc/README b/doc/README new file mode 100644 index 0000000..0c6c7ea --- /dev/null +++ b/doc/README @@ -0,0 +1,65 @@ +HangMan for Java 1.9 [08.12.1998] +(c)1998-99 bei Markus Birth +================================================================================ + +Dieses ist meine eigens programmierte Hangman-Version für Java. Das Programm +liegt im Quelltext und als vorkompilierte CLASS-Datei vor. Es verwendet die +System.events des Java 1.1 und läuft somit also nicht auf älteren Versionen. + +Um es auszuführen, einfach folgendes am Prompt eingeben (sofern ein Java- +Development-Kit der Version 1.1.? korrekt installiert wurde): + + JAVA hangman + +Danach sollte Hangman starten und Sie können loslegen ;-). + +Die Spielregeln sind ganz einfach: Sie müssen das Wort durch eingeben einzelner +Buchstaben vervollständigen. Dabei dürfen Sie 5 Mal falsch tippen. + +Die zu erratenen Wörter werden aus der Datei HANGMAN.DAT gelesen. Sie können +Sie beliebig erweitern - müssen allerdings die Hinweise beachten, die in der +o.g. Datei stehen. + +Das soll's auch schon gewesen sein - ich finde, mehr gibt es zu Hangman nicht +zu sagen =). + +Viel Spaß mit diesem Programm! + +================================================================================ + +HISTORY +------- + + +1.9 [08.12.1998/19:29.52] +-mehr Statistik am Programmende + +1.8 [08.12.1998/19:05.35] +-Wörterwahl-Routine verbessert - jetzt ist unbegrenzte Zahl an Wörtern in + der Datendatei möglich +-mehrere Kommentare hinzugefügt + +1.7 [03.12.1998/20:18.42] +-Vor-Version ... sozusagen erste BETA + +1.6 [03.12.1998/19:45.14] +-Grafiken eingefügt + +1.5 [02.12.1998/15:42.09] +-Fehlererkennung verbessert +-kleinere Bugs mit Windows-Java beseitigt + +1.4 [01.12.1998/19:34.33] +-Anzeige der Vorkommnisse der Buchstaben im Wort + +1.3 [01.12.1998/19:12.21] +-Eingegebene Buchstaben werden jetzt in Großb. konvertiert +-außerdem: einige Kommentare hinzugefügt + +1.2 [01.12.1998/18:19.40] +-Tastatureingabe mit Anzeige schon gedrückter Tasten hinzugefügt + +1.1 [01.12.1998/17:52.38] +-Ursprungsversion: erster Versuch + +================================================================================ diff --git a/hangman.dat b/hangman.dat new file mode 100644 index 0000000..8d3e3c6 --- /dev/null +++ b/hangman.dat @@ -0,0 +1,139 @@ +# ## ## ### # # #### # # ### # # #### ### ##### +# ## ## ## ## ## # ## ## ## ## ## ## # ## ## ## ## # +# ##### ##### # # # ## ## # # # ##### # # # ## ## ##### # +# ## ## ## ## # ## ## ## # # # ## ## # ## ## ## ## ## ## # +# ## ## ## ## # # #### # # ## ## # # ## #### ## ## # +# +############################################################################# +# Hier stehen die Wörter, die erraten werden sollen können untereinander # +# Jede Zeile, die mit einer Raute (#) beginnt, gilt als Kommentar # +# WICHTIG: Hinter dem letzten Wort sollte mindestens ein LF (LineFeed) sein # +# und es dürfen keine Leerzeilen in dieser Datei stehen # +# # +# Format der Einträge: Thema: Wort # +# Beispiel: Auto: Lenkrad # +# # +# Es ist wichtig, daß hinter dem Doppelpunkt ein Leerzeichen ist!! # +############################################################################# +die Sinne des Menschen: Blödsinn +die Sinne des Menschen: Stumpfsinn +# Hier ist z.B. ein Kommentar +die Sinne des Menschen: Wahnsinn +# Und hier noch einer! +Linguistik: Wort +Fremdwort: Extension +Regierungsform: Diktatur +Fremdwort: Korrespondenz +Fremdwort: Interaktion +Fremdwort: Bilabidarekorrelationsdivergenz +Pflanze: Rose +Pflanze: Blume +Computer: Thermotransferdrucker +Krankheit: Hyperventilation +Büroalltag: Kaffeetasse +Getränkezeugs: Teebeutel +DJ-Zubehör: Mischpult +Schule: Lehrerkonferenz +Schule: Stundenplan +Schule: Kursfahrt +Computer: Computer +Heimelektronik: Radioapparat +Kommunikation: Telefon +Kommunikation: Handy +Spiel: Sackhüpfen +Fremdwort: Subliminationsverfahren +Computer: Linux +Naturereignis: Sonnenfinsternis +Naturereignis: Mondfinsternis +Büroalltag: Kaffeeklatsch +Auto: Volkswagen +Heimelektronik: Satellitenempfangsanlage +Heimelektronik: Kassettenrekorder +Arbeitsgerät: Schreibtisch +Arbeitsgerätezubehör: Schreibtischunterlage +Computer: Tastatur +Computer: Maus +Computer: Monitor +Heimelektronik: Fernseher +Heimelektronik: Antenne +Computer: Diskette +Computer: Microsoft +Tier: Hase +Tier: Rentier +Gerücht: Weihnachtsmann +Fest: Weihnachtsmarkt +Fest: Weihnachtsmarktschreier +Fest: Weihnachtsmarktschreierin +Computer: Fünfeinviertelzolldiskette +Computer: Dreieinhalbzolldiskette +Computer: Notebook +Fremdwort: Bibliographie +Schriftart: Calligraphie +Regierungsform: Aristokratie +Fremdwörterlexikon: Duden +Heimelektronik: Radiowecker +nützliche Erfindung: Alarmanlage +Naturereignis: Schneefall +Ort: Nordpol +Ort: Südpol +Ring um die Erde: Äquator +Laster: Telefongebühren +nützliche Erfindung: Notizzettel +nützliche Erfindung: Papierzettel +Zellstoffprodukt: Papierblock +nützliche Erfindung: Hefter +nützliche Erfindung: Klammeraffe +Tier: Pawian +Tier: Schimpanse +Tier: Giraffe +Pflanze: Venusfliegenfalle +Computer: Hardwareproblem +Computer: Computerfehler +nützliche Erfindung: Tischdecke +Akkustikübertrager: Lautsprecher +Fernsehen: Liveübertragung +Naturereignis: Eisglätte +öffentliche Einrichtung: Restaurant +Heimelektronik: Funkuhr +nützliche Erfindung: Tischlampe +Licht: Deckenbeleuchtung +nützliche Erfindung: Türschloß +Auto: Karosserie +Landwirtschaft: Mistgabel +Landwirtschaft: Heuhaufen +Landwirtschaft: Pferdeapfel +Landwirtschaft: Pferdestall +Kinderspass: Kinderschaukel +ist meist offen: Hosenstall +nützliche Erfindung: Reißverschluß +Computer: Laserdrucker +Flugzeug: Hubschrauber +Flugzeug: Helicopter +Tonträger: Langspielplatte +Tonträger: Musikkassette +Ort: Toilette +Ort: Schwarzwald +Ort: Liechtenstein +Ort: Nowosibirsk +Fahrzeug: UFO +Redewendung abgekürzt: UPG +Alltagsbedarf: Armbanduhr +KFZ: Motorblock +KFZ: Karosserie +KFZ: Krause +Pflanze: Fettkraut +Pflanze: Liane +Pflanze: Gras +Kinderfreude: Überraschungsei +Elektronik: Laserdiode +Unterhaltung: Dartscheibe +Horror / Angst: Beierlein +Horror / Angst: Vampir +Horror / Angst: Verkehrsunfall +KFZ: Stau +Horror / Angst: Atomunfall +Horror / Angst: GAU +Computer: DAU +Computer: Festplattencrash +eklig: MatthiasKlein +Tier: Grizzlybär diff --git a/hangman.java b/hangman.java index 1389744..7dc5f35 100644 --- a/hangman.java +++ b/hangman.java @@ -3,7 +3,7 @@ HANGMAN FOR JAVA (c)1998/99 by Markus Birth This is the first program I wrote in Java. Thanks to -Mr. Fröbel for making me learning Java so quick (We had to +Mr. Fröbel for making me learning Java so quick (We had to finish our projects for the computer science lessons.) Things used for the making of this: @@ -17,8 +17,8 @@ import java.applet.*; import java.awt.*; import java.awt.event.*; import java.lang.Character.*; -import java.math.*; // eigentlich nur für die eine Zufallszahl -import java.io.*; // für Dateioperationen ("Tupfer, Schere ...") +import java.math.*; // eigentlich nur für die eine Zufallszahl +import java.io.*; // für Dateioperationen ("Tupfer, Schere ...") public class hangman extends Frame { // Globale Variablen @@ -26,13 +26,13 @@ public class hangman extends Frame { final int SX=50, SY=50; RandomAccessFile file; String myword=null; // Wort: was es mal werden soll - String topic=null; // String für das Thema des Begriffes - char xyword[]; // Wort: xy-ungelöst + String topic=null; // String für das Thema des Begriffes + char xyword[]; // Wort: xy-ungelöst 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 Fehler (MIST!-akes) int tries=0; // Anzahl Versuche KL CONTROL; @@ -41,17 +41,17 @@ public class hangman extends Frame { public hangman() { // Hauptroutine String stmp=new String(); try { - int wordcount=0; // neuer Integer für Wörterzahl - int wordseek=0; // ~ für Zielwort-Position + int wordcount=0; // neuer Integer für Wörterzahl + int wordseek=0; // ~ für Zielwort-Position // und jetzt machen wir die Datei auf: "Schwester: Skalpell!" RandomAccessFile f=new RandomAccessFile("hangman.dat","r"); while ((stmp=f.readLine())!=null) { // solange das, was wir lesen, nicht nichts ist ... if (stmp.charAt(0) != '#') { // und da auch kein "#" am Anfang klebt ... - wordcount++; // zähle es als Wort. + 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.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 @@ -68,20 +68,21 @@ public class hangman extends Frame { if (stmp.indexOf(": ")!=-1) { topic=stmp.substring(0,stmp.indexOf(": ")); myword=stmp.substring(stmp.indexOf(": ")+2,stmp.length()); + System.out.print(" Thema: \""+topic+"\""); } else myword=stmp; break; // und raus hier! } } } - f.close(); // Datei wieder zunähen + f.close(); // Datei wieder zunähen } catch(IOException ioe) { // Falls doch mal ein Fehler auftreten sollte ... - System.out.println("IOException: "+ioe.toString()); // Fehlermeldung und tschüß! - System.out.println("\n\nFehler beim Bearbeiten der Datendatei. Stellen Sie sicher, daß die Datei HANGMAN.DAT auch existiert und lesbar ist."); + System.out.println("IOException: "+ioe.toString()); // Fehlermeldung und tschüß! + 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 + addKeyListener(CONTROL); // hinzufügen xyword=new char[myword.length()]; // array erstellen for (int i=0;i=6) mistakes=6; // wenn mehr als 5 Fehler ... repaint(); // Grafikfenster neuzeichnen } @@ -196,14 +197,14 @@ public class hangman extends Frame { public static void main(String args[]) { Frame frame=new hangman(); // neues Fenster - frame.addWindowListener(new WindowAdapter() { // WindowListener hinzufügen + 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.setTitle("HangMan for Java - \u00a91998 by Markus Birth"); // Titel setzen - frame.setSize(WND_B, WND_H); // Größe setzen + frame.setSize(WND_B, WND_H); // Größe setzen frame.show(); // und ab auf den Bildschirm damit! /* Pictures Image pic; diff --git a/hangman_notopics.dat b/hangman_notopics.dat new file mode 100644 index 0000000..ccc497d --- /dev/null +++ b/hangman_notopics.dat @@ -0,0 +1,111 @@ +# ## ## ### # # #### # # ### # # #### ### ##### +# ## ## ## ## ## # ## ## ## ## ## ## # ## ## ## ## # +# ##### ##### # # # ## ## # # # ##### # # # ## ## ##### # +# ## ## ## ## # ## ## ## # # # ## ## # ## ## ## ## ## ## # +# ## ## ## ## # # #### # # ## ## # # ## #### ## ## # +# +############################################################################# +# Hier stehen die Wörter, die erraten werden sollen können untereinander # +# Jede Zeile, die mit einer Raute (#) beginnt, gilt als Kommentar # +# WICHTIG: Hinter dem letzten Wort sollte mindestens ein LF (LineFeed) sein # +# und es dürfen keine Leerzeilen in dieser Datei stehen # +############################################################################# +# Planung: Format: Thema: Begriff +# Beispiel: Auto: Karosserie +Blödsinn +Stumpfsinn +# Hier ist z.B. ein Kommentar +Wahnsinn +# Und hier noch einer! +Wort +Extension +Diktatur +Korrespondenz +Interaktion +Bilabidarekorrelationsdivergenz +Rose +Blume +Thermotransferdrucker +Hyperventilation +Kaffeetasse +Teebeutel +Mischpult +Lehrerkonferenz +Stundenplan +Kursfahrt +Computer +Radioapparat +Telefon +Handy +Sackhüpfen +Subliminationsverfahren +Linux +Sonnenfinsternis +Mondfinsternis +Kaffeeklatsch +Volkswagen +Satellitenempfangsanlage +Kassettenrekorder +Schreibtisch +Schreibtischunterlage +Tastatur +Maus +Monitor +Fernseher +Antenne +Diskette +Microsoft +Hase +Rentier +Weihnachtsmann +Weihnachtsmarkt +Weihnachtsmarktschreier +Weihnachtsmarktschreierin +Fünfeinviertelzolldiskette +Dreieinhalbzolldiskette +Notebook +Bibliographie +Calligraphie +Aristokratie +Duden +Radiowecker +Alarmanlage +Schneefall +Nordpol +Südpol +Äquator +Telefongebühren +Notizzettel +Papierzettel +Papierblock +Hefter +Klammeraffe +Pawian +Schimpanse +Giraffe +Venusfliegenfalle +Hardwareproblem +Computerfehler +Tischdecke +Lautsprecher +Liveübertragung +Eisglätte +Restaurant +Funkuhr +Tischlampe +Deckenbeleuchtung +Türschloß +Karosserie +Mistgabel +Heuhaufen +Pferdeapfel +Pferdestall +Alarmanlage +Kinderschaukel +Hosenstall +Reißverschluß +Laserdrucker +Hubschrauber +Helicopter +Langspielplatte +Musikkassette diff --git a/images/hm.gif b/images/hm.gif new file mode 100644 index 0000000..893083d Binary files /dev/null and b/images/hm.gif differ diff --git a/images/hm0.gif b/images/hm0.gif new file mode 100644 index 0000000..2df9769 Binary files /dev/null and b/images/hm0.gif differ diff --git a/images/hm1.gif b/images/hm1.gif new file mode 100644 index 0000000..d7e7728 Binary files /dev/null and b/images/hm1.gif differ diff --git a/images/hm2.gif b/images/hm2.gif new file mode 100644 index 0000000..57283b2 Binary files /dev/null and b/images/hm2.gif differ diff --git a/images/hm3.gif b/images/hm3.gif new file mode 100644 index 0000000..e604832 Binary files /dev/null and b/images/hm3.gif differ diff --git a/images/hm4.gif b/images/hm4.gif new file mode 100644 index 0000000..10a95f6 Binary files /dev/null and b/images/hm4.gif differ diff --git a/images/hm5.gif b/images/hm5.gif new file mode 100644 index 0000000..e337594 Binary files /dev/null and b/images/hm5.gif differ diff --git a/images/hm6.gif b/images/hm6.gif new file mode 100644 index 0000000..63e379d Binary files /dev/null and b/images/hm6.gif differ