Created
August 1, 2022 03:20
-
-
Save wmcbrine/9471b25910bd7fe0caa21a0f1afab34e to your computer and use it in GitHub Desktop.
Saucer, a space duel (game for the CoCo)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
10 CLS | |
20 CLEAR 50 | |
30 M=RND(219) | |
40 N=RND(179) | |
50 V=0:W=0:SK=0 | |
60 PMODE 4,1 | |
70 SCREEN 1,1 | |
80 PCLS | |
90 DIM A(14) | |
100 DIM Z(1) | |
110 DIM E(12) | |
120 DIM DR(9,2) | |
130 READ X | |
140 IF X=-1 THEN GOTO 190 | |
150 READ Q,R,S,T | |
160 LINE (Q,R)-(S,T),PSET | |
170 IF X>0 THEN FOR Q=1 TO X:READ S,T:LINE -(S,T),PSET:NEXT Q | |
180 GOTO 130 | |
190 FOR X=1 TO 9:READ DR(X,1),DR(X,2):NEXT X | |
200 GET (0,0)-(44,12),A,G | |
210 GET (251,0)-(255,4),Z,G | |
220 GET (0,180)-(36,192),E,G | |
230 X1=3.34920635 | |
240 Y1=2.85714286 | |
250 X2=3.98412698 | |
260 Y2=2.96825397 | |
270 PCLS | |
280 X=INT(JOYSTK(0)*X1):Y=INT(JOYSTK(1)*Y1) | |
290 IF (SK=1) AND ((X=XO) AND (Y=YO)) THEN GOTO 330 | |
300 IF SK=1 THEN LINE (XO,YO)-(XO+44,YO+12),PRESET,BF | |
310 PUT (X,Y)-(X+44,Y+12),A,PSET | |
320 XO=X:YO=Y | |
330 S=RND(22) | |
340 T=RND(9) | |
350 M=M+S*DR(T,1) | |
N=N+S*DR(T,2) | |
370 IF M<0 THEN M=M+220 ELSE IF M>219 THEN M=M-220 | |
380 IF N<0 THEN N=N+180 ELSE IF N>179 THEN N=N-180 | |
390 IF (SK=1) AND ((MO=M) AND (NO=N)) THEN GOTO 430 | |
400 IF SK=1 THEN LINE (MO,NO)-(MO+36,NO+12),PRESET,BF | |
410 PUT (M,N)-(M+36,N+12),E,PSET | |
420 MO=M:NO=N | |
430 IF ((X<M+36) AND (M<X+44)) AND ((Y<N+12) AND (N<Y+12)) THEN GOTO 700 | |
440 B=INT(JOYSTK(2)*X2)+2:C=INT(JOYSTK(3)*Y2)+2 | |
450 IF SK=1 THEN LINE (BO-2,CO-2)-(BO+2,CO+2),PRESET,BF | |
460 PUT (B-2,C-2)-(B+2,C+2),Z,PSET | |
470 BO=B:CO=C | |
480 SK=1 | |
490 T=PEEK(65280) | |
500 IF T<>126 AND T<>254 THEN GOTO 280 | |
510 SOUND 100,1:LINE(X+22,Y+6)-(B,C),PSET | |
520 IF ((M<B AND B<M+36) AND (N<C AND C<N+12)) THEN FOR S=200 TO 210:SOUND S,1:NEXT S:V=V+1 | |
530 IF V=6 THEN GOTO 640 | |
540 Q=X+RND(100)-28 | |
550 R=Y+RND(32)-10 | |
560 IF Q<0 THEN Q=0 ELSE IF Q>255 THEN Q=255 | |
570 IF R<0 THEN R=0 ELSE IF R>191 THEN R=191 | |
580 LINE (M+18,N+6)-(Q,R),PSET:SOUND 100,1 | |
590 IF ((X<Q) AND (Q<(X+44))) AND ((Y<R) AND (R<(Y+12))) THEN FOR S=10 TO 1 STEP -1:SOUND S,1:NEXT S:W=W+1 | |
600 IF W=3 THEN GOTO 700 | |
610 PCLS | |
620 SK=0 | |
630 GOTO 280 | |
640 FOR S=1 TO 255 STEP 10 | |
650 SOUND S,1 | |
660 NEXT S | |
670 PRINT"WINNER! "; | |
680 IF INKEY$<>"" THEN RUN | |
690 GOTO 670 | |
700 FOR S=255 TO 1 STEP -10 | |
710 SOUND S,1 | |
720 NEXT S | |
730 PRINT"LOSER! "; | |
740 IF INKEY$<>"" THEN RUN | |
750 GOTO 730 | |
760 DATA 3,16,0,28,0,44,8,0,8,16,0 | |
770 DATA 2,4,8,8,12,36,12,40,8 | |
780 DATA 3,20,4,24,4,26,6,18,6,20,4 | |
790 DATA 3,16,4,14,6,9,6,12,4,16,4 | |
800 DATA 3,28,4,32,4,35,6,30,6,28,4 | |
810 DATA 0,251,2,255,2,0,253,0,253,4 | |
820 DATA 5,8,180,28,180,36,186,28,192,8,192,0,186,8,180 | |
830 DATA 0,18,180,18,192 | |
840 DATA 1,13,180,9,186,13,192 | |
850 DATA 1,23,180,27,186,23,192 | |
860 DATA 0,0,186,36,186,-1 | |
870 DATA -1,1,-1,0,-1,-1,0,-1,1,-1,1,0,1,1,0,1,0,0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment