Compucolor.org – Virtual Media

Listing of file='SNAKES.BAS;01' on disk='vmedia/action_soundware-sector.ccvf'

50 REM                SNAKES
60 REM           COPYRIGHT  7-79
70 REM           CAP ELECTRONICS
80 REM 
105 PLOT 12,15,6,6,29,27,24
110 TM= PEEK (32940)+ PEEK (32941)* 256+ 1:POKE 32936,3
115 IF TM> 1024* 64- 8THEN LOAD "SOUND":RUN
120 IF PEEK (TM+ 179)< > 241THEN LOAD "SOUND":RUN
125 A= PEEK (32940)+ 8:B= PEEK (32941)
130 POKE 33283,A:POKE 33284,B
140 TM= PEEK (32940)+ PEEK (32941)* 256+ 1
200 REM   INITIALIZATION
205 A= 2:B= 126:C= 128:D= 130
210 D(0)= 2:D(1)= - 128:D(2)= - 2:D(3)= 128
215 D(4)= - 126:D(5)= - 130:D(6)= 126:D(7)= 130
220 S(0)= 4:S(1)= - 256:S(2)= - 4:S(3)= 256
225 TK(0)= 120:TK(1)= 43
230 CO(0)= 25:CO(1)= 28
235 GOSUB 900:GOSUB 800:GOSUB 700
240 DI(0)= INT (RND (1)* 4):DI(1)= INT (RND (1)* 4)
250 FOR N= 0TO 1:PP(N)= 30100+ 128* INT (RND (1)* 18)+ 2* INT (RND (1)* 45):NEXT
260 PL= 0:POKE 33278,50+ 2* DI(1)
300 REM   START GAME
400 REM   MAIN PLAY LOOP
410 GOSUB 900:GOSUB 800
415 IF NP= 1AND PL= 1THEN 1100
420 IF (127AND (PEEK (PP(PL)+ S(DI(PL)))))< > 32THEN 610
430 IF ((127AND PEEK (PP(PL)+ D(DI(PL))))< > 32)THEN 620
435 PLOT 8
440 PP(PL)= PP(PL)+ D(DI(PL))
445 POKE PP(PL)+ 1,CO(PL):POKE PP(PL),TK(PL)
450 PL= ABS (PL- 1):GOTO 415
600 REM     HITTER
610 DI(PL)= INT (RND (1)* 4)
620 OK= 0:FOR N= 1TO 4
622 DI(PL)= DI(PL)+ 1:IF DI(PL)> 3THEN DI(PL)= 0
625 IF ((127AND PEEK (PP(PL)+ S(DI(PL))))= 32)THEN OK= 1:N= 4
630 NEXT
640 XY= CALL (0)
645 IF OK= 0THEN DI(PL)= INT (RND (1)* 4)
650 OK= 0:FOR N= 1TO 4
655 IF (127AND PEEK (PP(PL)+ D(DI(PL))))= 32THEN OK= 1:N= 4:GOTO 660
657 DI(PL)= DI(PL)+ 1:IF DI(PL)> 3THEN DI(PL)= 0
660 NEXT :IF OK= 0THEN 1300
670 GOTO 440
700 REM   INSTRUCTIONS
705 C= 1:X= 2:Y= 5:H= 26:W= 60:GOSUB 64000
710 X= 4:Y= 6:PLOT 15
712 GOSUB 792:PRINT "         S O U N D W A R E   S O F T W A R E ":GOSUB 792
713 GOSUB 792:PRINT "YOU CONTROL A BLUE SNAKE. TRY TO MANEUVER YOUR SNAKE TO"
714 GOSUB 792:PRINT "KEEP FROM RUNNING INTO ANYTHING, AND TRY TO  SET  TRAPS"
715 GOSUB 792:PRINT "FOR THE YELLOW SNAKE. THE LAST SNAKE MOVING WINS.   USE"
719 GOSUB 792:PRINT "THE NUMBER KEYS TO CONTROL THE SNAKE:  THE 8 KEY  MOVES"
723 GOSUB 792:PRINT "UP, THE 6 KEY RIGHT, ETC."
726 GOSUB 792
729 GOSUB 792:PRINT "                          7  8 9"
733 GOSUB 792:PRINT "                           |ba~"
736 GOSUB 792:PRINT "                          4 sr 6"
739 GOSUB 792:PRINT "                           eqpe"
742 GOSUB 792:PRINT "                           ~ba|"
745 GOSUB 792:PRINT "                          1  2 3"
748 GOSUB 792:GOSUB 792:PRINT "PRESS O TO SEE THE COMPUTER PLAY AGAINST ITSELF,   OR"
751 GOSUB 792:PRINT "PRESS 1 TO PLAY AGAINST THE COMPUTER ";
752 OUT 8,255:XX= CALL (2)
753 CH$= CHR$ (XX):PRINT CH$;:IF CH$= "0"OR CH$= "1"THEN 760
755 PRINT CHR$ (26);:GOTO 752
760 IF CH$= "0"THEN NP= 0
765 IF CH$= "1"THEN NP= 1
770 POKE 33278,INT (RND (1)* 4)+ 48
775 SC(0)= 0:SC(1)= 0
788 PLOT 8:FOR N= 1TO 25:XX= CALL (1):POKE TM,30- N:XX= CALL (0):NEXT
790 C= 128:RETURN
792 Y= Y+ 1:PLOT 3,X,Y:RETURN
795 Y= Y- 2:PLOT 3,X,Y:RETURN
800 REM   SCORE SUBROUTINE
810 PLOT 3,5,3
815 PRINT "++++++++";SC(0)
820 PLOT 3,47,3
825 PRINT "xxxxxxxx";SC(1)
850 RETURN
900 REM   DRAW GAME SUBROUTINE
920 PLOT 6,6,12,6,3,15,27,24
925 PRINT ""
930 B1$= "```````````````````````````````"
932 BD$= "`````````````````````````````````````````````````````````````"
935 PLOT 3,1,1:PRINT BD$:XX= CALL (0)
937 PLOT 3,1,4:PRINT BD$
939 PLOT 3,1,31:PRINT BD$
941 PLOT 27,10,3,1,1:PRINT B1$
943 PLOT 3,62,1:PRINT B1$
945 PLOT 27,24,14
955 PLOT 3,22,2
956 REM
960 PRINT "  S N A K E S  "
990 RETURN
1000 REM   SOUNDS SUBROUTINES
1010 POKE TM,20:POKE TM+ 2,50:XX= CALL (0):RETURN
1020 POKE TM,100:XX= CALL (0):RETURN
1030 POKE TM,30:POKE TM+ 2,100:XX= CALL (0):RETURN
1040 POKE TM,1:POKE TM+ 2,5:POKE TM+ 4,255:POKE TM+ 5,8:XX= CALL (0):RETURN
1100 REM   KEY HANDLER
1105 PO= PP(PL)
1110 PLOT 8:FOR NX= 1TO TD
1115 OUT 8,255
1120 KE= PEEK (33278)- 48
1122 IF KE< 0THEN KE= 0
1125 ON KEGOTO 1141,1142,1143,1144,1145,1146,1147,1148,1149
1141 PO= PO+ B:GOTO 1155
1142 PO= PO+ C:GOTO 1155
1143 PO= PO+ D:GOTO 1155
1144 PO= PO- A:GOTO 1155
1145 GOTO 1155
1146 PO= PO+ A:GOTO 1155
1147 PO= PO- D:GOTO 1155
1148 PO= PO- C:GOTO 1155
1149 PO= PO- B:GOTO 1155
1150 GOTO 1110
1155 CH= 127AND PEEK (PO)
1160 IF CH< > 32THEN 1300
1162 PP(PL)= PO
1165 GOTO 445
1200 REM     MOVE CATERPILLAR
1300 REM    GAME END
1305 POKE PP(PL),42:AA= PP(PL)+ 1
1306 BB= PEEK (AA):BB= (BBAND 7)+ 64
1307 POKE AA,BB
1310 SC(PL)= SC(PL)+ 1
1320 GOSUB 800
1330 GOSUB 1040
1340 IF NP= 0THEN 240
1346 PLOT 3,21,19:PRINT "PLAY AGAIN (Y OR N)? ";:XX= CALL (2)
1347 CH$= CHR$ (XX):PRINT CH$:IF CH$< > "Y"THEN 1390
1350 GOTO 240
1390 OUT 8,255:PLOT 6,6,3,3,5,27,11,15
1395 LOAD "MENU":RUN
6666

64000 REM         SCROLLING ROUTINE
64010 DA= 28672+ 128* Y+ X+ X:AD= TM+ 126:GOSUB 64100
64015 DA= 128- W- W:AD= TM+ 149:GOSUB 64100
64020 POKE TM+ 129,H- 1:POKE TM+ 131,W* (C+ 1)
64030 POKE TM+ 143,35* (1- C):RETURN
64100 Z1= INT (DA/ 256):Z2= DA- Z1* 256
64110 POKE AD,Z2:POKE AD+ 1,Z1:RETURN