Archived
1
0

UTF-8 Konvertierung und fehlende Dateien hinzugefügt.

This commit is contained in:
2013-07-12 02:23:52 +02:00
parent c6a3c2d0fa
commit 3edc26ebf4
12 changed files with 338 additions and 22 deletions

65
doc/README Normal file
View File

@ -0,0 +1,65 @@
HangMan for Java 1.9 [08.12.1998]
(c)1998-99 bei Markus Birth <Robo.Cop@gmx.net>
================================================================================
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
================================================================================

139
hangman.dat Normal file
View File

@ -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<74>ge: Thema: Wort #
# Beispiel: Auto: Lenkrad #
# #
# Es ist wichtig, da<64> hinter dem Doppelpunkt ein Leerzeichen ist!! #
#############################################################################
die Sinne des Menschen: Bl<42>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<EFBFBD>roalltag: Kaffeetasse
Getr<EFBFBD>nkezeugs: Teebeutel
DJ-Zubeh<65>r: Mischpult
Schule: Lehrerkonferenz
Schule: Stundenplan
Schule: Kursfahrt
Computer: Computer
Heimelektronik: Radioapparat
Kommunikation: Telefon
Kommunikation: Handy
Spiel: Sackh<6B>pfen
Fremdwort: Subliminationsverfahren
Computer: Linux
Naturereignis: Sonnenfinsternis
Naturereignis: Mondfinsternis
B<EFBFBD>roalltag: Kaffeeklatsch
Auto: Volkswagen
Heimelektronik: Satellitenempfangsanlage
Heimelektronik: Kassettenrekorder
Arbeitsger<EFBFBD>t: Schreibtisch
Arbeitsger<EFBFBD>tezubeh<EFBFBD>r: Schreibtischunterlage
Computer: Tastatur
Computer: Maus
Computer: Monitor
Heimelektronik: Fernseher
Heimelektronik: Antenne
Computer: Diskette
Computer: Microsoft
Tier: Hase
Tier: Rentier
Ger<EFBFBD>cht: Weihnachtsmann
Fest: Weihnachtsmarkt
Fest: Weihnachtsmarktschreier
Fest: Weihnachtsmarktschreierin
Computer: F<>nfeinviertelzolldiskette
Computer: Dreieinhalbzolldiskette
Computer: Notebook
Fremdwort: Bibliographie
Schriftart: Calligraphie
Regierungsform: Aristokratie
Fremdw<EFBFBD>rterlexikon: Duden
Heimelektronik: Radiowecker
n<EFBFBD>tzliche Erfindung: Alarmanlage
Naturereignis: Schneefall
Ort: Nordpol
Ort: S<>dpol
Ring um die Erde: <20>quator
Laster: Telefongeb<65>hren
n<EFBFBD>tzliche Erfindung: Notizzettel
n<EFBFBD>tzliche Erfindung: Papierzettel
Zellstoffprodukt: Papierblock
n<EFBFBD>tzliche Erfindung: Hefter
n<EFBFBD>tzliche Erfindung: Klammeraffe
Tier: Pawian
Tier: Schimpanse
Tier: Giraffe
Pflanze: Venusfliegenfalle
Computer: Hardwareproblem
Computer: Computerfehler
n<EFBFBD>tzliche Erfindung: Tischdecke
Akkustik<EFBFBD>bertrager: Lautsprecher
Fernsehen: Live<76>bertragung
Naturereignis: Eisgl<67>tte
<EFBFBD>ffentliche Einrichtung: Restaurant
Heimelektronik: Funkuhr
n<EFBFBD>tzliche Erfindung: Tischlampe
Licht: Deckenbeleuchtung
n<EFBFBD>tzliche Erfindung: T<>rschlo<6C>
Auto: Karosserie
Landwirtschaft: Mistgabel
Landwirtschaft: Heuhaufen
Landwirtschaft: Pferdeapfel
Landwirtschaft: Pferdestall
Kinderspass: Kinderschaukel
ist meist offen: Hosenstall
n<EFBFBD>tzliche Erfindung: Rei<65>verschlu<6C>
Computer: Laserdrucker
Flugzeug: Hubschrauber
Flugzeug: Helicopter
Tontr<EFBFBD>ger: Langspielplatte
Tontr<EFBFBD>ger: Musikkassette
Ort: Toilette
Ort: Schwarzwald
Ort: Liechtenstein
Ort: Nowosibirsk
Fahrzeug: UFO
Redewendung abgek<65>rzt: UPG
Alltagsbedarf: Armbanduhr
KFZ: Motorblock
KFZ: Karosserie
KFZ: Krause
Pflanze: Fettkraut
Pflanze: Liane
Pflanze: Gras
Kinderfreude: <20>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<79>r

View File

