-+-+-+-+-+-+-+-+ START OF PART 3 -+-+-+-+-+-+-+-+ X`09`09If map`5BFireX,FireY+1`5D in `5B'0'..'9'`5D then X`09`09 killspook(map`5BFireX,FireY+1`5D) X`09`09Else X`09 If map`5BFireX,FireY+1`5D = 'a' then X`09 qio_write (VT100_esc+'`5B1m'); X`09`09qio_write (VT100_esc+'(0'+map`5BFireX,FireY+1`5D+VT100_esc+'`5Bm'); X`09`09If FireY > MeY then X`09`09 BEGIN X`09`09 If (FireY+1) = 40 then X`09`09 qio_write (VT100_esc+'`5BD ') X`09`09 Else X`09`09 qio_write (VT100_esc+'`5B2D '); X`09`09 For count := MeY to (FireY-2) do X qio_write (VT100_esc+'`5B2D '); X`09`09 END; X`09 END X`09 Else X`09 If move = 56 then X`09`09BEGIN X`09`09 WHILE (FireX <> (MeX-8))and(map`5BFireX-1,FireY`5D = ' ') do X`09`09 BEGIN X`09`09 qio_write (VT100_esc+'`5BD'+VT100_esc+'(B'+VT100_esc+'`5BA`5E'); X`09`09 FireX := FireX-1; X`09`09 END; X`09`09 If map`5BFireX-1,FireY`5D in `5B'0'..'9'`5D then X`09`09 killspook(map`5BFireX-1,FireY`5D) X`09`09 Else X`09 If map`5BFireX-1,FireY`5D = 'a' then X`09 qio_write (VT100_esc+'`5B1m'); X `09`09 qio_write (VT100_esc+'(0'+VT100_esc+'`5BA'+VT100_esc+'`5BD'+map`5B VFireX-1,FireY`5D+VT100_esc+'`5Bm'); X`09`09 If FireX < MeX then X`09`09 BEGIN X`09`09 For count := FireX to (MeX-1) do X`09`09 qio_write (VT100_esc+'`5BD'+VT100_esc+'`5BB '); X`09`09 END; X`09`09END; X`09pos(MeX,MeY); XEND; X X`7B************************************************************************* V****`7D X XPROCEDURE MoveMe; XBEGIN X`09pos(MeX,MeY); X`09move := ord(qio_1_char_now); X`09If not (move in `5B23,27,50,52,53,54,56`5D) then X`09 move := lastmove; X`09If move = 53 then X`09 Begin X`09 move := lastmove; X`09 If fire_count > 0 then X`09 Begin X`09 fire; X`09`09fire_count := -1; X`09 End; X`09 End; X`09fire_count := fire_count + 1; X`09CASE move of X`09 50 : `09BEGIN X`09`09 map`5Bx,y`5D := ' '; X`09`09 MoveDown('`60',' '); X`09`09 MeX := x; X`09`09END; X`09 52 : `09BEGIN X`09`09 map`5Bx,y`5D := ' '; X`09`09 MoveLeft('`60',' '); X`09`09 MeY := y; X`09`09END; X`09 54 : `09BEGIN X`09`09 map`5Bx,y`5D := ' '; X`09`09 MoveRight('`60',' '); X`09`09 MeY := y; X`09`09END; X`09 56 : `09BEGIN X`09`09 map`5Bx,y`5D := ' '; X`09`09 MoveUp('`60',' '); X`09`09 MeX := x; X`09`09END; X`09 23 : BEGIN X`09`09 RedrawScreen; X`09`09 move := lastmove; X`09`09 If lastmove = 23 then X`09`09 move := 50; X`09 END; X`09 27 : GameOver := true; X`09 Otherwise `7Bdummy`7D X`09END; X`09lastmove := move; X`09If map`5Bx,y`5D in `5B'T','U'`5D then X`09 BEGIN X`09 If map`5Bx,y`5D = 'T' then X`09 HavePick := true; X`09 score := score+15; X`09 UpdateScore; X`09 END; X`09If map`5Bx,y`5D in `5B'0'..'9'`5D then X`09 BEGIN X`09 dead := true; X`09 qio_write (VT100_esc+'`5B'+dec(x)+';'+dec(y)+'H*'); X`09 END X`09Else X`09 map`5Bx,y`5D := '`60'; XEND; X X`7B************************************************************************* V****`7D X XPROCEDURE UpdateMe; XVAR X`09Sx, X`09Sy`09: integer; X X`7B------------------------------------------------------------------------- V----`7D X X`09PROCEDURE TestRockAbove; X`09BEGIN X`09 If map`5B(x-1),y`5D = 'a' then X`09 BEGIN X`09 Sx := x-1; X`09 Sy := y; X`09 MoveSpooks; X`09 If not (lastmove in `5B52,54`5D) then X`09 lastmove := (52+(rnd(0,1)*2)); X`09 MoveMe; X`09 DropRock(Sx,Sy); X`09 pos(MeX,MeY); X`09 END; X`09END; X X`7B------------------------------------------------------------------------- V----`7D X XBEGIN X`09MoveMe; X`09TestRockAbove; X`09If not dead then X`09 TestRockAbove; XEND; X X`7B************************************************************************* V****`7D X XPROCEDURE TestDead; XBEGIN X`09If dead then X`09 BEGIN X`09 lives := lives-1; X`09 If lives = 0 then X`09 GameOver := true X`09 Else X`09 dead := false; X`09 qio_write (beep+VT100_esc+'`5B24;'+dec(28+(lives*2))+'H`7E' X`09`09`09+VT100_esc+'`5B'+dec(MeX)+';'+dec(MeY)+'H '+beep); X`09 If map`5BMeX,MeY`5D in `5B'0'..'9'`5D then X`09 qio_write (VT100_esc+'`5B'+dec(MeX)+';'+dec(MeY)+'H*') X`09 Else X`09 BEGIN X`09 qio_write (VT100_esc+'`5B'+dec(MeX)+';'+dec(MeY)+'H '); X`09 map`5BMeX,MeY`5D := ' '; X`09 END; X`09 If not dead then X`09 GenerateMe; X`09 If HavePick then X`09 GeneratePick; X`09 HavePick := false; X`09 qio_purge; X`09 lastmove := ord(qio_1_char); X`09 END; XEND; X X`7B************************************************************************* V****`7D X XBEGIN X`09screen := 0; X`09lives := 5; X`09fire_count := 0; X`09AskBeep; X`09AskHelp; X`09SaveSpookNo := '2'; X`09delay := 17; X`09qio_write (VT100_esc+'`5B2J'); X`09REPEAT X`09 screen := screen+1; X`09 If ((screen mod 5) = 0) then X`09 If lives < 5 then X`09 lives := lives+1; X`09 dead := false; X`09 LastSpook := false; X`09 GameOver := false; X`09 SpookGone := false; X`09 HavePick := false; X`09 delay := delay-2; X`09 If delay < 3 then X`09 delay := 15; X`09 SaveSpookNo := succ(SaveSpookNo); X`09 If SaveSpookNo > MaxSpook then X`09 SaveSpookNo := '3'; X`09 SpookNo := SaveSpookNo; X`09 LoadDetails; X`09 RedrawScreen; X`09 qio_write (VT100_esc+'(0'+VT100_esc+'`5B24;27H'); X`09 For i := 1 to lives do X`09 qio_write (' `60'); X`09 GenerateDetails; X`09 qio_purge; X`09 Repeat X`09 lastmove := ord(qio_1_char); X`09 Until (lastmove in `5B50,52,54,56`5D); X`09 REPEAT X`09 REPEAT X`09 sleep_start (delay); X`09 UpdateMe; X`09 sleep_wait; X`09 sleep_start (delay); X`09 If (not SpookGone)and(not LastSpook) then X`09`09MoveSpooks; X`09 If (not dead)and(HavePick) then X`09`09UpdateMe; X`09 sleep_wait; X`09 UNTIL (dead)or(LastSpook)or(SpookGone)or(GameOver); X`09 TestDead; X`09 UNTIL (dead)or(LastSpook)or(SpookGone)or(GameOver); X`09 If (lastspook)and(not dead) then X`09 BEGIN X`09 REPEAT X`09 sleep_start (delay); X`09 If not SpookGone then X`09 SpookRun; X`09 TestDead; X`09 If (not dead)and(not SpookGone) then X`09 `09 UpdateMe; X`09 sleep_wait; X`09 UNTIL (dead)or(GameOver)or(SpookGone); X`09 END; X`09 If (not dead)and(not GameOver) then X`09 BEGIN X`09 sleep(2); X`09 qio_write (VT100_esc+'`5B7m'+VT100_esc+'`5B1m'+VT100_esc+'`5B12;6H' V+' PRESS A KEY AND TRY THIS LOT '+VT100_esc+'`5BD'+VT100_esc+'`5Bm'); X`09 qio_purge; X`09 qio_1_char; X`09 END; X`09UNTIL GameOver; X`09qio_write (beep+VT100_esc+'(B'); X`09top_ten(score); XEND. $ CALL UNPACK DIG.PAS;1 1884807418 $ create 'f' Xlqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk Xx x Xx.................. ...................x Xx.................. ...................x Xx.................. ...................x Xx.................. ...................x Xx.................. ...................x XxOOOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOOOOx XxOOOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOOOOx XxOOOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOOOOx XxOOOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOOOOx XxOOOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOOOOx XxOOOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOOOOx XxOOOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOOOOx XxOOOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOOOOx Xx@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@x Xx@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@x Xx@@@@@@@@ @@@@@@@@@x Xx@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@x Xx@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@x Xx@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@x Xx@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@x Xmqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj X SCORE : LIVES : `7E `7E `7E `7E `7E `20 $ CALL UNPACK DIGDET.DAT;1 1835432524 $ create 'f' X`1B`5BH`1B`5BJ`1B(B`1B`5B0m X`1B`5B1;1H`1B#6`1B(0lqqqqqqqqqwqqqqqqqqqqqqqqqqqqwqqqqqqqqqk`1B`5B2;1H`1B#3x V`60`1B(B*#`1B(0a`7EO`1B(B@TU`1B(0x D I G `1B(B* D U G II `1B(0xTU`60`1B(B*#` V1B(0a X`1B`5B2;37H`7EO`1B(B@`1B(0x`1B`5B3;1H`1B#4x`60`1B(B*#`1B(0a`7EO`1B(B@TU`1B(0 Vx D I G `1B(B* D U G II `1B(0xTU`60`1B(B*#`1B(0a O`1B(B@`1B(0x X`1B`5B4;1H`1B#6tqqqqqqqqqvqqqqqqqqqqqqqqqqqqvqqqqqqqqqu`1B`5B5;1H`1B#6x`1B`5 VB5;40Hx`1B`5B6;1H`1B#6x`1B`5B6;40Hx`1B`5B7;1H`1B#6x`1B`5B7;40Hx`1B`5B8;1H`1B V#6x`1B`5B8;40Hx X`1B`5B9;1H`1B#6x`1B`5B9;40Hx`1B`5B10;1H`1B#6x`1B`5B10;40Hx`1B`5B11;1H`1B#6x` V1B`5B11;40Hx`1B`5B12;1H`1B#6x`1B`5B12;40Hx`1B`5B13;1H`1B#6x`1B`5B13;40Hx`1B` V5B14;1H`1B#6x`1B`5B14;40Hx`1B`5B15;1H`1B#6x`1B`5B15;40Hx`1B`5B16;1H`1B#6x`1B V`5B16;40Hx X`1B`5B17;1H`1B#6x`1B`5B17;40Hx`1B`5B18;1H`1B#6x`1B`5B18;40Hx`1B`5B19;1H`1B#6 Vx`1B`5B19;40Hx`1B`5B20;1H`1B#6x`1B`5B20;40Hx`1B`5B21;1H`1B#6x `1B`5B21;40Hx V`1B`5B22;1H`1B#6x`1B`5B22;40Hx`1B`5B23;1H`1B#6mqqqqqqqqqqqqqqqqqqqqqqqqqqqqq Vqqqqqqqq`1B`5B1;1H X`1B`5B23;39Hqj`1B`5B1;1H X`1B(B`1B* X`1B`5B6;2H......................................`1B`5B7;2H.................. V.................... X`1B`5B8;2H......................................`1B`5B9;2H.................. V.................... X`1B`5B10;2H......................................`1B`5B11;2H................ V...................... X`1B`5B12;2HOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO`1B`5B13;2HOOOOOOOOOOOOOOOO VOOOOOOOOOOOOOOOOOOOOOO X`1B`5B14;2HOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO`1B`5B15;2HOOOOOOOOOOOOOOOO VOOOOOOOOOOOOOOOOOOOOOO X`1B`5B16;2HOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO`1B`5B17;2H@@@@@@@@@@@@@@@@ V@@@@@@@@@@@@@@@@@@@@@@ X`1B`5B18;2H@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`1B`5B19;2H@@@@@@@@@@@@@@@@ V@@@@@@@@@@@@@@@@@@@@@@ X`1B`5B20;2H@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`1B`5B21;2H@@@@@@@(PRESS A V KEY TO CONTINUE)@@@@@@ X`1B`5B22;2H@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`1B* X`1B`5B1;1H X`1B`5B5;2H`1B(0`60`1B(B`1B* X`1B`5B5;2H `1B`5B6;2H`1B(0`60`1B(B`1B* X`1B`5B6;2H `1B`5B7;2H`1B(0`60`1B(B`1B* X`1B`5B7;2H `1B`5B8;2H`1B(0`60`1B(B`1B* X`1B`5B8;2H `1B`5B9;2H`1B(0`60`1B(B`1B* X`1B`5B9;2H `1B(0`60`1B(B`1B* X`1B`5B9;3H `1B(0`60`1B(B`1B* X`1B`5B9;4H `1B(0`60`1B(B`1B* X`1B`5B9;5H `1B(0`60`1B(B`1B* X`1B`5B9;6H `1B`5B10;6H`1B(0`60`1B(B`1B* X`1B`5B10;6H `1B`5B11;6H`1B(0`60`1B(B`1B* X`1B`5B11;6H `1B`5B12;6H`1B(0`60`1B(B`1B* X`1B`5B12;6H `1B`5B13;6H`1B(0`60`1B(B`1B* X`1B`5B13;6H `1B`5B14;6H`1B(0`60`1B(B`1B* X`1B`5B14;6H `1B`5B15;6H`1B(0`60`1B(B`1B* X`1B`5B15;6H `1B`5B16;6H`1B(0`60`1B(B`1B* X`1B`5B16;6H `1B`5B17;6H`1B(0`60`1B(B`1B* X`1B`5B17;5H`1B(0`60 `1B(B`1B* X`1B`5B17;4H`1B(0`60 `1B(B`1B* X`1B`5B17;3H`1B(0`60 `1B(B`1B* X`1B`5B17;2H`1B(0`60 `1B(B`1B* X`1B`5B17;2H `1B(0`60`1B(B`1B* X`1B`5B16;3H`1B(0`60`1B`5B17;3H `1B(B`1B* X`1B`5B15;3H`1B(0`60`1B`5B16;3H `1B(B`1B* X`1B`5B14;3H`1B(0`60`1B`5B15;3H `1B(B`1B* X`1B`5B13;3H`1B(0`60`1B`5B14;3H `1B(B`1B* X`1B`5B12;3H`1B(0`60`1B`5B13;3H `1B(B`1B* X`1B`5B11;3H`1B(0`60`1B`5B12;3H `1B(B`1B* X`1B`5B10;3H`1B(0`60`1B`5B11;3H `1B(B`1B* X`1B`5B9;3H`1B(0`60`1B`5B10;3H `1B(B`1B* X`1B`5B9;3H `1B(0`60`1B(B`1B* X`1B`5B9;4H `1B(0`60`1B(B`1B* X`1B`5B9;5H `1B(0`60`1B(B`1B* X`1B`5B9;6H `1B(0`60`1B(B`1B* X`1B`5B9;7H `1B(0`60`1B(B`1B* X`1B`5B9;8H `1B(0`60`1B(B`1B* X`1B`5B9;9H `1B(0`60`1B(B`1B* X`1B`5B9;10H `1B`5B10;10H`1B(0`60`1B(B`1B* X`1B`5B10;10H `1B`5B11;10H`1B(0`60`1B(B`1B* X`1B`5B11;10H `1B`5B12;10H`1B(0`60`1B(B`1B* X`1B`5B12;10H `1B`5B13;10H`1B(0`60`1B(B`1B* X`1B`5B13;10H `1B`5B14;10H`1B(0`60`1B(B`1B* X`1B`5B14;10H `1B`5B15;10H`1B(0`60`1B(B`1B* X`1B`5B15;10H `1B`5B16;10H`1B(0`60`1B(B`1B* X`1B`5B16;10H `1B`5B17;10H`1B(0`60`1B(B`1B* X`1B`5B17;9H`1B(0`60 `1B(B`1B* X`1B`5B17;8H`1B(0`60 `1B(B`1B* X`1B`5B17;8H `1B(0`60`1B(B`1B* X`1B`5B17;9H `1B(0`60`1B(B`1B* X`1B`5B17;10H `1B(0`60`1B(B`1B* X`1B`5B17;11H `1B(0`60`1B(B`1B* X`1B`5B17;11H`1B(0`60 `1B(B`1B* X`1B`5B17;10H`1B(0`60 `1B(B`1B* X`1B`5B16;10H`1B(0`60`1B`5B17;10H `1B(B`1B* X`1B`5B15;10H`1B(0`60`1B`5B16;10H `1B(B`1B* X`1B`5B14;10H`1B(0`60`1B`5B15;10H `1B(B`1B* X`1B`5B13;10H`1B(0`60`1B`5B14;10H `1B(B`1B* X`1B`5B12;10H`1B(0`60`1B`5B13;10H `1B(B`1B* X`1B`5B11;10H`1B(0`60`1B`5B12;10H `1B(B`1B* X`1B`5B10;10H`1B(0`60`1B`5B11;10H `1B(B`1B* X`1B`5B9;10H`1B(0`60`1B`5B10;10H `1B(B`1B* X`1B`5B9;10H `1B(0`60`1B(B`1B* X`1B`5B9;11H `1B(0`60`1B(B`1B* X`1B* X`1B`5B9;12H `1B(0`60`1B(B`1B* X`1B`5B9;13H `1B(0`60`1B(B`1B* X`1B`5B9;14H `1B(0`60`1B(B`1B* X`1B`5B9;15H `1B(0`60`1B(B`1B* X`1B`5B9;16H `1B(0`60`1B(B`1B* X`1B`5B9;17H `1B(0`60`1B(B`1B* X`1B* X`1B`5B9;17H`1B(0`60 `1B(B`1B* X`1B`5B9;16H`1B(0`60 `1B(B`1B* X`1B`5B9;15H`1B(0`60 `1B(B`1B* X`1B`5B9;14H`1B(0`60 `1B(B`1B* X`1B`5B9;14H `1B`5B10;14H`1B(0`60`1B(B`1B* X`1B`5B10;14H `1B`5B11;14H`1B(0`60`1B(B`1B* X`1B`5B11;14H `1B`5B12;14H`1B(0`60`1B(B`1B* X`1B`5B12;14H `1B`5B13;14H`1B(0`60`1B(B`1B* X`1B`5B13;14H `1B`5B14;14H`1B(0`60`1B(B`1B* X`1B`5B14;14H `1B`5B15;14H`1B(0`60`1B(B`1B* X`1B`5B15;14H `1B`5B16;14H`1B(0`60`1B(B`1B* X`1B`5B16;14H `1B`5B17;14H`1B(0`60`1B(B`1B* X`1B`5B17;14H `1B(0`60`1B(B`1B* X`1B`5B17;15H `1B(0`60`1B(B`1B* X`1B`5B17;16H `1B(0`60`1B(B`1B* X`1B`5B17;17H `1B(0`60`1B(B`1B* X`1B`5B16;18H`1B(0`60`1B`5B17;18H `1B(B`1B* X`1B`5B15;18H`1B(0`60`1B`5B16;18H `1B(B`1B* X`1B`5B14;18H`1B(0`60`1B`5B15;18H `1B(B`1B* X`1B`5B14;17H`1B(0`60 `1B(B`1B* X`1B`5B13;17H`1B(0`60`1B`5B14;17H `1B(B`1B* X`1B`5B13;17H `1B(0`60`1B(B`1B* X`1B`5B13;18H `1B(0`60`1B(B`1B* X`1B`5B13;19H `1B(0`60`1B(B`1B* X`1B`5B13;20H `1B(0`60`1B(B`1B* X`1B`5B13;21H `1B(0`60`1B(B`1B* X`1B`5B13;22H `1B(0`60`1B(B`1B* X`1B`5B13;23H `1B(0`60`1B(B`1B* X`1B`5B13;24H `1B`5B14;24H`1B(0`60`1B(B`1B* X`1B`5B14;24H `1B`5B15;24H`1B(0`60`1B(B`1B* X`1B`5B15;24H `1B`5B16;24H`1B(0`60`1B(B`1B* X`1B`5B16;24H `1B`5B17;24H`1B(0`60`1B(B`1B* X`1B`5B17;23H`1B(0`60 `1B(B`1B* X`1B`5B17;23H `1B(0`60`1B(B`1B* X`1B`5B17;24H `1B(0`60`1B(B`1B* X`1B`5B17;25H `1B(0`60`1B(B`1B* X`1B`5B17;26H `1B(0`60`1B(B`1B* X`1B`5B16;27H`1B(0`60`1B`5B17;27H `1B(B`1B* X`1B`5B15;27H`1B(0`60`1B`5B16;27H `1B(B`1B* X`1B`5B14;27H`1B(0`60`1B`5B15;27H `1B(B`1B* X`1B`5B13;27H`1B(0`60`1B`5B14;27H `1B(B`1B* X`1B`5B12;27H`1B(0`60`1B`5B13;27H `1B(B`1B* X`1B`5B11;27H`1B(0`60`1B`5B12;27H `1B(B`1B* X`1B`5B10;27H`1B(0`60`1B`5B11;27H `1B(B`1B* X`1B`5B9;27H`1B(0`60`1B`5B10;27H `1B(B`1B* X`1B`5B9;26H`1B(0`60 `1B(B`1B* X`1B`5B9;25H`1B(0`60 `1B(B`1B* X`1B`5B9;24H`1B(0`60 `1B(B`1B* X`1B`5B9;23H`1B(0`60 `1B(B`1B* X`1B`5B9;23H `1B(0`60`1B(B`1B* X`1B`5B9;24H `1B`5B10;24H`1B(0`60`1B(B`1B* X`1B`5B10;24H `1B`5B11;24H`1B(0`60`1B(B`1B* X`1B`5B11;24H `1B`5B12;24H`1B(0`60`1B(B`1B* X`1B`5B11;24H`1B(0`60`1B`5B12;24H `1B(B`1B* X`1B`5B10;24H`1B(0`60`1B`5B11;24H `1B(B`1B* +-+-+-+-+-+-+-+- END OF PART 3 +-+-+-+-+-+-+-+-