forked from Hoffkse/Hangman
-
Notifications
You must be signed in to change notification settings - Fork 1
/
hangmain.adb
106 lines (95 loc) · 2.79 KB
/
hangmain.adb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
with Ada.Text_IO.Unbounded_IO; use Ada.Text_IO.Unbounded_IO;
with hangman; use hangman;
procedure hangmain is
--VARIABLES--
WordList : List_Type;
response : Character := 'y';
guess : Character;
MAXWRONG : constant Integer := 6;
MAXCOR : Integer := 0;
CorCount : Integer := 0;
CorPrev : Integer := 0;
Wrongcount : Integer := 0;
Wrongprev : Integer := 0;
CurrWord : Unbounded_String;
GuessStack : SType (26);
type showWord is array (Positive range <>) of Character;
DispWord : showWord (1 .. 100);
CorrectWord : showWord (1 .. 100);
Man : ManArray;
begin
--- INITIALIZE GUESSES ---
InitList (WordList);
--WELCOME TO HANGMAN--
Put ("***** W E L C O M E T O H A N G M A N *****");
New_Line;
Put (" By: Jon Hollan, Mark Hoffman, & Brandon Ball");
New_Line;
New_Line;
while (response = 'y') or (response = 'Y') loop
StackInit (GuessStack);
CurrWord := GetWord (WordList);
MAXCOR := Length (CurrWord);
for i in 1 .. MAXCOR loop
DispWord (i) := '-';
end loop;
for i in 1 .. MAXCOR loop
CorrectWord (i) := Element (CurrWord, i);
end loop;
--- START THE ROUND ---
--while(CorCount /= MAXCOR) OR (WrongCount /= MAXWRONG) loop
loop
Wrongprev := Wrongcount;
CorPrev := CorCount;
Man := CreateMan (Wrongcount);
DrawMan (Man);
New_Line;
for i in 1 .. MAXCOR loop
Put (DispWord (i));
end loop;
New_Line;
Put ("Guesses: ");
Print (GuessStack);
New_Line;
Put ("Enter Guess: ");
Get (guess);
Push (GuessStack, guess);
for i in 1 .. MAXCOR loop
if (guess = CorrectWord (i)) then
DispWord (i) := CorrectWord (i);
CorCount := CorCount + 1;
end if;
end loop;
if (CorCount = CorPrev) then
Wrongcount := Wrongcount + 1;
end if;
ShowMessage (Wrongcount, Wrongprev);
New_Line;
New_Line;
exit when (CorCount = MAXCOR);
exit when (Wrongcount = MAXWRONG);
end loop;
if (Wrongcount = MAXWRONG) then
Man := CreateMan (Wrongcount);
DrawMan (Man);
Put ("The correct word was ");
Put (Item => CurrWord);
New_Line;
Put ("Would you like to play again? y/n: ");
Get (response);
end if;
if (CorCount = MAXCOR) then
Put ("Congratulations! YOU WON!");
New_Line;
Put ("The correct word was ");
Put (Item => CurrWord);
New_Line;
Put ("Would you like to play again? y/n: ");
Get (response);
end if;
Wrongcount := 0;
CorCount := 0;
end loop;
end hangmain;