Ok, here's something... Just didn't have time to do any polishing at all! I'm sure this is buggy, but it seems to work. I don't think I followed the flow of the subroutines I had in mind. The newgame flag was there to check for a restart but I didn't follow up with that! Oh Well!
I'm not sure what is going on, but for some reason, I just can't seem to code 2d with 3d anymore. Maybe it's changing the text sizes, I just don't know... Anyway, the 'gimmick' of this hangman version is the coding of the puzzles. I used a super easy encryption method that seems to be very difficult to break unless you know the key. If you weren't staring at the source, I wonder how hard it would actually be to crack - but since you are staring at the source, can anyone figure out what I did for the encryption?
remstart
==============================================================
= Title : Hangman
= Author : Latch
= Date : 02/05/2009
= Update :
= Version: .01
==============================================================
Comments
==============================================================
remend
rem =============================================================
rem = SET UP DISPLAY
rem =============================================================
autocam off
set display mode 800,600,32
sync on
sync rate 60
hide mouse
rem =============================================================
rem = MAIN
rem =============================================================
_main:
cls 128
gosub _make_victim
gosub _read_puzzle
newgame=1
do
if newgame=1
gosub _choose_puzzle
newgame=0
endif
gosub _make_boxes
sync
loop
end
rem =============================================================
rem = SUBROUTINES - PROCEDURES
rem =============================================================
_make_victim:
make object sphere 1,27
make object box 2,10,60,10
make mesh from object 2,2
add limb 1,1,2
offset limb 1,1,0,-30-12,0
delete object 2
delete mesh 2
make object box 2,5,30,5
offset limb 2,0,0,-15,0
make mesh from object 2,2
delete object 2
make object 2,2,0
delete mesh 2
make mesh from object 2,2
add limb 1,2,2
offset limb 1,2,-5,-20,0
rotate limb 1,2,0,0,wrapvalue(-50)
add limb 1,3,2
offset limb 1,3,5,-20,0
rotate limb 1,3,0,0,wrapvalue(50)
add limb 1,4,2
offset limb 1,4,-5,-70,0
rotate limb 1,4,0,0,wrapvalue(-50)
add limb 1,5,2
offset limb 1,5,5,-70,0
rotate limb 1,5,0,0,wrapvalue(50)
delete mesh 2
delete object 2
for lb=0 to 5
hide limb 1,lb
next lb
position camera -60,-50,-200
return
`----------------------------------------------------------------
_read_puzzle:
ct=110
maxc=255
dim puzzle(ct,maxc)
randomize 15
for p=1 to ct
read a
for n=1 to a
variance=rnd(31)
read puzzle(p,n)
puzzle(p,n)=puzzle(p,n)+variance
next n
next p
randomize timer()
return
`----------------------------------------------------------------
_choose_puzzle:
p=rnd(ct-1)+1
for n=1 to maxc
if puzzle(p,n)=0 then exit
next n
psize=n-1
dim guessed(psize)
set text transparent
set text font "courier new",1
set text size 36
sync
wd=text width("Q")
ht=text height("gM")
dim alphabet(26)
acount=0
strikes=0
return
`----------------------------------------------------------------
_make_boxes:
ink rgb(255,255,255),0
for b=1 to psize
rem check for spaces and don't draw a box
if puzzle(p,b)<>32
line (b*wd)+1,51+ht,(b*wd)+wd-2,51+ht
endif
if puzzle(p,b)=39 or puzzle(p,b)=32 then guessed(b)=1
if guessed(b)
text b*wd,50,chr$(puzzle(p,b))
endif
next b
set text font "arial",1
set text size 20
text 0,0,"Chosen Letters : "
for a=1 to acount
text 120+a*wd,0,chr$(alphabet(a))
next acount
gosub _guess
return
`----------------------------------------------------------------
_guess:
backdrop off
ink rgb(255,255,0),0
sync
text 0,160,"Type a letter key to make a guess"
text 0,200,"Press"
set text opaque
text text width("Press "),200,"ENTER"
set text transparent
text text width("Press ENTER "),200,"to solve puzzle"
rem check for keypresses
letter=asc(upper$(inkey$()))
rem stop key repeat
ok=nk
nk=keystate(scancode())
rem a regular entry, first check that it is alpha
if letter > 64 and letter < 91
sum=0
rem key repeat check
if nk > ok
rem add letter to chosen letter list
inc acount
for a=1 to acount
if alphabet(a)=letter
dec acount
letterhit=1
exit
endif
next a
if letterhit=1
letterhit=0
else
alphabet(acount)=letter
endif
rem test guess
for n=1 to psize
if puzzle(p,n)=letter
guessed(n)=1
nostrike=1
endif
rem check for a win
sum=sum+guessed(n)
if sum=psize then goto _win
next n
rem show the hangman
if nostrike ! 1
inc strikes
show limb 1,strikes-1
if strikes=6 then goto _lose
endif
nostrike=0
endif
endif
rem check for return key
if letter=13
ink rgb(255,255,0),128
text 0,240,"CAREFULLY type the solution to the puzzle and press ENTER"
set cursor 0,280
repeat
sync
until scancode()=0
input ">>> ";sol$
sol$=upper$(sol$)
a$=""
for n=1 to psize
a$=a$+chr$(puzzle(p,n))
next n
if sol$=a$
gosub _win
else
gosub _lose
endif
endif
set text transparent
set text font "courier new",1
set text size 36
backdrop on
return
`----------------------------------------------------------------
_win:
cls 0
repeat
text 0,0,"You WIN!!!"
text 0,20,"Play Again? (Y/N)"
result$=upper$(inkey$())
sync
until result$="Y" or result$="N"
if result$="Y"
for lb=0 to 5
hide limb 1,lb
next lb
cls 128
goto _choose_puzzle
endif
end
return
`----------------------------------------------------------------
_lose:
cls 0
repeat
text 0,0,"You lose"
text 0,20,"Play Again? (Y/N)"
result$=upper$(inkey$())
sync
until result$="Y" or result$="N"
if result$="Y"
for lb=0 to 5
hide limb 1,lb
next lb
cls 128
goto _choose_puzzle
endif
end
return
rem =============================================================
rem = FUNCTIONS
rem =============================================================
rem =============================================================
rem = DATA STATEMENTS
rem =============================================================
data 8,46,59,53,54,51,55,66,60
data 10,55,56,59,45,60,55,71,49,65,71
data 10,42,49,62,61,43,47,39,73,38,69
data 10,66,72,63,73,75,59,74,47,63,66
data 6,56,62,73,70,69,75
data 8,61,58,46,64,35,66,53,40
data 9,56,59,62,67,57,36,71,56,40
data 24,64,65,63,24,75,73,65,1,50,44,59,45,56,51,11,69,42,24,54,54,76,68,68,82
data 6,54,70,48,59,60,67
data 41,56,3,38,73,51,53,28,61,64,21,56,70,49,32,68,50,54
data 56,10,47,56,3,65,78,70,62,62,27,57,67,67,23,57,61,2,42,3,57,55,79,55
data 7,57,46,48,17,51,73,66
data 8,47,64,66,41,74,51,66,69
data 18,76,52,65,67,20,69,63,23,70,71,49,84,26,52,73,46,71,51
data 32,62,41,50,59,56,68,17,37,82,70,76,42,69,23,51
data 75,64,11,51,63,70,67,77,13,58,62,74,43,87,61,48,61
data 3,56,50,41
data 14,75,49,62,48,44,25,89,56,84,81,65,38,65,41
data 5,42,77,78,65,52
data 11,52,63,66,65,39,2,63,62,79,43,67
data 9,80,81,37,65,30,69,55,51,60
data 9,54,49,78,75,84,13,47,64,58
data 6,83,70,70,74,71,50
data 26,64,52,53,49,58,47,55,79,50,26,57,57,47,62,18,66,44,57,26,78,42,65,73,49,53,84
data 21,66,27,50,62,21,65,48,70,56,4,75,71,54,14,42,17,55,51,60,72,61
data 5,68,52,80,64,87
data 20,84,56,58,57,21,67,82,7,69,54,7,78,70,82,76,6,47,62,62,68
data 10,47,82,53,82,43,82,56,61,66,76
data 8,76,64,62,59,74,47,58,77
data 10,47,48,78,70,60,77,81,50,66,49
data 12,57,72,61,42,57,67,47,71,58,45,59,76
data 4,73,68,67,84
data 4,54,49,61,66
data 8,56,58,57,55,63,57,50,83
data 9,70,58,65,55,40,56,65,79,77
data 34,56,49,40,67,43,28,65,53,45,68,53,25,60,30,39
data 8,59,65,62,61,1,81,57,46,77,45,10,83,18,47,22,80,49,84
data 4,65,85,73,62
data 7,68,55,55,54,66,73,65
data 10,55,75,62,59,49,46,56,58,74,62
data 9,65,85,51,40,69,72,58,62,80
data 12,65,69,47,54,69,77,23,60,64,57,45,38
data 13,49,79,61,47,48,79,18,56,54,38,53,64,60
data 19,53,45,7,57,71,69,74,27,55,73,55,44,62,55,57,66,73,62,67
data 11,60,48,59,45,61,63,63,54,43,61,76
data 6,60,55,53,52,38,42
data 14,58,77,58,60,49,62,19,57,67,65,71,64,61,72
data 24,76,55,60,55,58,46,27,59,74,64,77,65,64,27,79,63,4,53,75,41,69,55,57,36
data 5,36,48,73,78,61
data 8,38,54,69,63,57,61,54,43
data 6,69,66,57,58,62,78
data 5,59,59,61,50,69
data 4,51,47,52,61
data 7,75,44,46,67,45,53,67
data 8,34,78,49,46,59,71,68,60
data 8,34,76,42,57,52,59,67,56
data 7,55,58,35,60,60,57,66
data 10,46,40,67,46,46,59,53,61,68,51
data 9,56,58,62,53,65,60,48,70,60
data 6,50,51,51,62,68,48
data 3,73,64,49
data 12,49,61,68,45,54,48,66,13,68,54,69,53
data 11,58,79,83,14,60,67,23,75,80,45,68
data 13,66,48,64,66,12,60,54,66,25,63,47,38,42
data 17,56,66,58,64,20,47,80,3,62,61,74,57,17,55,48,48,69
data 17,66,61,41,52,62,18,66,55,12,63,73,57,1,53,47,55,44
data 26,57,68,34,59,5,55,76,17,71,70,66,61,1,39,44,79,77,72,50,63,42,8,68,57,60,68
data 5,50,42,63,65,38
data 4,45,45,59,66
data 10,34,80,78,75,38,53,56,79,64,41
data 11,43,70,57,75,71,49,36,59,45,48,78
data 13,49,42,57,60,58,30,42,63,48,70,59,63,65
data 4,51,46,64,56
data 11,65,62,71,50,66,56,55,57,61,43,70
data 5,60,41,57,40,70
data 9,60,58,45,81,52,72,63,42,52
data 30,62,52,19,65,69,41,76,45,3,48,32,65,55,52,63,63,69,2,69,59,15,75,52,60,3,43,57,71,71,51
data 7,62,62,65,56,72,63,63
data 13,50,59,45,72,80,46,73,73,61,52,45,40,62
data 44,81,45,52,43,30,81,56,79,12,64,71,75,71,52
data 44,53,72,16,65,72,64,24,48,64,47,72,23,47,63,26,58,70,15,79,57,52,7,75,59,75,74,43,62,62
data 7,72,69,58,60,60,73,49
data 8,60,76,70,56,52,44,50,58
data 20,46,68,74,59,18,43,66,75,44,81,19,78,45,55,20,73,79,41,42,63
data 12,68,42,54,45,34,61,8,77,59,64,47,47
data 5,68,59,78,61,37
data 11,49,49,59,59,69,65,46,79,57,54,60
data 9,75,66,47,65,82,52,60,39,52
data 11,71,71,73,62,53,62,49,74,67,81,58
data 7,82,50,66,49,45,58,68
data 27,44,56,69,42,23,75,78,66,25,55,56,66,74,61,44,24,61,72,82,78,12,37,48,65,70,53,68
data 6,50,73,37,54,71,67
data 9,62,58,53,59,65,69,65,57,63
data 7,60,42,65,52,62,67,69
data 16,54,70,76,43,32,76,66,41,4,69,50,58,66,68,49,67
data 13,75,42,55,27,48,44,81,53,27,73,61,56,41
data 10,54,47,64,52,72,67,64,57,70,44
data 7,83,75,54,63,58,59,61
data 11,67,43,58,80,56,62,56,87,62,70,68
data 8,74,51,75,65,59,48,82,51
data 14,62,65,40,44,76,68,51,66,32,72,72,73,83,56
data 5,63,37,56,81,49
data 4,70,48,72,74
data 4,78,47,82,85
data 10,56,53,72,76,42,53,65,64,42,68
data 13,69,65,58,52,73,58,82,77,67,59,65,56,60
data 4,56,73,58,62
data 8,60,45,70,64,45,77,40,69
data 4,60,59,50,47
data 7,83,82,61,73,61,57,43
data 5,66,85,73,59,65
data 5,49,73,52,71,62
data 5,66,66,56,62,78
data 3,83,63,81
Enjoy your day.