Computer Science Canada

School project: Hangman

Author:  we64 [ Mon Jan 12, 2004 10:03 pm ]
Post subject:  School project: Hangman

Please set the screen to 40 rows by 120 columes

%Hangman Game
var words : array 1 .. 15 of string := init ("computer", "speaker", "program", "video", "cat", "dog", "tiger", "driver", "soccer", "radio", "music", "science", "math", "basketball", "chess")
var random, counter, times, right : int := 0
var letter, word, choice : string := ""

colourback (71)
cls

process won
choice := "n"
for w : 1 .. 100
Draw.Text ("YaY, You won!", maxx div 2 - 100, maxy div 2, Font.New ("serif:24:bold"), Rand.Int (1, 100))
delay (100)
exit when choice not= "n"
end for
end won

process lost
choice := "n"
for l : 1 .. 100
Draw.Text ("You Lost!", maxx div 2 - 50, maxy div 2, Font.New ("serif:24:bold"), Rand.Int (155, 200))
Draw.Text ("The word is:", maxx div 2 - 150, maxy div 2 + 60, Font.New ("serif:24:bold"), Rand.Int (155, 200))
Draw.Text (words (random), maxx div 2 + 40, maxy div 2 + 60, Font.New ("serif:24:bold"), Rand.Int (155, 200))
delay (100)
exit when choice not= "n"
end for
end lost

loop
%Title
Draw.Text ("Welcome to Tony's Hangman Game", maxx div 2 - 150, maxy - 20, Font.New ("serif:16:bold"), 40)

%Question
locate (4, 1)
put "Please enter a letter from the alphabets:"
locate (10, 5)
put "Alphabets:"

%Hang
drawfillbox (490, 200, 510, 410, 112) %post
drawfillbox (500, 400, 620, 410, 112)
drawfillbox (430, 180, 650, 200, 115) %ground
drawfillbox (595, 400, 605, 358, 114) %wire
drawarc (600, 345, 13, 13, 0, 360, 114)

%Random Words and Dashes
randint (random, 1, 15)
var dash : array 1 .. length (words (random)) of string
for a : 1 .. length (words (random))
dash (a) := "_"
end for

%Alphabets
var used : array 1 .. 26 of string
var star : array 1 .. 26 of string
for a : 1 .. 26
used (a) := chr (96 + a)
star (a) := chr (96 + a)
end for

%Out put
loop
%Draw Dash
locate (8, 15)
for a : 1 .. length (words (random))
put dash (a) : 3, " " ..
end for

%Used letters 1
locate (11, 10)
for a : 1 .. 26
put star (a) : 3, " " ..
end for

%letter checking
loop
locate (6, 1)
put ""
locate (5, 1)
put ""
locate (5, 1)
get letter

if length (letter) > 1 then
locate (6, 1)
put "Error, please only put one letter at a time."
delay (2000)
end if
exit when length (letter) = 1
end loop

%Used letters 2
locate (12, 1)
put ""
for a : 1 .. 26
if letter = used (a) then
if star (a) = chr (42) then
locate (12, 1)
put "You have already used this letter!"
else
star (a) := chr (42)
end if
end if
end for

%Wrong Letter
if index (words (random), letter) = 0 then
counter += 1
end if

%Hangman face
if counter = 1 then
drawfilloval (600, 355, 15, 15, 89)
elsif counter = 2 then
drawfilloval (595, 357, 3, 3, black) % left eye
elsif counter = 3 then
drawfilloval (605, 357, 3, 3, black) %right eye
elsif counter = 4 then
drawarc (600, 345, 5, 5, 20, 160, black) %mouth

%Hangman body
elsif counter = 5 then
drawline (600, 340, 600, 280, black)
Draw.Text ("Help me please!", 660, 330, Font.New ("serif:16:bold"), 40)
elsif counter = 6 then
drawline (600, 310, 630, 340, black) %right arm
Draw.Text ("Help me please!", 660, 330, Font.New ("serif:16:bold"), 71)
Draw.Text ("Help me!", 660, 330, Font.New ("serif:16:bold"), 40)
elsif counter = 7 then
drawline (600, 310, 570, 340, black) %left arm

elsif counter = 8 then
drawline (600, 280, 630, 250, black) %right leg
Draw.Text ("Help me!", 660, 330, Font.New ("serif:16:bold"), 71)
Draw.Text ("Help! Help!", 660, 330, Font.New ("serif:16:bold"), 40)
elsif counter = 9 then
drawline (600, 280, 570, 250, black) %left leg
end if

%Right letter
for a : 1 .. length (words (random))
if letter = words (random) (a) then
dash (a) := letter
end if
end for

for a : 1 .. length (words (random))
right := right + index (dash (a), "_")
end for

%Exits
exit when right = 0
right := 0
exit when counter = 9
end loop

%Play again
delay (1000)
cls
if counter = 9 then
fork lost
put "Would you like to play again? (y/n)"
get choice
elsif word = words (random) or right = 0 then
fork won
put "Would you like to play again? (y/n)"
get choice
end if

counter := 0
exit when choice = "n"
cls
end loop
code:

Author:  poly [ Mon Jan 12, 2004 10:47 pm ]
Post subject: 

hmm its pretty good, except for one wee problem.

Posted Image, might have been reduced in size. Click Image to view fullscreen.

Author:  we64 [ Tue Jan 13, 2004 5:31 pm ]
Post subject: 

you have to set the run window to 40 rows by 120 columes under 1024*768

Author:  shorthair [ Tue Jan 13, 2004 5:41 pm ]
Post subject: 

Whats with the double post , Confused , Oh well its agood game , but you should make the code more flexible for the screen size by using the maxx and maxy


: