home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / sourcecode / games / changman.amos / changman.amosSourceCode
AMOS Source Code  |  1989-07-09  |  24KB  |  591 lines

  1. Break Off 
  2. Dim USEDGUESS$(26),WRDS$(300),FLAGS(9),XPOS(8)
  3. Global USEDGUESS$(),WRDS$(),FLAGS(),XPOS()
  4. Global X13,WORD,AMOUNT,T,P,F,L$,POS,SWITCH1,IMAGE,_ENDER,CORRECTWORD,WRONGWORD,WORDQTY,GUESSES,NOCRY,STAYPUT,HELPWORD$,HELPUSED
  5.  
  6. INITIALIZE
  7.  
  8. Procedure INITIALIZE
  9.  Screen Open 0,320,170,32,Lowres
  10.   Curs Off : Cls 0 : Flash Off : Hide On 
  11.   Load "HangMan:Sprites/GuardSprite.Abk",1
  12.   Load "HangMan:Sprites/Prisoner.Abk",1
  13.   Load "HangMan:Sprites/SmallGallows.Abk",1
  14.   Load "HangMan:Sprites/Ghost.Abk",1
  15.   Load "HangMan:Pics/Scenery.Abk",6
  16.   Load "HangMan:Pics/Panel2.Abk",7
  17.   Load "HangMan:Sounds/Horn.Abk",5
  18.   Load "HangMan:Sounds/Stunner.Abk",8
  19.   Load "HangMan:Sounds/Cascade.Abk",9
  20.   Load "HangMan:Sounds/Alert4.Abk",10
  21.   Get Sprite Palette 
  22.   SWITCH1=0 : SWITCH2=0
  23.  
  24.   _GET_WORDS
  25.  
  26.   Unpack 6 To 0
  27.   Double Buffer 
  28.   For L=1 To 13 : Channel L To Bob L : Next L
  29.   Screen Open 1,320,90,16,Lowres
  30.   Curs Off : Cls 0 : Flash Off : Hide On 
  31.   Unpack 7 To 1
  32.   Screen Display 1,135,220,320,90
  33.   CORRECTWORD=0 : WRONGWORD=0 : WORDQTY=0 : GUESSES=0 : TUNE=True : STAYPUT=False
  34. End Proc
  35.  
  36. MAINCONTROL
  37.  
  38. Procedure MAINCONTROL
  39. Do 
  40.   Wait 25 : ENTERGUARDS
  41.   INIT_RIGHT_GUESS
  42.   Randomize Timer
  43.   WORD=Rnd(300) : If WORD=0 : WORD=1+Rnd(4) : End If 
  44.   T=Len(WRDS$(WORD)) : POS=15
  45.   HELPWORD$=Space$(T) : Rem *** Initialize Helpword with spaces ***
  46.   Screen 1 : Paper 11 : Locate 14,2 : Cline(25)
  47.   Locate 14,3 : Cline(25)
  48.   For L=1 To T
  49.     Pen 1 : Paper 11 : Locate POS,2 : Print "_"
  50.     Inc POS
  51.   Next L
  52.   AMOUNT=0 : P=1
  53.   TESTER
  54. Loop 
  55. Edit 
  56. End Proc
  57.  
  58. Procedure ENTERGUARDS
  59.   If Not STAYPUT
  60.     Screen 0
  61.     Bob 9,-70,100,6 : Bob 10,-50,100,24 : Bob 11,-30,100,6 : Rem ** 2 Guards + Prisoner **  
  62.     A$="Anim 0,(6,10)(7,10)(8,10) ;" : A$=A$+"Move 270,0,200"
  63.     P$="Anim 0,(24,10)(25,10)(26,10) ;" : P$=P$+"Move 270,0,200"
  64.     B$="Anim 0,(6,10)(7,10)(8,10) ;" : B$=B$+"Move 270,0,200"
  65.     Amal 9,A$ : Amal 10,P$ : Amal 11,B$ : Amal On 
  66.     Repeat : S=Chanmv(11) : Until S=0
  67.     Amal Off : Bob 9,,,1 : Bob 10,,,19 : Bob 11,,,1
  68.   End If 
  69. End Proc
  70.  
  71. Procedure TESTER
  72.   For B=1 To 9 : FLAGS(B)=0 : Next B : Rem *** No Gallows Used ***
  73.   IMAGE=35 : _ENDER=False : NOCRY=True
  74.   Limit Mouse 140,265 To 430,294
  75.   Repeat 
  76.     SWITCH1=0 : FLAG=0 : P=1 : Screen 1 : Locate 2,4 : Cline(28)
  77.     Pen 7 : Locate 2,4 : Print "Click letter of your choice"
  78.     _SETZONES
  79.     L$=Space$(1) : Show On 
  80.     _GETCHOICE
  81.     CHECK_IF_USED_OR_NOT
  82.     If SWITCH1=0
  83.       For H=P To T
  84.         F=Instr(WRDS$(WORD),L$,P)
  85.         If F<>0
  86.           FLAG=1 : Inc AMOUNT : P=F+1 : Pen 1 : Locate 14+F,2 : Print L$
  87.           Mid$(HELPWORD$,F,1)=L$
  88.           _FILL_USED_ARRAY
  89.         End If 
  90.       Next H
  91.       If FLAG=1 and AMOUNT<T
  92.           Locate 2,4 : Cline(28)
  93.           Pen 1 : Locate 2,4 : Print "Correct!"
  94.           Sam Bank 10 : Sam Play 1 : Screen 0
  95.           A$="Anim 6,(31,8)(32,8)" : Amal 10,A$ : Amal On 10
  96.           Wait 1 : While Chanan(10) : Wend 
  97.           Amal Off 10 : Bob 10,,,19 : Screen 1
  98.       End If 
  99.       If FLAG=1 and AMOUNT=T
  100.           Locate 2,4 : Cline(28)
  101.           Pen 1 : Locate 2,4 : Print "Well Done!"
  102.           Sam Loop On : Sam Bank 9 : Sam Play 1 : Screen 0
  103.           A$="Anim 6,(31,8)(32,8)" : Amal 10,A$ : Amal On 10
  104.           Wait 1 : While Chanan(10) : Wend : Sam Loop Off 
  105.           Amal Off 10 : Bob 10,,,19 : Screen 1
  106.       End If 
  107.       If FLAG=0 and SWITCH1=0
  108.         Locate 2,4 : Cline(28)
  109.         Pen 1 : Locate 2,4 : Print "Sorry! Wrong choice"
  110.         Sam Bank 5 : Sam Play 1 : Screen 0 : Bob 10,,,34
  111.         _ADDGALLOWS
  112.         If NOCRY : Bob 10,,,19 : End If 
  113.         Wait 20 : Inc GUESSES : Screen 1 : Locate 2,4 : Cline(28)
  114.         _FILL_USED_ARRAY
  115.       End If 
  116.     End If 
  117.     If SWITCH1=1
  118.       Locate 2,4 : Cline(28)
  119.       Screen 1 : Pen 1 : Locate 2,4 : Print "You have used that letter"
  120.       Sam Bank 8 : Sam Play 1 : Wait 80 : Locate 2,4 : Cline(28)
  121.     End If 
  122.   Until AMOUNT>=T
  123.   Inc WORDQTY : Reserve Zone 
  124.   If Not _ENDER : Inc CORRECTWORD : RELEASEGALLOWS : STAYPUT=True : End If 
  125. End Proc
  126.  
  127. Procedure INIT_RIGHT_GUESS
  128.   For L=1 To 26
  129.     USEDGUESS$(L)=Space$(1)
  130.   Next L
  131. End Proc
  132.  
  133. Procedure CHECK_IF_USED_OR_NOT
  134.   For CR=1 To 26
  135.     If USEDGUESS$(CR)=L$
  136.       SWITCH1=1 : Exit 
  137.     End If 
  138.   Next CR
  139. End Proc
  140.  
  141. Procedure _FILL_USED_ARRAY
  142.   For R=1 To 26
  143.     If USEDGUESS$(R)=Space$(1)
  144.       USEDGUESS$(R)=L$ : Exit 
  145.     End If 
  146.   Next R
  147. End Proc
  148.  
  149. Procedure _GET_WORDS
  150.   For I=1 To 300
  151.     Read WRDS$(I)
  152.   Next I
  153.   Data "apple","happy","school","teacher","moon","horse","cups","book","dolls","flag"
  154.   Data "house","chair","table","clock","video","picture","torch","lollypop","lamp","chalk"
  155.   Data "baby","girl","number","gold","silver","shoes","crisps","caravan","animal","cottage"
  156.   Data "sunny","sport","trees","beach","watch","orange","lemon","summer","spring","winter"
  157.   Data "cooking","pencil","music","coats","scarf","scarecrow","flower","rabbit","truck","story"
  158.   Data "world","hello","friend","travel","because","choose","going","another","thing","remember"
  159.   Data "together","squirrel","fierce","elephant","surprise","learning","around","really","numbered","ordinary"
  160.   Data "behave","indeed","where","found","anyway","enough","jungle","tangled","block","everything"
  161.   Data "different","according","touch","reach","mention","understand","better","usually","sometimes","branch"
  162.   Data "trunk","monkey","fingers","wrapped","climbing","swinging","continue","chance","forest","nothing"
  163.   Data "leaves","suddenly","silence","insect","earth","crash","giant","sound","nearby","river"
  164.   Data "night","music","concert","parrot","chorus","these","drink","licking","heard","voice"
  165.   Data "danger","spiteful","capture","anybody","heart","spend","riding","branch","practice","before"
  166.   Data "remind","really","alive","search","shadow","without","looking","careful","however","fresh"
  167.   Data "print","ground","tractor","follow","light","complete","chance","breeze","carry","scent"
  168.   Data "sense","space","planet","point","hearing","simply","large","attack","reason","strong"
  169.   Data "buffalo","knock","powerful","limit","beautiful","angry","shining","brilliant","colour","somewhere"
  170.   Data "between","wonderful","fierce","family","stripe","stone","crafty","confuse","cunning","clever"
  171.   Data "snake","acrobat","clown","circus","escape","water","always","respect","plate","train"
  172.   Data "avoid","challenge","caught","mountain","corner","become","visitor","steel","waiting","crocodile"
  173.   Data "magnet","aeroplane","excited","given","luckiest","second","telephone","thinks","computer","learned"
  174.   Data "first","propeller","gives","twist","playground","spinning","round","squeak","looks","examine"
  175.   Data "liked","exciting","climbs","climbed","aboard","cockpit","fallen","complain","thing","struggle"
  176.   Data "helped","sellotape","engine","wonder","front","explore","beneath","below","silly","himself"
  177.   Data "herself","sadly","gladly","telling","cowboy","flying","goggles","swimming","skates","ready"
  178.   Data "supper","breakfast","dinner","lunch","circle","square","triangle","octopus","hamster","children"
  179.   Data "cupboard","indian","soldier","eating","exercise","outside","problem","given","having","trying"
  180.   Data "holiday","wanted","christmas","easter","queen","fairy","kingdom","invited","wisdom","island"
  181.   Data "health","forgotten","castle","princess","prince","changed","sleep","wearing","adventure","stairs"
  182.   Data "mouse","passed","kissed","married","happily","banana","design","imagine","increase","fireworks"
  183. End Proc
  184.  
  185. Procedure _SETZONES
  186.   Screen 1 : Reserve Zone 26 : Reset Zone 
  187.   X1=17 : X2=35 : Y1=47 : Y2=57
  188.   For L=1 To 13
  189.     Set Zone L,X1,Y1 To X2,Y2
  190.     Add X1,22 : Add X2,22
  191.   Next L
  192.   X1=17 : X2=35 : Y1=62 : Y2=71
  193.   For L=14 To 26
  194.     Set Zone L,X1,Y1 To X2,Y2
  195.     Add X1,22 : Add X2,22
  196.   Next L
  197. End Proc
  198.  
  199. Procedure _GETCHOICE
  200.   Do 
  201.     M=Mouse Zone : HELPKEY=Key State(95) : Z$=Inkey$ : CLICK=Mouse Click
  202.     If Z$=Chr$(27) : Reserve Zone : QUIT : End If 
  203.     If HELPKEY : Inc HELPUSED : PLEASEHELP : End If 
  204.     If CLICK=1 and M=1 : Reserve Zone : L$="a" : Hide On : Exit : End If 
  205.     If CLICK=1 and M=2 : Reserve Zone : L$="b" : Hide On : Exit : End If 
  206.     If CLICK=1 and M=3 : Reserve Zone : L$="c" : Hide On : Exit : End If 
  207.     If CLICK=1 and M=4 : Reserve Zone : L$="d" : Hide On : Exit : End If 
  208.     If CLICK=1 and M=5 : Reserve Zone : L$="e" : Hide On : Exit : End If 
  209.     If CLICK=1 and M=6 : Reserve Zone : L$="f" : Hide On : Exit : End If 
  210.     If CLICK=1 and M=7 : Reserve Zone : L$="g" : Hide On : Exit : End If 
  211.     If CLICK=1 and M=8 : Reserve Zone : L$="h" : Hide On : Exit : End If 
  212.     If CLICK=1 and M=9 : Reserve Zone : L$="i" : Hide On : Exit : End If 
  213.     If CLICK=1 and M=10 : Reserve Zone : L$="j" : Hide On : Exit : End If 
  214.     If CLICK=1 and M=11 : Reserve Zone : L$="k" : Hide On : Exit : End If 
  215.     If CLICK=1 and M=12 : Reserve Zone : L$="l" : Hide On : Exit : End If 
  216.     If CLICK=1 and M=13 : Reserve Zone : L$="m" : Hide On : Exit : End If 
  217.     If CLICK=1 and M=14 : Reserve Zone : L$="n" : Hide On : Exit : End If 
  218.     If CLICK=1 and M=15 : Reserve Zone : L$="o" : Hide On : Exit : End If 
  219.     If CLICK=1 and M=16 : Reserve Zone : L$="p" : Hide On : Exit : End If 
  220.     If CLICK=1 and M=17 : Reserve Zone : L$="q" : Hide On : Exit : End If 
  221.     If CLICK=1 and M=18 : Reserve Zone : L$="r" : Hide On : Exit : End If 
  222.     If CLICK=1 and M=19 : Reserve Zone : L$="s" : Hide On : Exit : End If 
  223.     If CLICK=1 and M=20 : Reserve Zone : L$="t" : Hide On : Exit : End If 
  224.     If CLICK=1 and M=21 : Reserve Zone : L$="u" : Hide On : Exit : End If 
  225.     If CLICK=1 and M=22 : Reserve Zone : L$="v" : Hide On : Exit : End If 
  226.     If CLICK=1 and M=23 : Reserve Zone : L$="w" : Hide On : Exit : End If 
  227.     If CLICK=1 and M=24 : Reserve Zone : L$="x" : Hide On : Exit : End If 
  228.     If CLICK=1 and M=25 : Reserve Zone : L$="y" : Hide On : Exit : End If 
  229.     If CLICK=1 and M=26 : Reserve Zone : L$="z" : Hide On : Exit : End If 
  230.   Loop 
  231. End Proc
  232.  
  233. Procedure PLEASEHELP
  234.   H=Instr(HELPWORD$,Space$(1))
  235.   C$=Mid$(WRDS$(WORD),H,1)
  236.   Screen 1 : Pen 1 : Paper 11
  237.   For L=1 To 5
  238.     Locate 30,2 : Print "Try ";C$
  239.     Wait 8 : Locate 30,2 : Cline(6)
  240.     Wait 10
  241.   Next L
  242. End Proc
  243.  
  244. Procedure _ADDGALLOWS
  245.   If IMAGE<45 : Inc IMAGE : End If 
  246.   If IMAGE=36 : BASE : End If 
  247.   If IMAGE=37 : STAIRS : End If 
  248.   If IMAGE=38 : LEFTPOST : End If 
  249.   If IMAGE=39 : RIGHTPOST : End If 
  250.   If IMAGE=40 : _TOPPOST : End If 
  251.   If IMAGE=41 : LEFTBRACE : End If 
  252.   If IMAGE=42 : RIGHTBRACE : End If 
  253.   If IMAGE=43 : ROPE : End If 
  254.   If IMAGE=44 : HANGMAN : End If 
  255. End Proc
  256.  
  257. Procedure BASE
  258.   Screen 0 : Bob 12,-105,100,13 : Bob 1,-88,125,36
  259.   A$="Anim 0,(13,10)(14,10)(15,10) ;" : A$=A$+"Move 155,0,165"
  260.   B$="Move 155,0,165"
  261.   Amal 12,A$ : Amal 1,B$ : Amal On 
  262.   Repeat : POST=Chanmv(1) : Until POST=0
  263.   Wait Vbl : Amal Off : FLAGS(1)=1 : Bob 12,45,,1 : Screen 1
  264. End Proc
  265.  
  266. Procedure STAIRS
  267.   Screen 0 : Bob 12,,,2
  268.   A$="Anim 0,(2,8)(3,8)(4,8) ;" : A$=A$+"Move -155,0,165"
  269.   Amal 12,A$ : Amal On 12
  270.   Repeat : POST=Chanmv(12) : Until POST=0
  271.   Bob 2,-88,125,37 : Rem ** Position Stairs **
  272.   A$="Anim 0,(13,10)(14,10)(15,10) ;" : A$=A$+"Move 170,0,165" : Rem ** Anin + Move Guard **
  273.   B$="Move 170,0,175" : Rem ** Move Stairs **
  274.   Amal 12,A$ : Amal 2,B$ : Amal On 
  275.   Repeat : POST=Chanmv(2) : Until POST=0
  276.   Wait Vbl : Amal Off : Bob 12,45,,1 : FLAGS(2)=1 : Screen 1
  277. End Proc
  278.  
  279. Procedure LEFTPOST
  280.   Screen 0 : Bob 12,,,2
  281.   A$="Anim 0,(2,10)(3,10)(4,10) ;" : A$=A$+"Move -155,0,165"
  282.   Amal 12,A$ : Amal On 12
  283.   Repeat : POST=Chanmv(12) : Until POST=0
  284.   Bob 3,-89,48,38 : Rem ** Position Left Post ** 
  285.   A$="Anim 0,(13,10)(14,10)(15,10) ;" : A$=A$+"Move 200,0,165" : Rem ** Anin + Move Guard **
  286.   B$="Move 197,0,165" : Rem ** Move Left Post ** 
  287.   Amal 12,A$ : Amal 3,B$ : Amal On 
  288.   Repeat : POST=Chanmv(12) : Until POST=0
  289.   Bob 12,,,5 : Bob 3,98,,38 : Rem ** Position Guard + Post at bottom of stairs **
  290.   A$="Anim 0,(9,15)(10,15) ;" : A$=A$+"Move 0,-23,90" : Rem ** Climb Stairs ** 
  291.   B$="Move 0,-8,100"
  292.   Amal 12,A$ : Amal 3,B$ : Amal On 
  293.   Repeat : POST=Chanmv(12) : Until POST=0
  294.   Bob 12,,,5 : Wait 10 : Bob 12,,,16 : Bob 3,87,,38
  295.   A$="Anim 0,(16,12)(17,12)(18,12) ;" : A$=A$+"Move -25,0,95" : Rem ** Move Guard + Post Left ** 
  296.   B$="Move -16,0,85"
  297.   Amal 12,A$ : Amal 3,B$ : Amal On 
  298.   Repeat : POST=Chanmv(3) : Until POST=0
  299.   Bob 12,,,3 : Bob 12,,,1
  300.   A$="Anim 0,(6,12)(7,12)(8,12) ;" : A$=A$+"Move 25,0,85" : Rem ** Move Guard away from Gallows ** 
  301.   Amal 12,A$ : Amal On 
  302.   Repeat : POST=Chanmv(12) : Until POST=0
  303.   Bob 12,,,1
  304.   A$="Anim 0,(11,15)(12,15) ;" : A$=A$+"Move 0,23,90" : Rem ** Move Guard Downstairs **
  305.   Amal 12,A$ : Amal On 
  306.   Repeat : POST=Chanmv(12) : Until POST=0
  307.   Bob 12,,,1
  308.   A$="Anim 0,(2,12)(3,12)(4,12) ;" : A$=A$+"Move -40,0,90" : Rem ** Move Guard Downstairs **
  309.   Amal 12,A$ : Amal On 
  310.   Repeat : POST=Chanmv(12) : Until POST=0
  311.   Wait Vbl : Amal Off : Bob 12,,,1 : FLAGS(3)=1 : Screen 1
  312. End Proc
  313.  
  314. Procedure RIGHTPOST
  315.   Screen 0 : Bob 12,,,2
  316.   A$="Anim 0,(2,10)(3,10)(4,10) ;" : A$=A$+"Move -155,0,165"
  317.   Amal 12,A$ : Amal On 12
  318.   Repeat : POST=Chanmv(12) : Until POST=0
  319.   Bob 4,-91,48,39 : Rem ** Position Right Post **  
  320.   A$="Anim 0,(13,12)(14,12)(15,12) ;" : A$=A$+"Move 200,0,175" : Rem ** Anin + Move Guard **
  321.   B$="Move 197,0,165" : Rem ** Move Right Post **  
  322.   Amal 12,A$ : Amal 4,B$ : Amal On 
  323.   Repeat : POST=Chanmv(12) : Until POST=0
  324.   Bob 12,,,5 : Bob 4,105,,39 : Rem ** Position Guard + Post at bottom of stairs **
  325.   A$="Anim 0,(9,15)(10,15) ;" : A$=A$+"Move 0,-23,90" : Rem ** Climb Stairs ** 
  326.   B$="Move 0,-8,100"
  327.   Amal 12,A$ : Amal 4,B$ : Amal On 
  328.   Repeat : POST=Chanmv(12) : Until POST=0
  329.   Bob 12,,,5 : Wait 10 : Bob 12,,,13 : Bob 4,114,,39
  330.   A$="Anim 0,(13,12)(14,12)(15,12) ;" : A$=A$+"Move 40,0,95" : Rem ** Move Guard + Post Right **    
  331.   B$="Move 37,0,85"
  332.   Amal 12,A$ : Amal 4,B$ : Amal On 
  333.   Repeat : POST=Chanmv(4) : Until POST=0
  334.   Bob 12,,,8 : Bob 12,,,1
  335.   A$="Anim 0,(2,12)(3,12)(4,12) ;" : A$=A$+"Move -35,0,85" : Rem ** Move Guard away from Gallows ** 
  336.   Amal 12,A$ : Amal On 
  337.   Repeat : POST=Chanmv(12) : Until POST=0
  338.   Bob 12,,,1
  339.   A$="Anim 0,(11,15)(12,15) ;" : A$=A$+"Move 0,23,90" : Rem ** Move Guard Downstairs **
  340.   Amal 12,A$ : Amal On 
  341.   Repeat : POST=Chanmv(12) : Until POST=0
  342.   Bob 12,,,1
  343.   A$="Anim 0,(2,12)(3,12)(4,12) ;" : A$=A$+"Move -40,0,90" : Rem ** Move Guard Downstairs **
  344.   Amal 12,A$ : Amal On 
  345.   Repeat : POST=Chanmv(12) : Until POST=0
  346.   Wait Vbl : Amal Off : Bob 12,,,1 : FLAGS(4)=1 : Screen 1
  347. End Proc
  348.  
  349. Procedure _TOPPOST
  350.   Screen 0 : Bob 12,,,2
  351.   A$="Anim 0,(2,8)(3,8)(4,8) ;" : A$=A$+"Move -155,0,165"
  352.   Amal 12,A$ : Amal On 12
  353.   Repeat : POST=Chanmv(12) : Until POST=0
  354.   Bob 5,-118,125,40 : Rem ** Position Top Post **  
  355.   A$="Anim 0,(13,10)(14,10)(15,10) ;" : A$=A$+"Move 200,0,175" : Rem ** Anin + Move Guard **
  356.   B$="Move 195,0,165" : Rem ** Move Top Post **  
  357.   Amal 12,A$ : Amal 5,B$ : Amal On 
  358.   Repeat : POST=Chanmv(12) : Until POST=0
  359.   Bob 12,,,5 : Rem ** Position Guard + Top Post at bottom of stairs **
  360.   A$="Anim 0,(9,15)(10,15) ;" : A$=A$+"Move 0,-23,90" : Rem ** Climb Stairs ** 
  361.   B$="Move 0,-23,100"
  362.   Amal 12,A$ : Amal 5,B$ : Amal On 
  363.   Repeat : POST=Chanmv(12) : Until POST=0
  364.   Amal Off : Bob 12,,,5 : B$="Move 0,-63,90" : Amal 5,B$ : Amal On 
  365.   Repeat : POST=Chanmv(5) : Until POST=0
  366.   Wait 10 : Bob 12,,,1
  367.   A$="Anim 0,(11,15)(12,15) ;" : A$=A$+"Move 0,23,90" : Rem ** Move Guard Downstairs **
  368.   Amal 12,A$ : Amal On 
  369.   Repeat : POST=Chanmv(12) : Until POST=0
  370.   Bob 12,,,1
  371.   A$="Anim 0,(2,8)(3,8)(4,8) ;" : A$=A$+"Move -40,0,90" : Rem ** Move Guard Downstairs **
  372.   Amal 12,A$ : Amal On 
  373.   Repeat : POST=Chanmv(12) : Until POST=0
  374.   Wait Vbl : Amal Off : Bob 12,,,1 : FLAGS(5)=1 : Screen 1
  375. End Proc
  376.  
  377. Procedure LEFTBRACE
  378.   Screen 0
  379.   A$="Anim 0,(2,10)(3,10)(4,10) ;" : A$=A$+"Move -155,0,165"
  380.   Amal 12,A$ : Amal On 12
  381.   Repeat : POST=Chanmv(12) : Until POST=0
  382.   Bob 6,-84,110,41 : Rem ** Position Left Brace **  
  383.   A$="Anim 0,(13,10)(14,10)(15,10) ;" : A$=A$+"Move 200,0,175" : Rem ** Anin + Move Guard **
  384.   B$="Move 195,0,165" : Rem ** Move Left Brace **  
  385.   Amal 12,A$ : Amal 6,B$ : Amal On 
  386.   Repeat : POST=Chanmv(12) : Until POST=0
  387.   Bob 12,,,5 : Rem ** Position Guard + Left Brace at bottom of stairs **
  388.   A$="Anim 0,(9,15)(10,15) ;" : A$=A$+"Move 0,-23,90" : Rem ** Climb Stairs ** 
  389.   B$="Move 0,-10,90"
  390.   Amal 12,A$ : Amal 6,B$ : Amal On 
  391.   Repeat : POST=Chanmv(12) : Until POST=0
  392.   Amal Off : Bob 12,,,5 : B$="Move -34,-54,90" : Amal 6,B$ : Amal On 
  393.   Repeat : POST=Chanmv(6) : Until POST=0
  394.   Wait 10 : Bob 12,,,1
  395.   A$="Anim 0,(11,15)(12,15) ;" : A$=A$+"Move 0,23,90" : Rem ** Move Guard Downstairs **
  396.   Amal 12,A$ : Amal On 
  397.   Repeat : POST=Chanmv(12) : Until POST=0
  398.   Bob 12,,,1
  399.   A$="Anim 0,(2,8)(3,8)(4,8) ;" : A$=A$+"Move -55,0,90" : Rem ** Move Guard Downstairs **
  400.   Amal 12,A$ : Amal On 
  401.   Repeat : POST=Chanmv(12) : Until POST=0
  402.   Wait Vbl : Amal Off : Bob 12,,,1 : FLAGS(6)=1 : Screen 1
  403. End Proc
  404.  
  405. Procedure RIGHTBRACE
  406.   Screen 0 : Bob 12,,,2
  407.   A$="Anim 0,(2,10)(3,10)(4,10) ;" : A$=A$+"Move -140,0,165"
  408.   Amal 12,A$ : Amal On 12
  409.   Repeat : POST=Chanmv(12) : Until POST=0
  410.   Bob 7,-84,110,42 : Rem ** Position Right Brace **   
  411.   A$="Anim 0,(13,10)(14,10)(15,10) ;" : A$=A$+"Move 200,0,175" : Rem ** Anin + Move Guard **
  412.   B$="Move 195,0,165" : Rem ** Move Right Brace **   
  413.   Amal 12,A$ : Amal 7,B$ : Amal On 
  414.   Repeat : POST=Chanmv(12) : Until POST=0
  415.   Bob 12,,,5 : Rem ** Position Guard + Right Brace at bottom of stairs ** 
  416.   A$="Anim 0,(9,15)(10,15) ;" : A$=A$+"Move 0,-23,90" : Rem ** Climb Stairs ** 
  417.   B$="Move 0,-10,90"
  418.   Amal 12,A$ : Amal 7,B$ : Amal On 
  419.   Repeat : POST=Chanmv(12) : Until POST=0
  420.   Amal Off : Bob 12,,,5 : B$="Move 19,-54,90" : Amal 7,B$ : Amal On 
  421.   Repeat : POST=Chanmv(7) : Until POST=0
  422.   Wait 10 : Bob 12,,,1
  423.   A$="Anim 0,(11,15)(12,15) ;" : A$=A$+"Move 0,23,90" : Rem ** Move Guard Downstairs **
  424.   Amal 12,A$ : Amal On 
  425.   Repeat : POST=Chanmv(12) : Until POST=0
  426.   Bob 12,,,1
  427.   A$="Anim 0,(2,8)(3,8)(4,8) ;" : A$=A$+"Move -55,0,90" : Rem ** Move Guard Downstairs **
  428.   Amal 12,A$ : Amal On 
  429.   Repeat : POST=Chanmv(12) : Until POST=0
  430.   Wait Vbl : Amal Off : Bob 12,,,1 : FLAGS(7)=1 : Screen 1
  431. End Proc
  432.  
  433. Procedure ROPE
  434.   Screen 0 : Bob 12,,,2
  435.   A$="Anim 0,(2,10)(3,10)(4,10) ;" : A$=A$+"Move -140,0,165"
  436.   Amal 12,A$ : Amal On 12
  437.   Repeat : POST=Chanmv(12) : Until POST=0
  438.   Bob 8,-74,90,43 : Rem ** Position Rope **    
  439.   A$="Anim 0,(13,10)(14,10)(15,10) ;" : A$=A$+"Move 187,0,175" : Rem ** Anin + Move Guard **
  440.   B$="Move 182,0,165" : Rem ** Move Rope **    
  441.   Amal 12,A$ : Amal 8,B$ : Amal On 
  442.   Repeat : POST=Chanmv(12) : Until POST=0
  443.   Bob 12,,,5 : Rem ** Position Guard + Rope at bottom of stairs **  
  444.   A$="Anim 0,(9,15)(10,15) ;" : A$=A$+"Move 0,-23,90" : Rem ** Climb Stairs ** 
  445.   B$="Move 0,-10,90"
  446.   Amal 12,A$ : Amal 8,B$ : Amal On 
  447.   Repeat : POST=Chanmv(12) : Until POST=0
  448.   Amal Off : Bob 12,,,5 : B$="Move 0,-39,90" : Amal 8,B$ : Amal On 
  449.   Repeat : POST=Chanmv(8) : Until POST=0
  450.   Wait 10 : Bob 12,,,1
  451.   A$="Anim 0,(11,15)(12,15) ;" : A$=A$+"Move 0,23,90" : Rem ** Move Guard Downstairs **
  452.   Amal 12,A$ : Amal On 
  453.   Repeat : POST=Chanmv(12) : Until POST=0
  454.   Bob 12,,,1
  455.   A$="Anim 0,(2,8)(3,8)(4,8) ;" : A$=A$+"Move -55,0,90" : Rem ** Move Guard Downstairs **
  456.   Amal 12,A$ : Amal On 
  457.   Repeat : POST=Chanmv(12) : Until POST=0
  458.   Amal Off : Wait Vbl : Bob 12,,,1 : FLAGS(8)=1 : Screen 1
  459. End Proc
  460.  
  461. Procedure HANGMAN
  462.   Screen 0
  463.   A$="Anim 0,(2,10)(3,10)(4,10) ;" : A$=A$+"Move -119,0,200"
  464.   P$="Anim 0,(20,10)(21,10)(22,10) ;" : P$=P$+"Move -118,0,200"
  465.   B$="Anim 0,(2,10)(3,10)(4,10) ;" : B$=B$+"Move -119,0,200"
  466.   Amal 9,A$ : Amal 10,P$ : Amal 11,B$ : Amal On 
  467.   Repeat : S=Chanmv(11) : Until S=0
  468.   Amal Off : Bob 9,,,5 : Bob 10,,,23 : Bob 11,,,5
  469.   A$="Anim 0,(9,15)(10,15) ;" : A$=A$+"Move 0,-23,90" : Rem ** Guard Climb Stairs ** 
  470.   P$="Anim 0,(27,15)(28,15) ;" : P$=P$+"Move 0,-23,90" : Rem ** Prisoner Climb Stairs **  
  471.   B$="Anim 0,(9,15)(10,15) ;" : B$=B$+"Move 0,-23,90" : Rem ** Guard Climb Stairs ** 
  472.   Amal 9,A$ : Amal 10,P$ : Amal 11,B$ : Amal On 
  473.   Repeat : S=Chanmv(11) : Until S=0
  474.   Amal Off : Bob 9,,,1 : Bob 10,,,19 : Bob 11,,,1
  475.   Wait 10 : P$="Move 0,-5,70" : A$="Move 0,-5,70" : Amal 10,P$ : Amal 8,A$ : Amal On 10 : Amal On 8 : Bob 10,,,33 : Rem  ** Prisoner Hung ** 
  476.   Repeat : S=Chanmv(10) : Until S=0
  477.   Amal Off : Wait Vbl : FLAGS(9)=1
  478.   Screen 1 : Locate 2,4 : Cline(28) : Locate 12,4 : Pen 1 : Print "YOU ARE HUNG!"
  479.   Screen 0 : SENDGHOST
  480.   RELEASEGALLOWS
  481.   Screen 1 : Locate 2,4 : Cline(28) : Locate 2,4 : Pen 1 : Print "The word was ... "
  482.   POS=15 : Pen 1 : Paper 11 : Locate POS,2 : Print WRDS$(WORD)
  483.   Wait 70 : Locate 2,4 : Cline(28) : Locate 2,4 : Print "Press a key to continue!" : Clear Key : Wait Key 
  484.   Locate 2,4 : Cline(28)
  485.   AMOUNT=T : _ENDER=True : Inc WRONGWORD : NOCRY=False : STAYPUT=False
  486. End Proc
  487.  
  488. Procedure RELEASEGALLOWS
  489.   Screen 0
  490.   If FLAGS(9)=1 : Wait 25 : TAKE_AWAY_BODY : End If 
  491.   If FLAGS(1)=1
  492.     J$="Anim 0,(6,15)(7,15)(8,15) ;" : J$=J$+"Move 105,0,100" : Amal 12,J$ : Amal On 12
  493.     Wait 2 : Repeat : POST=Chanmv(12) : Until POST=0
  494.     Amal Off : Bob 12,155,,16 : X12=X Bob(12)
  495.   End If 
  496.   For L=1 To 8
  497.     If FLAGS(L)=1 : XPOS(L)=X Bob(L) : End If 
  498.   Next L
  499.   COUNT=1 : IMAGECOUNT=0 : NEWIMAGE=16
  500.   Repeat 
  501.     If FLAGS(1)=1 : Bob 12,X12-COUNT,,NEWIMAGE : Bob 1,XPOS(1)-COUNT,,36 : End If 
  502.     If FLAGS(2)=1 : Bob 2,XPOS(2)-COUNT,,37 : End If 
  503.     If FLAGS(3)=1 : Bob 3,XPOS(3)-COUNT,,38 : End If 
  504.     If FLAGS(4)=1 : Bob 4,XPOS(4)-COUNT,,39 : End If 
  505.     If FLAGS(5)=1 : Bob 5,XPOS(5)-COUNT,,40 : End If 
  506.     If FLAGS(6)=1 : Bob 6,XPOS(6)-COUNT,,41 : End If 
  507.     If FLAGS(7)=1 : Bob 7,XPOS(7)-COUNT,,42 : End If 
  508.     If FLAGS(8)=1 : Bob 8,XPOS(8)-COUNT,,43 : End If 
  509.     Add COUNT,2 : Add IMAGECOUNT,1
  510.     If IMAGECOUNT mod 4=0
  511.       Add NEWIMAGE,1 : If NEWIMAGE>18 : NEWIMAGE=16 : End If 
  512.     End If 
  513.     Wait 1
  514.   Until COUNT>=190
  515. End Proc
  516.  
  517. Procedure TAKE_AWAY_BODY
  518.   A$="Anim 0,(11,15)(12,15) ;" : A$=A$+"Move 0,23,120" : Rem ** Move Guard Downstairs **
  519.   Bob 10,,,35 : P$="Move 0,23,120" : Rem ** Move Dead Prisoner Downstairs **
  520.   B$="Anim 0,(11,15)(12,15) ;" : B$=B$+"Move 0,23,120" : Rem ** Move Guard Downstairs **
  521.   Amal 9,A$ : Amal 10,P$ : Amal 11,B$
  522.   Bob 10,,,19 : Amal On 
  523.   Repeat : POST=Chanmv(11) : Until POST=0
  524.   A$="Anim 0,(13,15)(14,15)(15,15) ;" : A$=A$+"Move -150,0,120" : Rem ** Move Guard OffScreen ** 
  525.   P$="Move -150,0,120" : Rem ** Move Dead Prisoner OffScreen ** 
  526.   B$="Anim 0,(16,15)(17,15)(18,15) ;" : B$=B$+"Move -150,0,120" : Rem ** Move Guard OffScreen ** 
  527.   Amal 9,A$ : Amal 10,P$ : Amal 11,B$ : Bob 10,95,115,35 : Bob 11,128,,16 : Amal On 
  528.   Repeat : POST=Chanmv(11) : Until POST=0
  529.   Amal Off 
  530. End Proc
  531.  
  532. Procedure SENDGHOST
  533.   X13=X Bob(10) : Y13=Y Bob(10)
  534.   Bob 13,X13,Y13,44 : Z$="Anim 0,(44,15)(45,15) ;" : Z$=Z$+"Move 0,-135,500"
  535.   Amal 13,Z$ : Amal On 13
  536.   Repeat : GHOUL=Chanmv(13) : Until GHOUL=0
  537. End Proc
  538.  
  539. Procedure _SHOWSCORES
  540.   Screen 2 : Ink 16
  541.   For L=0 To 60 Step 2
  542.     Draw 50,40+L To 260,40+L : Draw 50,160-L To 260,160-L
  543.     Wait 4
  544.   Next L
  545.   For L=0 To 60
  546.     Draw 50,100-L To 260,100-L : Draw 50,100+L To 260,100+L
  547.     Wait 1
  548.   Next L
  549.   Ink 9 : Box 49,39 To 261,161
  550.   Ink 17 : Box 48,38 To 262,162
  551.   Ink 17 : Box 47,37 To 263,163
  552.   Pen 29 : Paper 16 : Locate 13,6 : Print "YOUR SCORES"
  553.   Pen 19 : Locate 7,8 : Print "Tries             = ";WORDQTY
  554.   Locate 7,10 : Print "Completed Words   = ";CORRECTWORD
  555.   Locate 7,12 : Print "Incomplete Words  = ";WRONGWORD
  556.   Locate 7,14 : Print "Wrong Guesses     = ";GUESSES
  557.   Locate 7,16 : Print "Used Help (Times) = ";HELPUSED
  558.   Pen 29 : Locate 9,18 : Print "Press Any Key To End"
  559.   Clear Key : Wait Key 
  560.   Ink 16 : For L=0 To 120 : Draw 50,40+L To 260,40+L : Wait 1 : Next L
  561.   Pen 19 : Paper 16 : Locate 10,8 : Print "Thanks For Playing"
  562.   Locate 10,12 : Print "Play Again Soon!"
  563.   Wait 50 : QUIT2
  564. End Proc
  565.  
  566. Procedure QUIT
  567.   Screen 1 : Hide On 
  568.   Locate 2,4 : Cline(28) : Locate 2,4 : Pen 1 : Print "The word was ... "
  569.   POS=15 : Pen 1 : Paper 11 : Locate POS,2 : Print WRDS$(WORD) : Wait 150
  570.   Locate 14,2 : Cline(25) : Locate 2,4 : Cline(28)
  571.   Pen 1 : Locate 2,4 : Print "OK! Here are your scores ..."
  572.   Update : Wait 30 : Auto View Off 
  573.   Screen Open 2,320,177,32,Lowres
  574.   Curs Off : Cls 0 : Flash Off : Get Palette 0
  575.   Screen Copy 0 To 2
  576.   Screen Display 2,,42,,
  577.   Screen Close 0 : View 
  578.  _SHOWSCORES
  579. End Proc
  580.  
  581. Procedure QUIT2
  582.   Screen 1 : Fade 5 : Wait 100 : Screen 2 : Fade 8 : Wait 120
  583.   For L=1 To 2
  584.     Screen Close L
  585.   Next L
  586.   Music Off : Erase 1 : Erase 5
  587.   For L=6 To 10
  588.     Erase L
  589.   Next L
  590.   Run "HangMan:Menu"
  591. End Proc