Program Hanger; {a simple hangman-pascalsource by Seabert SoftWare, 1996} {comments & suggestions : jjtaks@cs.ruu.nl} Uses Crt, WinDos; Var Words: Array[1..100] of String; Sizes: Array[1..100] of Integer; PlayWord, ChLine, word: String[10]; Ch: Char; WordFile: Text; i, j, lgt, Max, ChLgt: Integer; Function ReadFile( FileName: String): Boolean; begin if ( FileName = '') then ReadFile := False else begin ReadFile := True; i := 0; Assign( WordFile, FileName) Reset( WordFile); While( not( EoF( WordFile))) do begin Inc( i); ReadLn( WordFile, word); Words[i] := word; ReadLn( WordFile, lgt); Sizes[i] := lgt; end; Max := i; Close( WordFile); end; end; Function ChooseWord: Boolean; begin Repeat Randomize; j := Random( Max); Until (( j > 0) and ( j <= Max)); PlayWord := Words[j]; ChLgt := Sizes[j]; if ( PlayWord <> '') then ChooseWord := True else ChooseWord := False; end; Procedure InitArrays; begin for i := 1 to 100 do begin Words[i] := ''; Sizes[i] := 0; end; end; Procedure GamePlay; Procedure ClrWord; begin For i := 1 to 10 do PlayWord[i] := ''; end; Procedure SetChLine; begin For i := 1 to 10 do ChLine[i] := '-'; end; begin SetChLine; Repeat GoToXY( 15, 3); For i := 1 to Max do Write(ChLine[i]); GoToXY( 1, 3); Write('Enter a character: '); ReadLn( Ch) For i := 1 to Max do begin if ( Ch = PlayWord[i]) then ChLine[i] := Ch; end; if ( ChLine = PlayWord) then begin GoToXY( 15, 1); Write('You got it!'); end; Until ( ChLine = PlayWord); ClrScr; ClrWord; SetChLine; end; Begin ClrScr; Repeat InitArrays; if ( ReadFile( 'WORDS.TXT') = True) then begin if ( ChooseWord = True) then GamePlay else begin WriteLn('No words found.'); Halt(1); end; end else begin WriteLn('Unable to read file WORDS.TXT.'); Halt(1); end; Write(' Again? '); ReadLn( Ch); Until ( UpCase( Ch) = 'N'); End. { WORDS.TXT ( example): ape 3 book 4 circle 6 } ------ SeaBert ------------- | E-Mail: jjtaks@cs.ruu.nl | ------ C-Bert --------------