Hi i need some help with a programme i am writing in turbo delphi Im trying to make a hangman game and i either want the letter to appear or display the alphabet and the letter will disappear?
Uses
SysUtils; Type
TGuessStatusArray = Array[1..20] Of Char;
TLettersGuessedArray = Array[1..26] Of Char; Var
NewPhrase : String;
PhraseHasBeenSet : Boolean;
PhraseGuessed : Boolean;
Choice : Integer;
GuessStatusArray : TGuessStatusArray;
LettersGuessedArray : TLettersGuessedArray;
NextGuessedLetter : Char;
Index : Integer;
Procedure DisplayMenu;
Begin
Writeln('__________________________________');
Writeln;
Writeln('1. SETTER - Makes new word/phrase');
Writeln;
Writeln('2. USER - Next letter guess');
Writeln;
Writeln('5. End');
Writeln;
End;
Function GetNewPhrase : String;
Var
PhraseOK : Boolean;
ThisNewPhrase : String;
Begin
Repeat
Write('Key in new phrase ...(letters and any Spaces) ');
Readln(ThisNewPhrase);
If Length(ThisNewPhrase) < 10
Then
Begin
PhraseOK := False;
Writeln('Not enough letters ... ');
{ possible further validation check(s) }
End
Else
Begin
PhraseOK := True;
GetNewPhrase := ThisNewPhrase;
End;
Until PhraseOK = True;
End;
Procedure SetUpGuessStatusArray(NewPhrase : String;
Var GuessStatusArray : TGuessStatusArray);
Var
Position : Integer;
Begin
For Position := 1 To Length(NewPhrase)
Do
Begin
If NewPhrase[Position] = ' '
Then GuessStatusArray[Position] := ' '
Else GuessStatusArray[Position] := '*';
End;
End;
Procedure DisplayCurrentStatus(PhraseLength : Byte;
GuessStatusArray : TGuessStatusArray); Var
Position : Integer;
Begin
For Position := 1 To PhraseLength
Do Write(GuessStatusArray[Position]);
Writeln;
End; Function GetNextLetterGuess : Char;
Var
Position : Integer;
GuessedLetter : Char; Begin
Writeln;
Write('Next guess ? ');
Readln(GuessedLetter);
GetNextLetterGuess := GuessedLetter;
End;
Function AllLettersGuessedCorrectly(GuessStatusArray:
TGuessStatusArray;
NewPhrase : String) : Boolean; Var
Position : Integer;
MissingLetter : Boolean; Begin
MissingLetter := False;
Position := 1;
Repeat
If GuessStatusArray[Position] <> NewPhrase[Position]
Then MissingLetter := True
Else Position := Position+1;
Until (MissingLetter = True) or (Position =
Length(NewPhrase)+1);
If MissingLetter = False
Then AllLettersGuessedCorrectly := True
Else AllLettersGuessedCorrectly := False;
End; { Main program block starts here }
Begin
PhraseHasBeenSet := False;
Repeat
DisplayMenu;
Write('Choice? ');
Readln(Choice); If Choice = 1
Then
Begin
NewPhrase := GetNewPhrase;
SetUpGuessStatusArray(NewPhrase, GuessStatusArray);
PhraseHasBeenSet := True;
End; If Choice = 2
Then
Begin
If PhraseHasBeenSet = True
Then
Begin
DisplayCurrentStatus(Length(NewPhrase), GuessStatusArray);
NextGuessedLetter := GetNextLetterGuess;
For Index := 1 To Length(NewPhrase)
Do
If NextGuessedLetter = NewPhrase[Index]
Then GuessStatusArray[Index] := NextGuessedLetter;
DisplayCurrentStatus(Length(NewPhrase), GuessStatusArray);
PhraseGuessed :=
AllLettersGuessedCorrectly(GuessStatusArray,NewPhrase);
If PhraseGuessed = True
Then Writeln('You have guessed correctly');
End
Else Writeln('The setter has not specified the word/phrase
..');
End; If (Choice = 5) And (PhraseGuessed = False)
Then
Begin
Writeln('You have not completed this word/phrase...Press return
to exit');
Readln;
End;
Until Choice = 5;
End.