A beWITCHing game. You play the part of a witch on her motorised broomstick, trapped in a seven floor castle. You have to work your way up the castle to the top (level 7) where, on escaping you will be able to fly away.
Content
Source Code
10 REM "HALLOWEEN" (SPECTRUM) REVISED BY KENNETH FRACCHIA TO THE 2068 USING JOYSTICK (LEFT PORT) PROPERTY OF SUG LIBRARY 1/7/87.
11 REM SEPTEMBER 6, 1986
12 RESTORE
15 POKE 23658,8
20 PAPER 0: BORDER 0: INK 3: FLASH 0: BRIGHT 0: OVER 0: INVERSE 0: CLS : BRIGHT 1
30 PRINT AT 0,0; PAPER 1; INK 5;" HAPPY HALLOWEEN T/S USER CLUB "
110 FOR f=144 TO 154: FOR g=0 TO 7: READ a: POKE USR CHR$ f+g,a: NEXT g: NEXT f
120 DATA 255,129,129,255,255,129,129,255
130 DATA 30,30,13,140,206,255,200,140,120,120,176,49,119,255,23,49
140 DATA 60,94,191,191,191,191,94,60,136,34,136,32,0,26,138,32
150 DATA 24,24,126,126,24,24,24,24,60,126,219,255,255,195,255,85
160 DATA 126,126,96,120,120,96,126,126,102,102,60,24,24,60,102,102,126,126,24,24,24,24,126,126,126,126,24,24,24,24,24,24
170 DIM a$(480): PRINT AT 11,0; INK 6;"DO YOU WANT INSTRUCTIONS (Y/N) ?"
171 IF INKEY$="Y" THEN GO TO 171
173 IF INKEY$="Y" THEN GO SUB 8000: PRINT AT 6,0;a$,,: GO TO 170
176 IF INKEY$="N" THEN GO TO 190
180 GO TO 173
200 REM INITIALISE VARIABLES
205 LET hs=0: LET h$=""
210 LET s=1
220 RESTORE 220: DIM i(2): LET i(1)=6: LET i(2)=5: LET o$="\d\g"
230 DIM x(9): DIM y(9): FOR f=1 TO 9: READ y(f),x(f): NEXT f: DATA 1,2,1,29,2,1,2,30,17,1,17,30,18,2,18,29,11,15
232 PRINT AT 11,0; INK 6;"PRESS SKILL LEVEL 1 TO 9",''"(1-SNAIL PACE","9-IMPOSSIBLE)"
235 LET r$=INKEY$: IF r$<"1" OR r$>"9" THEN GO TO 235
238 LET sk1=VAL r$: LET sk=26-(sk1*3-2)
239 PRINT AT 11,0,,,,,,
240 LET e=6.99: LET l=3: LET sc=0: LET c=0: DIM c(4)
298 LET d=1: LET w$="\c"
299 GO SUB 9000
300 REM PRINT OBJECTS
302 PRINT AT 11,15; INK 4;w$
303 LET l$="\h\i\j\k": FOR f=1 TO 4: IF c(f)=1 THEN PRINT AT 20,f+24; INK 4;l$(f)
304 NEXT f
305 IF c(1)=0 THEN PRINT AT 1,1; INK 4;"\h"
306 IF c(2)=0 THEN PRINT AT 1,30; INK 4;"\i"
307 IF c(3)=0 THEN PRINT AT 18,1; INK 4;"\j"
308 IF c(4)=0 THEN PRINT AT 18,30; INK 4;"\k"
315 FOR f=1 TO 10: FOR g=1 TO 2
320 LET x=INT (RND*30)+1: LET y=INT (RND*18)+1: IF ATTR (y,x)<>3 THEN GO TO 320
325 FOR h=1 TO 9: IF x=x(h) AND y=y(h) THEN GO TO 320
326 NEXT h
330 PRINT AT y,x; INK i(g);o$(g): NEXT g: NEXT f
340 FOR f=1 TO 4
350 LET x=INT (RND*30)+1: LET y=INT (RND*18)+1: IF ATTR (y,x)<>3 THEN GO TO 350
355 FOR h=1 TO 8: IF x=x(h) AND y=y(h) THEN GO TO 350
356 NEXT h
360 PRINT AT y,x; INK 2;"\f": NEXT f
390 GO SUB 400: GO TO 420
400 REM STATUS DISPLAY
410 PRINT AT 20,0; INK 7;"SCORE: ";sc,"LETTERS:"'"LIVES:": FOR f=1 TO L: PRINT AT 21,f*2+5; INK 4;"\b": NEXT f: PRINT AT 21,16; INK 7;"ENERGY: "; INK INT e;" "
415 RETURN
420 LET x=15: LET y=11
490 PRINT AT y,x; BRIGHT 0;" "
500 REM WITCH MOVEMENT
505 IF ATTR (y,x)<>3 THEN GO TO 1000
510 PRINT AT y,x; INK 4;w$: LET e=e-.04: IF e<=0 THEN LET r=4: GO TO 1500
515 PRINT AT 21,25; INK INT e;" "
517 FOR f=1 TO sk: NEXT f
518 LET T=|(1,1)
520 PRINT AT Y,X; INVERSE 1; PAPER 3; INK 0;"\e": IF T=4 THEN GO TO 600
530 IF T=2 THEN GO TO 700
540 IF T=1 THEN GO TO 800
550 IF T=8 THEN GO TO 900
560 GO TO d*100+500
600 LET w$="\c": LET x=x-1: LET d=1: GO TO 505
700 LET y=y+1: LET d=2: GO TO 505
800 LET y=y-1: LET d=3: GO TO 505
900 LET w$="\b": LET x=x+1: LET d=4: GO TO 505
1000 REM INTO OBJECT
1005 IF ATTR (y,x)=88 THEN LET r=1: GO TO 1500
1010 IF ATTR (y,x)=69 THEN LET r=2: GO TO 1500
1020 IF ATTR (y,x)=66 THEN BRIGHT 0: CLS : BRIGHT 1: PRINT AT 6,1; INK 6;"YOU COLLIDED WITH A GRAVESTONE";AT 12,4;"YOU LOSE ALL YOUR LIVES": PAUSE 100: GO TO 1520
1030 IF ATTR (y,x)=67 THEN LET r=3: GO TO 1500
1040 IF ATTR (y,x)=70 THEN LET e=e+.5: BEEP .5,20: PRINT AT y,x; BRIGHT 0;" ": IF e>9.99 THEN LET e=9.99
1060 IF y=1 AND x=1 THEN LET c(1)=1: PRINT AT 20,25; INK 4;"\h": GO SUB 1200
1070 IF y=1 AND x=30 THEN LET c(2)=1: PRINT AT 20,26; INK 4;"\i": GO SUB 1200
1080 IF y=18 AND x=1 THEN LET c(3)=1: PRINT AT 20,27; INK 4;"\j": GO SUB 1200
1090 IF y=18 AND x=30 THEN LET c(4)=1: PRINT AT 20,28; INK 4;"\k": GO SUB 1200
1100 IF c=4 THEN GO TO 2000
1110 GO TO 506
1200 REM LETTER COLLECTED
1210 LET c=c+1: LET sc=sc+10*s*sk1: PRINT AT 20,7;sc: PRINT AT y,x; INK 4;w$: FOR f=20 TO 30: BEEP .1,f: NEXT f: RETURN
1500 REM DEATH ROUTINE
1510 LET l=l-1: FOR f=10 TO 0 STEP -1:: BEEP .1,f: NEXT f: CLS
1511 IF r=1 THEN PRINT AT 7,0; INK 6;"YOU COLLIDED WITH YOUR OWN TRAIL."
1512 IF r=2 THEN PRINT AT 7,3; INK 6;"YOU COLLIDED WITH A GHOST"
1513 IF r=3 THEN PRINT AT 7,3; INK 6;"YOU COLLIDED WITH THE WALL"
1514 IF r=4 THEN PRINT AT 7,5; INK 6;"YOU RAN OUT OF ENERGY"
1515 PRINT AT 14,0; INK 6;"YOU LOSE A LIVE-";l;" LIVES LEFT"
1516 IF l=1 THEN PRINT AT 14,20; INK 6;"LIFE LEFT"
1517 LET e=7.99-s
1518 PAUSE 100: PRINT AT 11,0,,: IF l>0 THEN GO TO 290
1520 CLS : PRINT AT 0,11; INK 6;"GAME OVER";AT 4,0;"YOU WERE ON SKILL LEVEL ";sk1;AT 8,0;"YOU REACHED STAGE ";s;AT 12,0;"YOU HAD A SCORE OF ";sc
1530 IF sc>hs THEN PRINT AT 16,0; INK 6;"YOU HAVE BEATEN THE HIGH SCORE. PLEASE TYPE IN YOUR NAME.": INPUT LINE h$: LET hs=sc
1540 PRINT AT 16,0; INK 6;"THE HIGH SCORE REMAINS ";hs,"BY ";h$: GO TO 1600
1600 REM ANOTHER GAME
1610 POKE 23658,8: PAUSE 200: CLS : PRINT AT 11,0; INK 6;"PRESS ANY KEY FOR ANOTHER GAME": PAUSE 0: GO TO 210
2000 REM STAGE COMPLETED
2010 CLS : PRINT AT 11,7; INK 6;"STAGE ";s;" COMPLETED": LET s=s+1: PAUSE 100: LET c=0: DIM c(4): IF s<8 THEN GO TO 290
2020 CLS : PRINT AT 0,11; INK 6;"CONGRATULATIONS - GAME COMPLETED";AT 4,0;"YOU DID THIS ON SKILLLEVEL ";sk1;AT 8,0;"YOU HAD ";l;"LIVES LEFT";AT 12,0;"YOU HAD A SCORE OF ";sc
2030 GO TO 1530
8000 REM INSTRUCTIONS
8010 PAUSE 1: PRINT AT 6,0; INK 6;"YOU PLAY THE PART OF A WITCH ON HER MOTORISED BROOMSTICK, TRAPPED IN A SEVEN FLOOR CASTLE."''"YOU HAVE TO WORK YOUR WAY UP THE CASTLE TO THE TOP (LEVEL 7) WHERE, ON ESCAPING YOU WILL BE ABLE TO FLY AWAY."''"TO ESCAPE FROM EACH LEVEL YOU MUST COLLECT THE LETTER IN EACH"
8020 PRINT INK 6;"CORNER OF THE ROOMS TO SPELL THE WORD-EXIT. YOU WILL THEN AUTOMAT-ICALLY BE TRANSPORTED TO THE NEXT LEVEL."
8030 PRINT AT 21,9; INK 5;"PRESS ANY KEY": PAUSE 0: PRINT AT 6,0;a$:
8040 PRINT AT 6,0; INK 6;"HOWEVER,GHOSTS INHABIT EACH LEVEL AND SHOULD YOU COLLIDE WITH ONE OF THEM YOU LOSE A LIFE. LIVES ARE ALSO LOST BY FLYING INTO WALLS OR BACK ON YOUR OWN TRAIL OF POISENOUS FUMES GIVEN OFF BY YOUR BROOM- STICK."
8050 PRINT ' INK 6;"THERE ARE ALSO GRAVESTONES ON EACH LEVEL. THESE, ON COLLISION,WILL CAUSE LOSS OF ALL YOUR REMAINING LIVES.": PAUSE 0: PRINT AT 6,0;a$;AT 6,0; INK 6;"YOUR ENERGY SUPPLY MUST ALSO BE WATCHED. THE LOWER THE VALUE"
8060 PRINT INK 6;"THAT THE COLOR HAS ON THE COMPUTER, THE LOWER YOUR ENERGY. THAT IS, BLACK IS MINIMUM AND WHITE MAXIMUM ENERGY. YOUR ENERGY INCREASES SLIGHTLY WHEN YOU EAT ONE OF THE PUMPKINS."
8065 PRINT ' INK 6;"WHEN YOU LOSE A LIFE, THE AMOUNT OF ENERGY YOU HAVE LEFT IS AUTO-MATICALLY ADJUSTED UP OR DOWN TO THE AMOUNT REQUIRED TO COMPLETE THE GAME."
8070 PAUSE 0: PRINT AT 6,0;a$
8080 PRINT AT 6,0; INK 4;" \b "; INK 6;"THE WITCH (YOU)."'' INK 4;"\h \i \j \k"; INK 6;"THE LETTERS TO COLLECT."'' INK 3;" \a\a\a "; INK 6;"THE CASTLE WALLS."'' INK 3;"\e\e\e\e"; INK 6;"YOUR OWN TRAIL."
8090 PRINT ' INK 2;" \f "; INK 6;"THE GRAVESTONES."'' INK 5;" \g "; INK 6;"THE GHOSTS."''" \d THE PUMPKINS."
8100 PAUSE 0: PRINT AT 6,0;a$;AT 6,0; INK 6;"YOU SCORE FOR EACH LETTER COLLECTED. THE AMOUNT PER LETTER IS 10x THE STAGE NUMBER x THE SKILL LEVEL."
8110 PRINT INK 6;''"USE THE LEFT JOYSTICK TO MOVE UP, DOWN, LEFT, OR RIGHT."
8120 PAUSE 0: RETURN
9000 REM PRINT CASTLE
9005 BRIGHT 0: CLS : BRIGHT 1
9007 PRINT AT 9,12; INK 6;"STAGE ";s: GO SUB 400: PAUSE 100: PRINT AT 9,0; BRIGHT 0,,
9010 FOR f=0 TO 19 STEP 19: PRINT AT f,0;"\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a": NEXT f: FOR f=0 TO 19: PRINT AT f,0;"\a";AT f,31;"\a": NEXT f: IF s=1 THEN RETURN
9020 FOR g=1 TO 13 STEP 12: FOR f=g TO g+5: PRINT AT f,15;"\a\a": NEXT f: NEXT g: IF s=2 THEN RETURN
9030 FOR h=7 TO 23 STEP 16: FOR f=7 TO 12: PRINT AT f,h;"\a\a": NEXT f: FOR g=1 TO 17 STEP 16: FOR f=0 TO 1: PRINT AT g+f,h;"\a\a": NEXT f: NEXT g: NEXT h: IF s=3 THEN RETURN
9040 FOR g=9 TO 10: FOR f=1 TO 25 STEP 24: PRINT AT g,f;"\a\a"; BRIGHT 0;"\a\a"; BRIGHT 1;"\a\a": NEXT f: NEXT g: IF s=4 THEN RETURN
9050 FOR g=3 TO 15 STEP 12: FOR f=0 TO 1: PRINT AT g+f,11;"\a\a\a\a\a\a\a\a\a\a": NEXT f: NEXT g : FOR h=5 TO 11 STEP 6:: FOR g=11 TO 19 STEP 8: FOR f=0 TO 3: PRINT AT f+h,g;"\a\a": NEXT f: NEXT g: NEXT h: IF s=5 THEN RETURN
9060 FOR h=3 TO 13 STEP 10: FOR g=3 TO 27 STEP 24: FOR f=0 TO 3: PRINT AT h+f,g;"\a\a": NEXT f: NEXT g: NEXT h: IF s=6 THEN RETURN
9070 FOR h=3 TO 13 STEP 10: FOR g=0 TO 3 STEP 3: FOR f=7 TO 23 STEP 16: PRINT AT h+g,f;"\a\a": NEXT f: NEXT g: NEXT h: FOR f=9 TO 10: PRINT AT f,15;"\a\a": NEXT f: RETURN
9999 SAVE "HALLOWEEN" LINE 10