@ -3,7 +3,7 @@ HANGMAN FOR JAVA
(c)1998/99 by Markus Birth <Robo.Cop(a)gmx.net>
This is the first program I wrote in Java. Thanks to
Mr. Fr<EFBFBD>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<EFBFBD>r die eine Zufallszahl
import java.io.*; // f<EFBFBD>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<EFBFBD>r das Thema des Begriffes
char xyword[]; // Wort: xy-ungel<EFBFBD>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',
'<EFBFBD>','<EFBFBD>','<EFBFBD>','<EFBFBD>'};
'Ä','Ö','Ü','ß'};
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<EFBFBD>r W<EFBFBD>rterzahl
int wordseek=0; // ~ f<EFBFBD>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<EFBFBD>hle es als Wort.
wordcount++; // zähle es als Wort.
}
}
if (wordcount==0) {
System.out.println("ACHTUNG! In der Datendatei sind keine g<EFBFBD>ltigen W<EFBFBD>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<EFBFBD>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<EFBFBD><EFBFBD>!
System.out.println("\n\nFehler beim Bearbeiten der Datendatei. Stellen Sie sicher, da<EFBFBD> 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<EFBFBD>gen
addKeyListener(CONTROL); // hinzufügen
xyword=new char[myword.length()]; // array erstellen
for (int i=0;i<myword.length();i++) { // array initialisieren
xyword[i]='_';
@ -99,7 +100,7 @@ public class hangman extends Frame {
// g.drawString("Wort: "+myword,40,200);
// g.drawString("Zeichen: "+c,40,230);
g.setColor(Color.black); // Farbe auf SCHWARZ
g.fillRect(0,0,WND_B,WND_H); // Fenster sch<EFBFBD>n SCHWARZ machen!
g.fillRect(0,0,WND_B,WND_H); // Fenster schön SCHWARZ machen!
g.setColor(Color.white); // und Farbe auf GELB setzen
g.drawString("Wort: "+new String(xyword),40,215);
g.setColor(Color.red);
@ -117,7 +118,7 @@ public class hangman extends Frame {
}
public void UpdateHangMan(Graphics g) {
Toolkit tk=Toolkit.getDefaultToolkit(); // Toolkit (f<EFBFBD>r Grafikdatei-Support) zuweisen
Toolkit tk=Toolkit.getDefaultToolkit(); // Toolkit (für Grafikdatei-Support) zuweisen
switch(mistakes) { // CASE mistakes of ...
case 6:
@ -161,17 +162,17 @@ public class hangman extends Frame {
public void keyReleased(KeyEvent e) { }
public void keyTyped(KeyEvent e) {
c=e.getKeyChar(); // Taste holen
c=Character.toUpperCase(c); // Buchstabe(?) evtl. GRO<EFBFBD> machen
c=Character.toUpperCase(c); // Buchstabe(?) evtl. GROß machen
int i; // Wir brauchen bald ein Iiiiihh
boolean status=false; // Booleans
boolean check=false; // f<EFBFBD>r versch. Status-Werte
boolean check=false; // für versch. Status-Werte
for (i=0;i<alphab.length;i++) {
if (c==alphab[i]) { // wenn c = einer der Buchst. des Alphabets ist ...
if (probed[i]!=c) probed[i]=c; else check=true; // und der auch noch nicht vorher getippt wurde, dann ... u.s.w.
if (notprobed[i]==c) notprobed[i]='-';
}
}
int underscores=0; // Integer f<EFBFBD>r Anzahl der "_" im bisher gepuzzleten Wort
int underscores=0; // Integer für Anzahl der "_" im bisher gepuzzleten Wort
for (i=0;i<myword.length();i++) {
if (c==Character.toUpperCase(myword.charAt(i))) {
xyword[i]=myword.charAt(i);
@ -188,7 +189,7 @@ public class hangman extends Frame {
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<EFBFBD>sungswort ...
if (underscores==0) mistakes=-1; // wenn keine fehlenden Zeichen im Lösungswort ...
if (mistakes>=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<EFBFBD>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<EFBFBD><EFBFBD>e setzen
frame.setSize(WND_B, WND_H); // Größe setzen
frame.show(); // und ab auf den Bildschirm damit!
/* Pictures
Image pic;

111
hangman_notopics.dat Normal file
View File

@ -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<EFBFBD>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<EFBFBD>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<EFBFBD>nfeinviertelzolldiskette
Dreieinhalbzolldiskette
Notebook
Bibliographie
Calligraphie
Aristokratie
Duden
Radiowecker
Alarmanlage
Schneefall
Nordpol
S<EFBFBD>dpol
<EFBFBD>quator
Telefongeb<EFBFBD>hren
Notizzettel
Papierzettel
Papierblock
Hefter
Klammeraffe
Pawian
Schimpanse
Giraffe
Venusfliegenfalle
Hardwareproblem
Computerfehler
Tischdecke
Lautsprecher
Live<EFBFBD>bertragung
Eisgl<EFBFBD>tte
Restaurant
Funkuhr
Tischlampe
Deckenbeleuchtung
T<EFBFBD>rschlo<EFBFBD>
Karosserie
Mistgabel
Heuhaufen
Pferdeapfel
Pferdestall
Alarmanlage
Kinderschaukel
Hosenstall
Rei<EFBFBD>verschlu<EFBFBD>
Laserdrucker
Hubschrauber
Helicopter
Langspielplatte
Musikkassette

BIN
images/hm.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 830 B

BIN
images/hm0.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 399 B

BIN
images/hm1.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 445 B

BIN
images/hm2.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 599 B

BIN
images/hm3.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 614 B

BIN
images/hm4.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 626 B

BIN
images/hm5.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
images/hm6.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB