Sunday, November 11, 2012

G1 Dungeon Crawl

Gallery One Dungeon Crawl:

Gallery One Dungeon Crawl is a top-view, tile-based, graphic adventure
in the tradition of type-in games that used to appear in the back of
computer and science magazines.  It was written in Applesoft basic for
the Apple II line of computers. 

Objective:
Walk around and discover the mysteries of A Popular Game Exhibition.
Certain spots in the gallery will trigger text messages at the bottom
of the screen. For instance you can bump into some people to make them talk.  If you get bored you can shoot out lines of various colours.

CONTROLS:

W  UP
A  LEFT
S  DOWN
D  RIGHT

I SHOOT UP
J SHOOT LEFT
K SHOOT DOWN
L SHOOT RIGHT

O CHANGE EYE/SHOOTING COLOUR

To play the game just paste the following text into the mind-blowing online Applesoft compiler at
http://www.calormen.com/applesoft/     and click run.

1 GR
2 d$=chr$(4)
3 DIM RO(99)
4 WR = 0
5 DIM RT(99)
6 DIM RR(99)
7 DIM RF(99)
8 DIM RZ(99)
9 DIM RM(99)
10 SO=-128
11 EC=9
15 GOSUB 10000
20 GOSUB 11000
30 PRINT "WELCOME TO GALLERY ONE DUNGEON CRAWL":PRINT "******sTAY AWHILE *****": PRINT "**********sTAY FOREVER**********"
40 WR = 0
45 GOSUB 17000
46 GT=43
48 GI= 2
50 GOSUB 1000
60 GOTO 1060
70 END

999 REM MOVE THE GUY
1000 IF WR = 0 THEN GOSUB 3000
1010 IF WR = 1 THEN GOSUB 3010
1012 IF WR = 2 THEN GOSUB 3020
1014 IF WR = 3 THEN GOSUB 3030
1016 IF WR = 4 THEN GOSUB 3040
1017 GR
1018 PI = GI:SP=GT:GOSUB2000
1020 FOR R = 0 TO 99
1025 IF RM(R)=4 THEN NEXT R
1030 SP=R:PI=RM(R): GOSUB 2000
1040 NEXT R
1045 PI=GI
   1055 SP=GT: GOSUB 2000
1057 RETURN
1060 GOSUB 13000
1065 IF I > 99 THEN PI=4:GOSUB 2000
1070 SO=SP
1080 IF (I>99) AND (I<104) THEN PI = I-100
1090 IF I = 100 THEN M = 1 : GOSUB 14000
1100 IF I = 101 THEN M = -1 : GOSUB 14000
1110 IF I = 102 THEN M = 10 : GOSUB 14000
1102 IF I = 103 THEN M = -10 : GOSUB 14000
1104 IF I=74 THEN GOSUB 43100
1106 IF I=70 THEN GOSUB 43200
1108 IF I=76 THEN GOSUB 43300
1109 IF I=72 THEN GOSUB 43400
1122 REM IF I = 50 THEN PRINT WR,SP
1123 REM IF I = 55 THEN END
1124 GOSUB 22000
1125 IF (RM(SP)<>4) THEN SP = SO
1130 GOSUB 2000
1500 GOTO 1060


1900 END

1999 REM DRAW PI AT SP
2000 FOR PX = 0 TO 11
2001 REM PRINT "TWO" R
2010 XS=XA(SP)+XB(PX)
2020 YS = YA(SP) + YB(PX)
   2025 IF PI > 19 THEN PI=5
2030 COLOR = GY(PI,PX)
2040 PLOT XS,YS
2050 NEXT PX
2900 RETURN

3000 FOR R=0 TO 99
3002 RM(R)=RZ(R)
3004 NEXT R
3006 RETURN
3010 FOR R = 0 TO 99
3012 RM(R)=RO(R)
   3014 NEXT R
3016 RETURN
3020 FOR R = 0 TO 99
3022 RM(R)=RT(R)
3024 NEXT R
3026 RETURN
3030 FOR R = 0 TO 99
3032 RM(R)=RR(R)
3034 NEXT R
3036 RETURN
3040 FOR R= 0 TO 99
3042 RM(R)=RF(R)
   3044 NEXT R
3046 RETURN

4000 REM CHANGE EYE COLOR
4010 EC=EC+1
4020 IF EC=20 THEN EC=0
4030 RETURN

9999 REM BUILD GRID AND DRAW PATTERN
10000 DIM XA(99): DIM YA(99)

10010 R=0
10020 FOR YR = 0 TO 9
 10030 FOR XR = 0 TO 9
10040 XA(R) = XR*3
10050 YA(R)=YR*4
10060 R=R+1
  10070 NEXT XR
10080 NEXT YR
10499 REM DRAW PATTERN ARRAY
10500 DIM XB(11)
10510 DIM YB(11)
10520 FOR R=0TO11
10530 XB(R)=R-(INT(R/3)*3)
 10540 YB(R)=INT(R/3)
10550 NEXT R
10900 RETURN

10999 REM LOAD GRAPHICS ARRAYS FROM DATA STATEMENT
  11000 DIM GY(19,11)

11001 REM character head right 0
11002 DATA 5,5,5,5,15,0,15,15,15,15,15,0
 11003 REM character head left 1
11004 DATA 5,5,5,0,15,5,15,15,15,0,15,15
11005 rem character walking away 2
11006 DATA 5,5,5,9,15,9,15,15,15,15,15,15
11007 rem character walking this way 3
11008 DATA 5,5,5,5,5,5,15,15,15,15,15,15
 11009 rem blank 4
11010 DATA 0,0,0,0,0,0,0,0,0,0,0,0
11011 rem solid 5



  11012 DATA 9,9,9,9,9,9,9,9,9,9,9,9

11014 DATA 9,9,9,9,0,0,9,0,0,9,0,0

11016 DATA 9,9,9,0,0,9,0,0,9,0,0,9

11018 DATA 9,0,0,9,0,0,9,0,0,9,9,9

11020 DATA 0,0,9,0,0,9,0,0,9,9,9,9

11022 DATA 9,0,0,9,0,0,9,0,0,9,0,0

11024 DATA 0,0,9,0,0,9,0,0,9,0,0,9

11026 DATA 0,0,0,0,0,0,0,0,0,9,9,9

11028 DATA 9,9,9,0,0,0,0,0,0,0,0,0

11030 DATA 0,9,0,0,9,0,0,9,0,0,9,0

11032 DATA 9,9,9,9,9,9,0,0,0,0,0,0






11530 FOR XR=0 TO 15
11540 FOR YR=0 TO 11
11550 READ GY(XR,YR)
11560 NEXT YR
11570 NEXT XR
11590 RETURN

13000 GET A$

13200 IF A$ = "D" THEN I =100
 13210 IF A$ = "A" THEN I =101
  13220 IF A$ = "S" THEN I =102
13230 IF A$ = "W" THEN I =103
13240 IF A$ = "Z" THEN I =50
13250 IF A$ = "X" THEN I =55

13252 IF A$ = "O" THEN M=0: GOSUB 4000: GY(2,3)=EC:GY(2,5)=EC:GOSUB 40000:GOSUB 45000
13254 IF A$ = "U" THEN I=65
13256 IF A$ = "I" THEN I = 70
13258 IF A$ = "J" THEN I = 72
13260 IF A$ = "K" THEN I = 74
13262 IF A$ = "L" THEN I = 76
13900 RETURN

14000 T = SP + M
14010 IF (T > -1) AND (T < 100) THEN SP = T
  14020 IF (T < -1) THEN SP = SO + 100
14025 IF (T<-1) THEN WR = WR+1:GT = T+100:GI=3:GOSUB 1000
14030 REM IF (T<-1) THEN GOSUB 1000
 14035 IF (T>99) THEN WR = WR-1:GT = T-100:GI=2:GOSUB 1000
14040 REM IF (T>99) THEN GOSUB 1000

14100 RETURN



16999 REM LOAD ROOM FROM ARRAY 0
17000 DATA 5,5,5,5,5,5,4,4,4,11
17011 DATA 5,4,4,4,4,4,4,4,5,11
 17012 DATA 5,4,4,4,4,4,4,4,4,11
17013 DATA 5,4,4,4,4,4,4,4,5,11

17015 DATA 5,4,4,4,4,12,12,12,12,9
  17016 DATA 5,4,4,4,4,4,4,10,4,4
17017 DATA 5,4,4,4,4,4,4,10,4,4
17018 DATA 5,4,15,15,15,4,4,10,1,4
17019 DATA 5,4,15,15,15,4,4,10,4,4
 17020 DATA 5,0,15,15,15,12,12,5,5,5

17030 FOR R=0 TO 99

17040 READ RZ(R)
  17050 NEXT R

17070 REM FOR R = 0 TO 99
17075 rem IF RM(R)=4 THEN GOTO 17090
17080 REM SP=R:PI=RZ(R): GOSUB 2000
17090 REM NEXT RJH


18000 REM LOAD ROOM FROM ARRAY 1
18002 DATA 10,4,4,4,14,4,4,4,4,11
  18004 DATA 10,10,4,5,14,4,4,4,4,11
18006 DATA 10,4,4,4,4,4,5,5,4,11
18008 DATA 10,10,4,4,4,4,4,4,4,11
18010 DATA 10,4,4,4,13,4,13,4,13,11
 18012 DATA 10,4,4,13,13,13,13,13,13,7
18014 DATA 10,10,4,5,4,5,4,5,4,11
  18016 DATA 10,10,4,4,4,4,4,4,4,11
18018 DATA 10,4,5,4,5,4,4,4,5,11
18020 DATA 8,12,12,12,12,12,4,4,4,11

18030 FOR R=0 TO 99

 18040 READ RO(R)

18050 NEXT R

18070 REM LATER ADDED GR
18072 REM FOR R = 0 TO 99
  18075 REM IF RM(R)=4 THEN GOTO 17090
18080 REM SP=R:PI=RO(R): GOSUB 2000
18090 REM NEXT R


19000 REM LOAD ROOM FROM ARRAY 2
 19002 DATA 10,4,4,14,4,4,4,13,13,7
19004 DATA 10,4,4,14,4,4,4,4,13,11
  19006 DATA 10,5,4,14,4,15,15,4,4,11
19008 DATA 10,5,4,4,4,15,15,4,4,11
19010 DATA 10,5,4,4,4,15,15,4,4,11
19012 DATA 10,4,4,13,13,13,13,13,13,7
 19014 DATA 10,4,4,4,4,4,4,4,11,11
19016 DATA 10,4,4,4,4,4,4,4,4,11
  19018 DATA 10,4,4,5,14,4,4,4,11,11
19020 DATA 10,4,4,4,14,4,4,4,4,11

19030 FOR R=0 TO 99

19040 READ RT(R)
19050 NEXT R
19060 REM PRINT "OUT"

20000 REM LOAD ROOM FROM ARRAY 3
20002 DATA 10,4,4,4,4,4,4,4,4,11
  20004 DATA 10,4,6,13,7,4,4,4,4,11
20006 DATA 10,4,4,4,11,4,4,13,13,7
20008 DATA 10,4,8,12,9,4,4,4,0,11
20010 DATA 10,4,4,4,4,4,2,0,4,11
 20012 DATA 10,4,4,14,4,4,4,4,5,5
20014 DATA 10,5,4,14,4,4,4,4,4,11
  20016 DATA 10,4,4,14,5,4,4,4,4,11
20018 DATA 10,4,4,14,4,4,4,4,4,11
20020 DATA 10,4,4,14,4,4,4,12,12,9

20030 FOR R=0 TO 99

20040 READ RR(R)
 20050 NEXT R
20070 REM PRINT "OUT"
21002 DATA 10,2,6,13,13,13,13,13,13,7
  21004 DATA 10,4,10,4,4,13,13,13,4,11
21006 DATA 10,4,10,4,4,4,5,4,4,11
21008 DATA 10,4,10,4,4,4,4,4,4,11
21010 DATA 10,4,8,12,12,12,4,4,12,9
 21012 DATA 10,0,4,0,4,0,4,4,4,11
21014 DATA 6,13,7,4,4,4,4,4,4,11
  21016 DATA 10,4,4,4,4,12,12,12,12,9
21018 DATA 8,12,9,4,4,4,4,4,4,11
21020 DATA 10,4,4,4,4,4,4,4,4,11

21030 FOR R=0 TO 99

21040 READ RF(R)
 21050 NEXT R

21060 RETURN


22000 IF WR=0 THEN GOSUB 22100
 22002 IF WR = 1 THEN GOSUB 22200
22004 IF WR = 2 THEN GOSUB 22300
22006 IF WR = 3 THEN GOSUB 22400
22008 IF WR = 4 THEN GOSUB 22500
22009 REM PRINT SP,WR
22010 RETURN
22100 IF SP=77 THEN PRINT "****LOG SOMETHING******":PRINT "********FOR ME***":PRINT "**WILL YAH?****"
22102 IF SP=91 THEN PRINT "*HEY MATE! WHERE'S****":PRINT "*******THE TOILET**"
22199 RETURN
22200 REM WR = 1 ACTIONS
22202 IF SP = 84 THEN PRINT "********SLOW MOVING*********":PRINT "********DUNGEON CRAWL***":PRINT "****GREAT IDEA!!!!******"
22206 IF SP = 27 THEN PRINT "*SCARY VIRTUAL ECONOMY DCRAWL, YIKES"


22208 IF SP = 63 THEN PRINT "DIRECTIONAL SHOOTING CONTROLLS *** BRILLIANT!"
22300 RETURN
22399 RETURN
22400 REM WR=3 ACTIONS
22402 IF SP = 23 THEN PRINT "THAT'S ME IN THE DUNGEON THATS ME IN THE SPOT ******** LIGHT"
22404 IF SP = 46 THEN PRINT "***WHY MUST MY CHILD WAIT TO PLAY MINECRAFT?****"
22406 IF SP=6 THEN PRINT "*SMOOTH SNAP*"
22408 IF SP=7 THEN PRINT "**BUM A RIDE**"
22410 IF SP=8 THEN PRINT "***MARACAS***"
22412 IF SP=16 THEN PRINT "****SMUSH****"
22414 IF SP=17 THEN PRINT "*****HIP POUND*****"
22416 IF SP=18 THEN PRINT "******APHRODITE******"
22499 RETURN
22500 IF SP=71 THEN PRINT "********ONE*************":PRINT "****************TWO***":PRINT "******ROCKSTAR**********"
22502 IF SP=86 THEN PRINT "*SMOOTH SNAP*"
22504 IF SP=87 THEN PRINT "**BUM A RIDE**"
22506 IF SP=88 THEN PRINT "***MARACAS***"
22508 IF SP=96 THEN PRINT "****SMUSH****"
22510 IF SP=97 THEN PRINT "*****BAM*****"
22512 IF SP=98 THEN PRINT "******BEAUTY STEP******"
22599 RETURN

40000 REM DRAW PI AT SP
42000 REM FOR PX = 0 TO 11
 42001 REM PRINT "TWO" R
42010 XS=XA(SP)+XB(4)
42020 YS = YA(SP) + YB(4)
42025 REM IF PI > 19 THEN PI=5
42030 COLOR = EC
42032 FOR R=0 TO 10
42034 REM PRINT XS,(YS+R)
42040 PLOT XS,(YS + R)
 42050 REM NEXT PX
42900 RETURN

43100 COLOR = EC
43110 FOR ZP = 0 TO 30
43114 IF (YA(SP)+ZP) > 40 THEN RETURN
43120 PLOT XA(SP),(YA(SP)+ZP)
43130 NEXT ZP
43140 RETURN


43200 COLOR = EC
43210 FOR ZP = 0 TO 30
43214 IF (YA(SP)-ZP) < 0 THEN RETURN
43220 PLOT XA(SP),(YA(SP)-ZP)
43230 NEXT ZP
43240 RETURN



43300 COLOR = EC
43310 FOR ZP = 0 TO 30
43314 IF (XA(SP)+ZP) > 30 THEN RETURN
43320 PLOT (XA(SP)+ZP),YA(SP)
43330 NEXT ZP
43340 RETURN

43400 COLOR = EC
43410 FOR ZP = 0 TO 30

43414 IF (XA(SP)-ZP) < 0 THEN RETURN
43420 PLOT (XA(SP)-ZP),YA(SP)
43430 NEXT ZP
43440 RETURN

45000 COLOR = EC
45010 PLOT 35,12
45020 RETURN

1 comment:

  1. Holy Helena SSR, it's a BASIC interpreter, not a compiler silly.

    ReplyDelete