diff --git a/01 Acey Ducey/README.md b/01 Acey Ducey/README.md new file mode 100644 index 00000000..ad0bdbad --- /dev/null +++ b/01 Acey Ducey/README.md @@ -0,0 +1,7 @@ +### Acey Ducey + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=2 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/01 Acey Ducey/aceyducey.bas b/01 Acey Ducey/aceyducey.bas new file mode 100644 index 00000000..2c8b1c3b --- /dev/null +++ b/01 Acey Ducey/aceyducey.bas @@ -0,0 +1,100 @@ +10 PRINT TAB(26);"ACEY DUCEY CARD GAME" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +21 PRINT +22 PRINT +30 PRINT"ACEY-DUCEY IS PLAYED IN THE FOLLOWING MANNER " +40 PRINT"THE DEALER (COMPUTER) DEALS TWO CARDS FACE UP" +50 PRINT"YOU HAVE AN OPTION TO BET OR NOT BET DEPENDING" +60 PRINT"ON WHETHER OR NOT YOU FEEL THE CARD WILL HAVE" +70 PRINT"A VALUE BETWEEN THE FIRST TWO." +80 PRINT"IF YOU DO NOT WANT TO BET, INPUT A 0" +100 N=100 +110 Q=100 +120 PRINT "YOU NOW HAVE";Q;"DOLLARS." +130 PRINT +140 GOTO 260 +210 Q=Q+M +220 GOTO 120 +240 Q=Q-M +250 GOTO 120 +260 PRINT"HERE ARE YOUR NEXT TWO CARDS: " +270 A=INT(14*RND(1))+2 +280 IF A<2 THEN 270 +290 IF A>14 THEN 270 +300 B=INT(14*RND(1))+2 +310 IF B<2 THEN 300 +320 IF B>14 THEN 300 +330 IF A>=B THEN 270 +350 IF A<11 THEN 400 +360 IF A=11 THEN 420 +370 IF A=12 THEN 440 +380 IF A=13 THEN 460 +390 IF A=14 THEN 480 +400 PRINT A +410 GOTO 500 +420 PRINT"JACK" +430 GOTO 500 +440 PRINT"QUEEN" +450 GOTO 500 +460 PRINT"KING" +470 GOTO 500 +480 PRINT"ACE" +500 IF B<11 THEN 550 +510 IF B=11 THEN 570 +520 IF B=12 THEN 590 +530 IF B=13 THEN 610 +540 IF B=14 THEN 630 +550 PRINT B +560 GOTO 650 +570 PRINT"JACK" +580 GOTO 650 +590 PRINT"QUEEN" +600 GOTO 650 +610 PRINT"KING" +620 GOTO 650 +630 PRINT"ACE" +640 PRINT +650 PRINT +660 INPUT"WHAT IS YOUR BET";M +670 IF M<>0 THEN 680 +675 PRINT"CHICKEN!!" +676 PRINT +677 GOTO 260 +680 IF M<=Q THEN 730 +690 PRINT"SORRY, MY FRIEND, BUT YOU BET TOO MUCH." +700 PRINT"YOU HAVE ONLY ";Q;" DOLLARS TO BET." +710 GOTO 650 +730 C=INT(14*RND(1))+2 +740 IF C<2 THEN 730 +750 IF C>14 THEN 730 +760 IF C<11 THEN 810 +770 IF C=11 THEN 830 +780 IF C=12 THEN 850 +790 IF C=13 THEN 870 +800 IF C=14 THEN 890 +810 PRINT C +820 GOTO 910 +830 PRINT"JACK" +840 GOTO 910 +850 PRINT"QUEEN" +860 GOTO 910 +870 PRINT"KING" +880 GOTO 910 +890 PRINT "ACE" +900 PRINT +910 IF C>A THEN 930 +920 GOTO 970 +930 IF C>=B THEN 970 +950 PRINT"YOU WIN!!!" +960 GOTO 210 +970 PRINT"SORRY, YOU LOSE" +980 IF M1 AND V<>1 THEN 110 +104 PRINT "MEANINGLESS DIMENSIONS. TRY AGAIN.":GOTO 100 +110 DIM W(H,V),V(H,V) +120 PRINT +130 PRINT +140 PRINT +150 PRINT +160 Q=0:Z=0:X=INT(RND(1)*H+1) +165 FOR I=1 TO H +170 IF I=X THEN 173 +171 PRINT ".--";:GOTO 180 +173 PRINT ". "; +180 NEXT I +190 PRINT "." +195 C=1:W(X,1)=C:C=C+1 +200 R=X:S=1:GOTO 260 +210 IF R<>H THEN 240 +215 IF S<>V THEN 230 +220 R=1:S=1:GOTO 250 +230 R=1:S=S+1:GOTO 250 +240 R=R+1 +250 IF W(R,S)=0 THEN 210 +260 IF R-1=0 THEN 530 +265 IF W(R-1,S)<>0 THEN 530 +270 IF S-1=0 THEN 390 +280 IF W(R,S-1)<>0 THEN 390 +290 IF R=H THEN 330 +300 IF W(R+1,S)<>0 THEN 330 +310 X=INT(RND(1)*3+1) +320 ON X GOTO 790,820,860 +330 IF S<>V THEN 340 +334 IF Z=1 THEN 370 +338 Q=1:GOTO 350 +340 IF W(R,S+1)<>0 THEN 370 +350 X=INT(RND(1)*3+1) +360 ON X GOTO 790,820,910 +370 X=INT(RND(1)*2+1) +380 ON X GOTO 790,820 +390 IF R=H THEN 470 +400 IF W(R+1,S)<>0 THEN 470 +405 IF S<>V THEN 420 +410 IF Z=1 THEN 450 +415 Q=1:GOTO 430 +420 IF W(R,S+1)<>0 THEN 450 +430 X=INT(RND(1)*3+1) +440 ON X GOTO 790,860,910 +450 X=INT(RND(1)*2+1) +460 ON X GOTO 790,860 +470 IF S<>V THEN 490 +480 IF Z=1 THEN 520 +485 Q=1:GOTO 500 +490 IF W(R,S+1)<>0 THEN 520 +500 X=INT(RND(1)*2+1) +510 ON X GOTO 790,910 +520 GOTO 790 +530 IF S-1=0 THEN 670 +540 IF W(R,S-1)<>0 THEN 670 +545 IF R=H THEN 610 +547 IF W(R+1,S)<>0 THEN 610 +550 IF S<>V THEN 560 +552 IF Z=1 THEN 590 +554 Q=1:GOTO 570 +560 IF W(R,S+1)<>0 THEN 590 +570 X=INT(RND(1)*3+1) +580 ON X GOTO 820,860,910 +590 X=INT(RND(1)*2+1) +600 ON X GOTO 820,860 +610 IF S<>V THEN 630 +620 IF Z=1 THEN 660 +625 Q=1:GOTO 640 +630 IF W(R,S+1)<>0 THEN 660 +640 X=INT(RND(1)*2+1) +650 ON X GOTO 820,910 +660 GOTO 820 +670 IF R=H THEN 740 +680 IF W(R+1,S)<>0 THEN 740 +685 IF S<>V THEN 700 +690 IF Z=1 THEN 730 +695 Q=1:GOTO 830 +700 IF W(R,S+1)<>0 THEN 730 +710 X=INT(RND(1)*2+1) +720 ON X GOTO 860,910 +730 GOTO 860 +740 IF S<>V THEN 760 +750 IF Z=1 THEN 780 +755 Q=1:GOTO 770 +760 IF W(R,S+1)<>0 THEN 780 +770 GOTO 910 +780 GOTO 1000 +790 W(R-1,S)=C +800 C=C+1:V(R-1,S)=2:R=R-1 +810 IF C=H*V+1 THEN 1010 +815 Q=0:GOTO 260 +820 W(R,S-1)=C +830 C=C+1 +840 V(R,S-1)=1:S=S-1:IF C=H*V+1 THEN 1010 +850 Q=0:GOTO 260 +860 W(R+1,S)=C +870 C=C+1:IF V(R,S)=0 THEN 880 +875 V(R,S)=3:GOTO 890 +880 V(R,S)=2 +890 R=R+1 +900 IF C=H*V+1 THEN 1010 +905 GOTO 530 +910 IF Q=1 THEN 960 +920 W(R,S+1)=C:C=C+1:IF V(R,S)=0 THEN 940 +930 V(R,S)=3:GOTO 950 +940 V(R,S)=1 +950 S=S+1:IF C=H*V+1 THEN 1010 +955 GOTO 260 +960 Z=1 +970 IF V(R,S)=0 THEN 980 +975 V(R,S)=3:Q=0:GOTO 1000 +980 V(R,S)=1:Q=0:R=1:S=1:GOTO 250 +1000 GOTO 210 +1010 FOR J=1 TO V +1011 PRINT "I"; +1012 FOR I=1 TO H +1013 IF V(I,J)<2 THEN 1030 +1020 PRINT " "; +1021 GOTO 1040 +1030 PRINT " I"; +1040 NEXT I +1041 PRINT +1043 FOR I=1 TO H +1045 IF V(I,J)=0 THEN 1060 +1050 IF V(I,J)=2 THEN 1060 +1051 PRINT ": "; +1052 GOTO 1070 +1060 PRINT ":--"; +1070 NEXT I +1071 PRINT "." +1072 NEXT J +1073 END diff --git a/03 Animal/README.md b/03 Animal/README.md new file mode 100644 index 00000000..69256d87 --- /dev/null +++ b/03 Animal/README.md @@ -0,0 +1,7 @@ +### Animal + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=4 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/03 Animal/animal.bas b/03 Animal/animal.bas new file mode 100644 index 00000000..271eb0d0 --- /dev/null +++ b/03 Animal/animal.bas @@ -0,0 +1,71 @@ +10 PRINT TAB(32);"ANIMAL" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT: PRINT: PRINT +40 PRINT "PLAY 'GUESS THE ANIMAL'" +45 PRINT +50 PRINT "THINK OF AN ANIMAL AND THE COMPUTER WILL TRY TO GUESS IT." +60 PRINT +70 DIM A$(200) +80 FOR I=0 TO 3 +90 READ A$(I) +100 NEXT I +110 N=VAL(A$(0)) +120 REM MAIN CONTROL SECTION +130 INPUT "ARE YOU THINKING OF AN ANIMAL";A$ +140 IF A$="LIST" THEN 600 +150 IF LEFT$(A$,1)<>"Y" THEN 120 +160 K=1 +170 GOSUB 390 +180 IF LEN(A$(K))=0 THEN 999 +190 IF LEFT$(A$(K),2)="\Q" THEN 170 +200 PRINT "IS IT A ";RIGHT$(A$(K),LEN(A$(K))-2); +210 INPUT A$ +220 A$=LEFT$(A$,1) +230 IF LEFT$(A$,1)="Y" THEN PRINT "WHY NOT TRY ANOTHER ANIMAL?": GOTO 120 +240 INPUT "THE ANIMAL YOU WERE THINKING OF WAS A ";V$ +250 PRINT "PLEASE TYPE IN A QUESTION THAT WOULD DISTINGUISH A" +260 PRINT V$;" FROM A ";RIGHT$(A$(K),LEN(A$(K))-2) +270 INPUT X$ +280 PRINT "FOR A ";V$;" THE ANSWER WOULD BE "; +290 INPUT A$ +300 A$=LEFT$(A$,1): IF A$<>"Y" AND A$<>"N" THEN 280 +310 IF A$="Y" THEN B$="N" +320 IF A$="N" THEN B$="Y" +330 Z1=VAL(A$(0)) +340 A$(0)=STR$(Z1+2) +350 A$(Z1)=A$(K) +360 A$(Z1+1)="\A"+V$ +370 A$(K)="\Q"+X$+"\"+A$+STR$(Z1+1)+"\"+B$+STR$(Z1)+"\" +380 GOTO 120 +390 REM SUBROUTINE TO PRINT QUESTIONS +400 Q$=A$(K) +410 FOR Z=3 TO LEN(Q$) +415 IF MID$(Q$,Z,1)<>"\" THEN PRINT MID$(Q$,Z,1);: NEXT Z +420 INPUT C$ +430 C$=LEFT$(C$,1) +440 IF C$<>"Y" AND C$<>"N" THEN 410 +450 T$="\"+C$ +455 FOR X=3 TO LEN(Q$)-1 +460 IF MID$(Q$,X,2)=T$ THEN 480 +470 NEXT X +475 STOP +480 FOR Y=X+1 TO LEN(Q$) +490 IF MID$(Q$,Y,1)="\" THEN 510 +500 NEXT Y +505 STOP +510 K=VAL(MID$(Q$,X+2,Y-X-2)) +520 RETURN +530 DATA "4","\QDOES IT SWIM\Y2\N3\","\AFISH","\ABIRD" +600 PRINT:PRINT "ANIMALS I ALREADY KNOW ARE:" +605 X=0 +610 FOR I=1 TO 200 +620 IF LEFT$(A$(I),2)<>"\A" THEN 650 +624 PRINT TAB(15*X); +630 FOR Z=3 TO LEN(A$(I)) +640 IF MID$(A$(I),Z,1)<>"\" THEN PRINT MID$(A$(I),Z,1);: NEXT Z +645 X=X+1: IF X=4 THEN X=0: PRINT +650 NEXT I +660 PRINT +670 PRINT +680 GOTO 120 +999 END diff --git a/04 Awari/README.md b/04 Awari/README.md new file mode 100644 index 00000000..9356db80 --- /dev/null +++ b/04 Awari/README.md @@ -0,0 +1,7 @@ +### Awari + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=6 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/04 Awari/awari.bas b/04 Awari/awari.bas new file mode 100644 index 00000000..f5f66e1b --- /dev/null +++ b/04 Awari/awari.bas @@ -0,0 +1,70 @@ +5 PRINT TAB(34);"AWARI" +7 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +10 DATA 0 +15 DIM B(13),G(13),F(50):READ N +20 PRINT:PRINT:E=0 +25 FOR I=0 TO 12:B(I)=3:NEXT I +30 C=0:F(N)=0:B(13)=0:B(6)=0 +35 GOSUB 500 +40 PRINT "YOUR MOVE";:GOSUB 110 +45 IF E=0 THEN 80 +50 IF M=H THEN GOSUB 100 +55 IF E=0 THEN 80 +60 PRINT "MY MOVE IS ";:GOSUB 800 +65 IF E=0 THEN 80 +70 IF M=H THEN PRINT ",";:GOSUB 800 +75 IF E>0 THEN 35 +80 PRINT:PRINT"GAME OVER" +85 D=B(6)-B(13):IF D<0 THEN PRINT "I WIN BY";-D;"POINTS":GOTO 20 +90 N=N+1:IF D=0 THEN PRINT "DRAWN GAME":GOTO 20 +95 PRINT "YOU WIN BY";D;"POINTS":GOTO 20 +100 PRINT "AGAIN"; +110 INPUT M:IF M<7 THEN IF M>0 THEN M=M-1:GOTO 130 +120 PRINT "ILLEGAL MOVE":GOTO 100 +130 IF B(M)=0 THEN 120 +140 H=6:GOSUB 200 +150 GOTO 500 +200 K=M:GOSUB 600 +205 E=0:IF K>6 THEN K=K-7 +210 C=C+1:IF C<9 THEN F(N)=F(N)*6+K +215 FOR I=0 TO 5:IF B(I)<>0 THEN 230 +220 NEXT I +225 RETURN +230 FOR I=7 TO 12:IF B(I)<>0 THEN E=1:RETURN +235 GOTO 220 +500 PRINT:PRINT" "; +505 FOR I=12 TO 7 STEP -1:GOSUB 580 +510 NEXT I +515 PRINT:I=13:GOSUB 580 +520 PRINT " ";:PRINT B(6):PRINT " "; +525 FOR I=0 TO 5:GOSUB 580 +530 NEXT I +535 PRINT:PRINT:RETURN +580 IF B(I)<10 THEN PRINT " "; +585 PRINT B(I);:RETURN +600 P=B(M):B(M)=0 +605 FOR P=P TO 1 STEP -1:M=M+1:IF M>13 THEN M=M-14 +610 B(M)=B(M)+1:NEXT P +615 IF B(M)=1 THEN IF M<>6 THEN IF M<>13 THEN IF B(12-M)<>0 THEN 625 +620 RETURN +625 B(H)=B(H)+B(12-M)+1:B(M)=0:B(12-M)=0:RETURN +800 D=-99:H=13 +805 FOR I=0 TO 13:G(I)=B(I):NEXT I +810 FOR J=7 TO 12:IF B(J)=0 THEN 885 +815 G=0:M=J:GOSUB 600 +820 FOR I=0 TO 5:IF B(I)=0 THEN 845 +825 L=B(I)+I:R=0 +830 IF L>13 THEN L=L-14:R=1:GOTO 830 +835 IF B(L)=0 THEN IF L<>6 THEN IF L<>13 THEN R=B(12-L)+R +840 IF R>Q THEN Q=R +845 NEXT I +850 Q=B(13)-B(6)-Q:IF C>8 THEN 875 +855 K=J:IF K>6 THEN K=K-7 +860 FOR I=0 TO N-1:IF F(N)*6+K=INT(F(I)/6^(7-C)+.1) THEN Q=Q-2 +870 NEXT I +875 FOR I=0 TO 13:B(I)=G(I):NEXT I +880 IF Q>=D THEN A=J:D=Q +885 NEXT J +890 M=A:PRINT CHR$(42+M);:GOTO 200 +900 FOR I=0 TO N-1:PRINT B(I):NEXT I +999 END diff --git a/05 Bagels/README.md b/05 Bagels/README.md new file mode 100644 index 00000000..e550e084 --- /dev/null +++ b/05 Bagels/README.md @@ -0,0 +1,7 @@ +### Bagels + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=9 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/05 Bagels/bagels.bas b/05 Bagels/bagels.bas new file mode 100644 index 00000000..3136955b --- /dev/null +++ b/05 Bagels/bagels.bas @@ -0,0 +1,81 @@ +5 PRINT TAB(33);"BAGELS" +10 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY":PRINT:PRINT +15 REM *** BAGLES NUMBER GUESSING GAME +20 REM *** ORIGINAL SOURCE UNKNOWN BUT SUSPECTED TO BE +25 REM *** LAWRENCE HALL OF SCIENCE, U.C. BERKELY +30 DIM A1(6),A(3),B(3) +40 Y=0:T=255 +50 PRINT:PRINT:PRINT +70 INPUT "WOULD YOU LIKE THE RULES (YES OR NO)";A$ +90 IF LEFT$(A$,1)="N" THEN 150 +100 PRINT:PRINT "I AM THINKING OF A THREE-DIGIT NUMBER. TRY TO GUESS" +110 PRINT "MY NUMBER AND I WILL GIVE YOU CLUES AS FOLLOWS:" +120 PRINT " PICO - ONE DIGIT CORRECT BUT IN THE WRONG POSITION" +130 PRINT " FERMI - ONE DIGIT CORRECT AND IN THE RIGHT POSITION" +140 PRINT " BAGELS - NO DIGITS CORRECT" +150 FOR I=1 TO 3 +160 A(I)=INT(10*RND(1)) +165 IF I-1=0 THEN 200 +170 FOR J=1 TO I-1 +180 IF A(I)=A(J) THEN 160 +190 NEXT J +200 NEXT I +210 PRINT:PRINT "O.K. I HAVE A NUMBER IN MIND." +220 FOR I=1 TO 20 +230 PRINT "GUESS #";I, +240 INPUT A$ +245 IF LEN(A$)<>3 THEN 630 +250 FOR Z=1 TO 3:A1(Z)=ASC(MID$(A$,Z,1)):NEXT Z +260 FOR J=1 TO 3 +270 IF A1(J)<48 THEN 300 +280 IF A1(J)>57 THEN 300 +285 B(J)=A1(J)-48 +290 NEXT J +295 GOTO 320 +300 PRINT "WHAT?" +310 GOTO 230 +320 IF B(1)=B(2) THEN 650 +330 IF B(2)=B(3) THEN 650 +340 IF B(3)=B(1) THEN 650 +350 C=0:D=0 +360 FOR J=1 TO 2 +370 IF A(J)<>B(J+1) THEN 390 +380 C=C+1 +390 IF A(J+1)<>B(J) THEN 410 +400 C=C+1 +410 NEXT J +420 IF A(1)<>B(3) THEN 440 +430 C=C+1 +440 IF A(3)<>B(1) THEN 460 +450 C=C+1 +460 FOR J=1 TO 3 +470 IF A(J)<>B(J) THEN 490 +480 D=D+1 +490 NEXT J +500 IF D=3 THEN 680 +505 IF C=0 THEN 545 +520 FOR J=1 TO C +530 PRINT "PICO "; +540 NEXT J +545 IF D=0 THEN 580 +550 FOR J=1 TO D +560 PRINT "FERMI "; +570 NEXT J +580 IF C+D<>0 THEN 600 +590 PRINT "BAGELS"; +600 PRINT +605 NEXT I +610 PRINT "OH WELL." +615 PRINT "THAT'S TWNETY GUESSES. MY NUMBER WAS";100*A(1)+10*A(2)+A(3) +620 GOTO 700 +630 PRINT "TRY GUESSING A THREE-DIGIT NUMBER.":GOTO 230 +650 PRINT "OH, I FORGOT TO TELL YOU THAT THE NUMBER I HAVE IN MIND" +660 PRINT "HAS NO TWO DIGITS THE SAME.":GOTO 230 +680 PRINT "YOU GOT IT!!!":PRINT +690 Y=Y+1 +700 INPUT "PLAY AGAIN (YES OR NO)";A$ +720 IF LEFT$(A$,1)="YES" THEN 150 +730 IF Y=0 THEN 750 +740 PRINT:PRINT "A";Y;"POINT BAGELS BUFF!!" +750 PRINT "HOPE YOU HAD FUN. BYE." +999 END diff --git a/06 Banner/README.md b/06 Banner/README.md new file mode 100644 index 00000000..ac26214e --- /dev/null +++ b/06 Banner/README.md @@ -0,0 +1,7 @@ +### Banner + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=10 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/06 Banner/banner.bas b/06 Banner/banner.bas new file mode 100644 index 00000000..3eb50c45 --- /dev/null +++ b/06 Banner/banner.bas @@ -0,0 +1,94 @@ +10 INPUT "HORIZONTAL";X +20 INPUT "VERTICAL";Y +21 INPUT "CENTERED";L$ +22 G1=0:IF L$>"P" THEN G1=1 +23 INPUT "CHARACTER (TYPE 'ALL' IF YOU WANT CHARACTER BEING PRINTED)";M$ +29 PRINT "STATEMENT"; +30 INPUT A$ +35 INPUT "SET PAGE";O$ +40 A=ASC(LEFT$(A$,1)) +50 REM +60 REM +70 FOR T=1 TO LEN(A$) +80 P$=MID$(A$,T,1) +90 FOR O=1 TO 50 +95 READ S$,S(1),S(2),S(3),S(4),S(5),S(6),S(7) +96 IF P$=" " THEN 812 +100 IF P$=S$ THEN 200 +120 NEXT O +200 RESTORE +201 X$=M$ +202 IF M$="ALL" THEN X$=S$ +205 FOR U=1 TO 7 +210 FOR K=8 TO 0 STEP -1 +230 IF 2^K 3/5 THEN 420 +400 PRINT O$;" CONTROLS THE TAP." +410 GOTO 3000 +420 PRINT "DARTMOUTH CONTROLS THE TAP." +425 PRINT +430 INPUT "YOUR SHOT";Z +440 P=0 +445 IF Z<>INT(Z) THEN 455 +446 IF Z<0 OR Z>4 THEN 455 +447 GOTO 460 +455 PRINT "INCORRECT ANSWER. RETYPE IT. ";:GOTO 430 +460 IF RND(1)<.5 THEN 1000 +480 IF T<100 THEN 1000 +490 PRINT +491 IF S(1)<>S(0) THEN 510 +492 PRINT:PRINT " ***** END OF SECOND HALF *****":PRINT +493 PRINT "SCORE AT END OF REGULATION TIME:" +494 PRINT " DARTMOUTH:";S(1);" ";O$;":";S(0) +495 PRINT +496 PRINT "BEGIN TWO MINUTE OVERTIME PERIOD" +499 T=93 +500 GOTO 370 +510 PRINT " ***** END OF GAME *****" +515 PRINT "FINAL SCORE: DARTMOUTH:";S(1);" ";O$;":";S(0) +520 STOP +600 PRINT +610 PRINT " *** TWO MINUTES LEFT IN THE GAME ***" +620 PRINT +630 RETURN +1000 ON Z GOTO 1040,1040 +1030 GOTO 1300 +1040 T=T+1 +1041 IF T=50 THEN 8000 +1042 IF T=92 THEN 1046 +1043 GOTO 1050 +1046 GOSUB 600 +1050 PRINT "JUMP SHOT" +1060 IF RND(1)>.341*D/8 THEN 1090 +1070 PRINT "SHOT IS GOOD." +1075 GOSUB 7000 +1085 GOTO 3000 +1090 IF RND(1)>.682*D/8 THEN 1200 +1100 PRINT "SHOT IS OFF TARGET." +1105 IF D/6*RND(1)>.45 THEN 1130 +1110 PRINT "DARTMOUTH CONTROLS THE REBOUND." +1120 GOTO 1145 +1130 PRINT "REBOUND TO ";O$ +1140 GOTO 3000 +1145 IF RND(1)>.4 THEN 1158 +1150 GOTO 1300 +1158 IF D=6 THEN 5100 +1160 PRINT "BALL PASSED BACK TO YOU. "; +1170 GOTO 430 +1180 IF RND(1)>.9 THEN 1190 +1185 PRINT "PLAYER FOULED, TWO SHOTS." +1187 GOSUB 4000 +1188 GOTO 3000 +1190 PRINT "BALL STOLEN. ";O$;"'S BALL." +1195 GOTO 3000 +1200 IF RND(1)>.782*D/8 THEN 1250 +1210 PRINT "SHOT IS BLOCKED. BALL CONTROLLED BY "; +1230 IF RND(1)>.5 THEN 1242 +1235 PRINT "DARTMOUTH." +1240 GOTO 430 +1242 PRINT O$;"." +1245 GOTO 3000 +1250 IF RND(1)>.843*D/8 THEN 1270 +1255 PRINT "SHOOTER IS FOULED. TWO SHOTS." +1260 GOSUB 4000 +1265 GOTO 3000 +1270 PRINT "CHARGING FOUL. DARTMOUTH LOSES BALL." +1280 GOTO 3000 +1300 T=T+1 +1301 IF T=50 THEN 8000 +1302 IF T=92 THEN 1304 +1303 GOTO 1305 +1304 GOSUB 600 +1305 IF Z=0 THEN 2010 +1310 IF Z>3 THEN 1700 +1320 PRINT "LAY UP." +1330 IF 7/D*RND(1)>.4 THEN 1360 +1340 PRINT "SHOT IS GOOD. TWO POINTS." +1345 GOSUB 7000 +1355 GOTO 3000 +1360 IF 7/D*RND(1)>.7 THEN 1500 +1370 PRINT "SHOT IS OFF THE RIM." +1380 IF RND(1)>2/3 THEN 1415 +1390 PRINT O$;" CONTROLS THE REBOUND." +1400 GOTO 3000 +1415 PRINT "DARTMOUTH CONTROLS THE REBOUND." +1420 IF RND(1)>.4 THEN 1440 +1430 GOTO 1300 +1440 PRINT "BALL PASSED BACK TO YOU."; +1450 GOTO 430 +1500 IF 7/D*RND(1)>.875 THEN 1600 +1510 PRINT "SHOOTER FOULED. TWO SHOTS." +1520 GOSUB 4000 +1530 GOTO 3000 +1600 IF 7/D*RND(1)>.925 THEN 1630 +1610 PRINT "SHOT BLOCKED. ";O$;"'S BALL." +1620 GOTO 3000 +1630 PRINT "CHARGING FOUL. DARTMOUTH LOSES THE BALL." +1640 GOTO 3000 +1700 PRINT "SET SHOT." +1710 GOTO 1330 +2010 INPUT "YOUR NEW DEFENSIVE ALLIGNMENT IS";D +2030 IF D<6 THEN 2010 +2040 GOTO 425 +3000 P=1 +3005 T=T+1 +3008 IF T=50 THEN 8000 +3012 GOTO 3018 +3015 GOSUB 600 +3018 PRINT +3020 Z1=10/4*RND(1)+1 +3030 IF Z1>2 THEN 3500 +3040 PRINT "JUMP SHOT." +3050 IF 8/D*RND(1)>.35 THEN 3100 +3060 PRINT "SHOT IS GOOD." +3080 GOSUB 6000 +3090 GOTO 425 +3100 IF 8/D*RND(1)>.75 THEN 3200 +3105 PRINT "SHOT IS OFF RIM." +3110 IF D/6*RND(1)>.5 THEN 3150 +3120 PRINT "DARTMOUTH CONTROLS THE REBOUND." +3130 GOTO 425 +3150 PRINT O$;" CONTROLS THE REBOUND." +3160 IF D=6 THEN 5000 +3165 IF RND(1)>.5 THEN 3175 +3168 PRINT "PASS BACK TO ";O$;" GUARD." +3170 GOTO 3000 +3175 GOTO 3500 +3200 IF 8/D*RND(1)>.9 THEN 3310 +3210 PRINT "PLAYER FOULED. TWO SHOTS." +3220 GOSUB 4000 +3230 GOTO 425 +3310 PRINT "OFFENSIVE FOUL. DARTMOUTH'S BALL." +3320 GOTO 425 +3500 IF Z1>3 THEN 3800 +3510 PRINT "LAY UP." +3520 IF 7/D*RND(1)>.413 THEN 3600 +3530 PRINT "SHOT IS GOOD." +3540 GOSUB 6000 +3550 GOTO 425 +3600 PRINT "SHOT IS MISSED." +3610 GOTO 3110 +3800 PRINT "SET SHOT." +3810 GOTO 3520 +4000 REM FOUL SHOOTING +4010 IF RND(1)>.49 THEN 4050 +4020 PRINT "SHOOTER MAKES BOTH SHOTS." +4030 S(1-P)=S(1-P)+2 +4040 GOSUB 6010 +4041 RETURN +4050 IF RND(1)>.75 THEN 4100 +4060 PRINT "SHOOTER MAKES ONE SHOT AND MISSES ONE." +4070 S(1-P)=S(1-P)+1 +4080 GOTO 4040 +4100 PRINT "BOTH SHOTS MISSED." +4110 GOTO 4040 +5000 IF RND(1)>.75 THEN 5010 +5005 GOTO 3165 +5010 PRINT "BALL STOLEN. EASY LAY UP FOR DARTMOUTH." +5015 GOSUB 7000 +5030 GOTO 3000 +5100 IF RND(1)>.6 THEN 5120 +5110 GOTO 1160 +5120 PRINT "PASS STOLEN BY ";O$;" EASY LAYUP." +5130 GOSUB 6000 +5140 GOTO 425 +6000 S(0)=S(0)+2 +6010 PRINT "SCORE: ";S(1);"TO";S(0) +6020 RETURN +7000 S(1)=S(1)+2 +7010 GOSUB 6010 +7020 RETURN +8000 PRINT:PRINT " ***** END OF FIRST HALF *****":PRINT +8010 PRINT "SCORE: DARTMOUTH:";S(1);" ";O$;":";S(0) +8015 PRINT +8016 PRINT +8020 GOTO 370 +9999 END diff --git a/08 Batnum/README.md b/08 Batnum/README.md new file mode 100644 index 00000000..4590dcf8 --- /dev/null +++ b/08 Batnum/README.md @@ -0,0 +1,7 @@ +### Batnum + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=14 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/08 Batnum/batnum.bas b/08 Batnum/batnum.bas new file mode 100644 index 00000000..0f9e80c5 --- /dev/null +++ b/08 Batnum/batnum.bas @@ -0,0 +1,90 @@ +10 PRINT TAB(33);"BATNUM" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +110 PRINT "THIS PROGRAM IS A 'BATTLE OF NUMBERS' GAME, WHERE THE" +120 PRINT "COMPUTER IS YOUR OPPONENT." +130 PRINT +140 PRINT "THE GAME STARTS WITH AN ASSUMED PILE OF OBJECTS. YOU" +150 PRINT "AND YOUR OPPONENT ALTERNATELY REMOVE OBJECTS FROM THE PILE." +160 PRINT "WINNING IS DEFINED IN ADVANCE AS TAKING THE LAST OBJECT OR" +170 PRINT "NOT. YOU CAN ALSO SPECIFY SOME OTHER BEGINNING CONDITIONS." +180 PRINT "DON'T USE ZERO, HOWEVER, IN PLAYING THE GAME." +190 PRINT "ENTER A NEGATIVE NUMBER FOR NEW PILE SIZE TO STOP PLAYING." +200 PRINT +210 GOTO 330 +220 FOR I=1 TO 10 +230 PRINT +240 NEXT I +330 INPUT "ENTER PILE SIZE";N +350 IF N>=1 THEN 370 +360 GOTO 330 +370 IF N<>INT(N) THEN 220 +380 IF N<1 THEN 220 +390 INPUT "ENTER WIN OPTION - 1 TO TAKE LAST, 2 TO AVOID LAST: ";M +410 IF M=1 THEN 430 +420 IF M<>2 THEN 390 +430 INPUT "ENTER MIN AND MAX ";A,B +450 IF A>B THEN 430 +460 IF A<1 THEN 430 +470 IF A<>INT(A) THEN 430 +480 IF B<>INT(B) THEN 430 +490 INPUT "ENTER START OPTION - 1 COMPUTER FIRST, 2 YOU FIRST ";S +500 PRINT:PRINT +510 IF S=1 THEN 530 +520 IF S<>2 THEN 490 +530 C=A+B +540 IF S=2 THEN 570 +550 GOSUB 600 +560 IF W=1 THEN 220 +570 GOSUB 810 +580 IF W=1 THEN 220 +590 GOTO 550 +600 Q=N +610 IF M=1 THEN 630 +620 Q=Q-1 +630 IF M=1 THEN 680 +640 IF N>A THEN 720 +650 W=1 +660 PRINT "COMPUTER TAKES";N;"AND LOSES." +670 RETURN +680 IF N>B THEN 720 +690 W=1 +700 PRINT "COMPUTER TAKES";N;"AND WINS." +710 RETURN +720 P=Q-C*INT(Q/C) +730 IF P>=A THEN 750 +740 P=A +750 IF P<=B THEN 770 +760 P=B +770 N=N-P +780 PRINT "COMPUTER TAKES";P;"AND LEAVES";N +790 W=0 +800 RETURN +810 PRINT:PRINT "YOUR MOVE "; +820 INPUT P +830 IF P<>0 THEN 870 +840 PRINT "I TOLD YOU NOT TO USE ZERO! COMPUTER WINS BY FORFEIT." +850 W=1 +860 RETURN +870 IF P<>INT(P) THEN 920 +880 IF P>=A THEN 910 +890 IF P=N THEN 960 +900 GOTO 920 +910 IF P<=B THEN 940 +920 PRINT "ILLEGAL MOVE, REENTER IT "; +930 GOTO 820 +940 N=N-P +950 IF N<>0 THEN 1030 +960 IF M=1 THEN 1000 +970 PRINT "TOUGH LUCK, YOU LOSE." +980 W=1 +990 RETURN +1000 PRINT "CONGRATULATIONS, YOU WIN." +1010 W=1 +1020 RETURN +1030 IF N>=0 THEN 1060 +1040 N=N+P +1050 GOTO 920 +1060 W=0 +1070 RETURN +1080 END diff --git a/09 Battle/README.md b/09 Battle/README.md new file mode 100644 index 00000000..0f5ada08 --- /dev/null +++ b/09 Battle/README.md @@ -0,0 +1,7 @@ +### Battle + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=15 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/09 Battle/battle.bas b/09 Battle/battle.bas new file mode 100644 index 00000000..6f85f567 --- /dev/null +++ b/09 Battle/battle.bas @@ -0,0 +1,196 @@ +5 PRINT TAB(33);"BATTLE" +7 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +10 REM -- BATTLE WRITTEN BY RAY WESTERGARD 10/70 +20 REM COPYRIGHT 1971 BY THE REGENTS OF THE UNIV. OF CALIF. +30 REM PRODUCED AT THE LAWRENCE HALL OF SCIENCE, BERKELEY +40 DIM F(6,6),H(6,6),A(4),B(4),C(6),L(3) +50 FOR X=1 TO 6 +51 FOR Y=1 TO 6 +52 F(X,Y)=0 +53 NEXT Y +54 NEXT X +60 FOR I=1 TO 3 +70 N=4-I +80 FOR J=1 TO 2 +90 A=INT(6*RND(1)+1) +100 B=INT(6*RND(1)+1) +110 D=INT(4*RND(1)+1) +120 IF F(A,B)>0 THEN 90 +130 M=0 +140 ON D GOTO 150,340,550,740 +150 B(1)=B +160 B(2)=7:B(3)=7 +170 FOR K=1 TO N +180 IF M>1 THEN 240 +190 IF B(K)=6 THEN 230 +200 IF F(A,B(K)+1)>0 THEN 230 +210 B(K+1)=B(K)+1 +220 GOTO 280 +230 M=2 +240 IF B(1)0 THEN 90 +270 B(K+1)=Z-1 +280 NEXT K +290 F(A,B)=9-2*I-J +300 FOR K=1 TO N +310 F(A,B(K+1))=F(A,B) +320 NEXT K +330 GOTO 990 +340 A(1)=A +350 B(1)=B +360 A(2)=0:A(3)=0:B(2)=0:B(3)=0 +370 FOR K=1 TO N +380 IF M>1 THEN 460 +390 IF A(K)=1 OR B(K)=1 THEN 450 +400 IF F(A(K)-1,B(K)-1)>0 THEN 450 +410 IF F(A(K)-1,B(K))>0 AND F(A(K)-1,B(K))=F(A(K),B(K)-1) THEN 450 +420 A(K+1)=A(K)-1 +430 B(K+1)=B(K)-1 +440 GOTO 530 +450 M=2 +460 IF A(1)>A(2) AND A(1)>A(3) THEN Z1=A(1) +462 IF A(2)>A(1) AND A(2)>A(3) THEN Z1=A(2) +464 IF A(3)>A(1) AND A(3)>A(2) THEN Z1=A(3) +470 IF B(1)>B(2) AND B(1)>B(3) THEN Z2=B(1) +474 IF B(2)>B(1) AND B(2)>B(3) THEN Z2=B(2) +476 IF B(3)>B(1) AND B(3)>B(2) THEN Z2=B(3) +480 IF Z1=6 OR Z2=6 THEN 90 +490 IF F(Z1+1,Z2+1)>0 THEN 90 +500 IF F(Z1,Z2+1)>0 AND F(Z1,Z2+1)=F(Z1+1,Z2) THEN 90 +510 A(K+1)=Z1+1 +520 B(K+1)=Z2+1 +530 NEXT K +540 GOTO 950 +550 A(1)=A +560 A(2)=7:A(3)=7 +570 FOR K=1 TO N +580 IF M>1 THEN 640 +590 IF A(K)=6 THEN 630 +600 IF F(A(K)+1,B)>0 THEN 630 +610 A(K+1)=A(K)+1 +620 GOTO 680 +630 M=2 +640 IF A(1)0 THEN 90 +670 A(K+1)=Z-1 +680 NEXT K +690 F(A,B)=9-2*I-J +700 FOR K=1 TO N +710 F(A(K+1),B)=F(A,B) +720 NEXT K +730 GOTO 990 +740 A(1)=A +750 B(1)=B +760 A(2)=7:A(3)=7 +770 B(2)=0:B(3)=0 +780 FOR K=1 TO N +790 IF M>1 THEN 870 +800 IF A(K)=6 OR B(K)=1 THEN 860 +810 IF F(A(K)+1,B(K)-1)>0 THEN 860 +820 IF F(A(K)+1,B(K))>0 AND F(A(K)+1,B(K))=F(A(K),B(K)-1) THEN 860 +830 A(K+1)=A(K)+1 +840 B(K+1)=B(K)-1 +850 GOTO 940 +860 M=2 +870 IF A(1)B(2) AND B(1)>B(3) THEN Z2=B(1) +882 IF B(2)>B(1) AND B(2)>B(3) THEN Z2=B(2) +884 IF B(3)>B(1) AND B(3)>B(2) THEN Z2=B(3) +890 IF Z1=1 OR Z2=6 THEN 90 +900 IF F(Z1-1,Z2+1)>0 THEN 90 +910 IF F(Z1,Z2+1)>0 AND F(Z1,Z2+1)=F(Z1-1,Z2) THEN 90 +920 A(K+1)=Z1-1 +930 B(K+1)=Z2+1 +940 NEXT K +950 F(A,B)=9-2*I-J +960 FOR K=1 TO N +970 F(A(K+1),B(K+1))=F(A,B) +980 NEXT K +990 NEXT J +1000 NEXT I +1010 PRINT +1020 PRINT "THE FOLLOWING CODE OF THE BAD GUYS' FLEET DISPOSITION" +1030 PRINT "HAS BEEN CAPTURED BUT NOT DECODED:" +1040 PRINT +1050 FOR I=1 TO 6 +1051 FOR J=1 TO 6 +1052 H(I,J)=F(J,I) +1053 NEXT J +1054 NEXT I +1060 FOR I=1 TO 6 +1061 FOR J=1 TO 6 +1062 PRINT H(I,J); +1063 NEXT J +1064 PRINT +1065 NEXT I +1070 PRINT +1080 PRINT "DE-CODE IT AND USE IT IF YOU CAN" +1090 PRINT "BUT KEEP THE DE-CODING METHOD A SECRET." +1100 PRINT +1110 FOR I=1 TO 6 +1111 FOR J=1 TO 6 +1112 H(I,J)=0 +1113 NEXT J +1114 NEXT I +1120 FOR I=1 TO 3 +1121 L(I)=0 +1122 NEXT I +1130 C(1)=2:C(2)=2 +1140 C(3)=1:C(4)=1 +1150 C(5)=0:C(6)=0 +1160 S=0:H=0 +1170 PRINT "START GAME" +1180 INPUT X,Y +1190 IF X<1 OR X>6 OR INT(X)<>ABS(X) THEN 1210 +1200 IF Y>0 AND Y<7 AND INT(Y)=ABS(Y) THEN 1230 +1210 PRINT "INVALID INPUT. TRY AGAIN." +1220 GOTO 1180 +1230 R=7-Y +1240 C=X +1250 IF F(R,C)>0 THEN 1290 +1260 S=S+1 +1270 PRINT "SPLASH! TRY AGAIN." +1280 GOTO 1180 +1290 IF C(F(R,C))<4 THEN 1340 +1300 PRINT "THERE USED TO BE A SHIP AT THAT POINT, BUT YOU SUNK IT." +1310 PRINT "SPLASH! TRY AGAIN." +1320 S=S+1 +1330 GOTO 1180 +1340 IF H(R,C)>0 THEN 1420 +1350 H=H+1 +1360 H(R,C)=F(R,C) +1370 PRINT "A DIRECT HIT ON SHIP NUMBER";F(R,C) +1380 C(F(R,C))=C(F(R,C))+1 +1390 IF C(F(R,C))>=4 THEN 1470 +1400 PRINT "TRY AGAIN." +1410 GOTO 1180 +1420 PRINT "YOU ALREADY PUT A HOLE IN SHIP NUMBER";F(R,C); +1430 PRINT "AT THAT POINT." +1440 PRINT "SPLASH! TRY AGAIN." +1450 S=S+1 +1460 GOTO 1180 +1470 L((INT(F(R,C)-1)/2)+1)=L((INT(F(R,C)-1)/2)+1)+1 +1480 PRINT "AND YOU SUNK IT. HURRAH FOR THE GOOD GUYS." +1490 PRINT "SO FAR, THE BAD GUYS HAVE LOST" +1500 PRINT L(1);"DESTROYER(S),";L(2);"CRUISER(S), AND"; +1510 PRINT L(3);"AIRCRAFT CARRIER(S)." +1520 PRINT "YOUR CURRENT SPLASH/HIT RATIO IS";S/H +1530 IF (L(1)+L(2)+L(3))<6 THEN 1180 +1540 PRINT +1550 PRINT "YOU HAVE TOTALLY WIPED OUT THE BAD GUYS' FLEET" +1560 PRINT "WITH A FINAL SPLASH/HIT RATIO OF";S/H +1570 IF S/H>0 THEN 1590 +1580 PRINT "CONGRATULATIONS -- A DIRECT HIT EVERY TIME." +1590 PRINT +1600 PRINT "****************************" +1610 PRINT +1620 GOTO 50 +1630 END diff --git a/10 Blackjack/README.md b/10 Blackjack/README.md new file mode 100644 index 00000000..3b3466bd --- /dev/null +++ b/10 Blackjack/README.md @@ -0,0 +1,7 @@ +### Blackjack + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=18 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/10 Blackjack/blackjack.bas b/10 Blackjack/blackjack.bas new file mode 100644 index 00000000..5274d31f --- /dev/null +++ b/10 Blackjack/blackjack.bas @@ -0,0 +1,321 @@ +2 PRINT TAB(31);"BLACK JACK" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT:PRINT:PRINT +10 DEF FNA(Q)=Q+11*(Q>=22) +20 DIM P(15,12),Q(15),C(52),D(52),T(8),S(7),B(15) +30 DIM R(15) +40 REM--P(I,J) IS THE JTH CARD IN HAND I, Q(I) IS TOTAL OF HAND I +50 REM--C IS THE DECK BEING DEALT FROM, D IS THE DISCARD PILE, +60 REM--T(I) IS THE TOTAL FOR PLAYER I, S(I) IS THE TOTAL THIS HAND FOR +70 REM--PLAYER I, B(I) IS TH BET FOR HAND I +80 REM--R(I) IS THE LENGTH OF P(I,*) +90 GOTO 1500 +100 REM--SUBROUTINE TO GET A CARD. RESULT IS PUT IN X. +110 IF C<51 THEN 230 +120 PRINT "RESHUFFLING" +130 FOR D=D TO 1 STEP -1 +140 C=C-1 +150 C(C)=D(D) +160 NEXT D +170 FOR C1=52 TO C STEP -1 +180 C2=INT(RND(1)*(C1-C+1))+C +190 C3=C(C2) +200 C(C2)=C(C1) +210 C(C1)=C3 +220 NEXT C1 +230 X=C(C) +240 C=C+1 +250 RETURN +300 REM--SUBROUTINE TO EVALUATE HAND I. TOTAL IS PUT INTO +310 REM--Q(I). TOTALS HAVE THE FOLLOWING MEANING: +320 REM-- 2-10...HARD 2-10 +330 REM-- 11-21...SOFT 11-21 +340 REM-- 22-32...HARD 11-21 +350 REM-- 33+....BUSTED +360 Q=0 +370 FOR Q2=1 TO R(I) +380 X=P(I,Q2) +390 GOSUB 500 +400 NEXT Q2 +410 Q(I)=Q +420 RETURN +500 REM--SUBROUTINE TO ADD CARD X TO TOTAL Q. +510 X1=X: IF X1>10 THEN X1=10: REM SAME AS X1=10 MIN X +520 Q1=Q+X1 +530 IF Q>=11 THEN 590 +540 IF X>1 THEN 570 +550 Q=Q+11 +560 RETURN +570 Q=Q1-11*(Q1>=11) +580 RETURN +590 Q=Q1-(Q<=21 AND Q1>21) +600 IF Q<33 THEN 620 +610 Q=-1 +620 RETURN +700 REM--CARD PRINTING SUBROUTINE +710 REM D$ DEFINED ELSEWHERE +720 PRINT MID$(D$,3*X-2,3); +730 PRINT " "; +740 RETURN +750 REM--ALTERNATIVE PRINTING ROUTINE +760 PRINT " ";MID$(D$,3*X-1,2); +770 PRINT " "; +780 RETURN +800 REM--SUBROUTINE TO PLAY OUT A HAND. +810 REM--NO SPLITTING OR BLACKJACKS ALLOWED +820 H1=5 +830 GOSUB 1410 +840 H1=3 +850 ON H GOTO 950,930 +860 GOSUB 100 +870 B(I)=B(I)*2 +880 PRINT "RECEIVED A"; +890 GOSUB 700 +900 GOSUB 1100 +910 IF Q>0 THEN GOSUB 1300 +920 RETURN +930 GOSUB 1320 +940 RETURN +950 GOSUB 100 +960 PRINT "RECEIVED A"; +970 GOSUB 700 +980 GOSUB 1100 +990 IF Q<0 THEN 940 +1000 PRINT "HIT"; +1010 GOTO 830 +1100 REM--SUBROUTINE TO ADD A CARD TO ROW I +1110 R(I)=R(I)+1 +1120 P(I,R(I))=X +1130 Q=Q(I) +1140 GOSUB 500 +1150 Q(I)=Q +1160 IF Q>=0 THEN 1190 +1170 PRINT "...BUSTED" +1180 GOSUB 1200 +1190 RETURN +1200 REM--SUBROUTINE TO DISCARD ROW I +1210 IF R(I)<>0 THEN 1230 +1220 RETURN +1230 D=D+1 +1240 D(D)=P(I,R(I)) +1250 R(I)=R(I)-1 +1260 GOTO 1210 +1300 REM--PRINTS TOTAL OF HAND I +1310 PRINT +1320 AA=Q(I): GOSUB 3400 +1325 PRINT "TOTAL IS";AA +1330 RETURN +1400 REM--SUBROUTINE TO READ REPLY +1410 REM I$ DEFINED ELSEWHERE +1420 INPUT H$: H$=LEFT$(H$,1) +1430 FOR H=1 TO H1 STEP 2 +1440 IF H$=MID$(I$,H,1) THEN 1480 +1450 NEXT H +1460 PRINT "TYPE ";MID$(I$,1,H1-1);" OR ";MID$(I$,H1,2);" PLEASE"; +1470 GOTO 1420 +1480 H=(H+1)/2 +1490 RETURN +1500 REM--PROGRAM STARTS HERE +1510 REM--INITIALIZE +1520 D$="N A 2 3 4 5 6 7N 8 9 10 J Q K" +1530 I$="H,S,D,/," +1540 FOR I=1 TO 13 +1550 FOR J=4*I-3 TO 4*I +1560 D(J)=I +1570 NEXT J +1580 NEXT I +1590 D=52 +1600 C=53 +1610 PRINT "DO YOU WANT INSTRUCTIONS"; +1620 INPUT H$ +1630 IF LEFT$(H$,1)="N" OR LEFT$(H$,1)="n" THEN 1760 +1640 PRINT "THIS IS THE GAME OF 21. AS MANY AS 7 PLAYERS MAY PLAY THE" +1650 PRINT "GAME. ON EACH DEAL, BETS WILL BE ASKED FOR, AND THE" +1660 PRINT "PLAYERS' BETS SHOULD BE TYPED IN. THE CARDS WILL THEN BE" +1670 PRINT "DEALT, AND EACH PLAYER IN TURN PLAYS HIS HAND. THE" +1680 PRINT "FIRST RESPONSE SHOULD BE EITHER 'D', INDICATING THAT THE" +1690 PRINT "PLAYER IS DOUBLING DOWN, 'S', INDICATING THAT HE IS" +1700 PRINT "STANDING, 'H', INDICATING HE WANTS ANOTHER CARD, OR '/'," +1710 PRINT "INDICATING THAT HE WANTS TO SPLIT HIS CARDS. AFTER THE" +1720 PRINT "INITIAL RESPONSE, ALL FURTHER RESPONSES SHOULD BE 'S' OR" +1730 PRINT "'H', UNLESS THE CARDS WERE SPLIT, IN WHICH CASE DOUBLING" +1740 PRINT "DOWN IS AGAIN PERMITTED. IN ORDER TO COLLECT FOR" +1750 PRINT "BLACKJACK, THE INITIAL RESPONSE SHOULD BE 'S'." +1760 PRINT "NUMBER OF PLAYERS"; +1770 INPUT N +1775 PRINT +1780 IF N<1 OR N>7 OR N>INT(N) THEN 1760 +1790 FOR I=1 TO 8: T(I)=0: NEXT I +1800 D1=N+1 +1810 IF 2*D1+C>=52 THEN GOSUB 120 +1820 IF C=2 THEN C=C-1 +1830 FOR I=1 TO N: Z(I)=0: NEXT I +1840 FOR I=1 TO 15: B(I)=0: NEXT I +1850 FOR I=1 TO 15: Q(I)=0: NEXT I +1860 FOR I=1 TO 7: S(I)=0: NEXT I +1870 FOR I=1 TO 15: R(I)=0: NEXT I +1880 PRINT "BETS:" +1890 FOR I=1 TO N: PRINT "#";I;: INPUT Z(I): NEXT I +1900 FOR I=1 TO N +1910 IF Z(I)<=0 OR Z(I)>500 THEN 1880 +1920 B(I)=Z(I) +1930 NEXT I +1940 PRINT "PLAYER"; +1950 FOR I=1 TO N +1960 PRINT I;" "; +1970 NEXT I +1980 PRINT "DEALER" +1990 FOR J=1 TO 2 +2000 PRINT TAB(5); +2010 FOR I=1 TO D1 +2020 GOSUB 100 +2030 P(I,J)=X +2040 IF J=1 OR I<=N THEN GOSUB 750 +2050 NEXT I +2060 PRINT +2070 NEXT J +2080 FOR I=1 TO D1 +2090 R(I)=2 +2100 NEXT I +2110 REM--TEST FOR INSURANCE +2120 IF P(D1,1)>1 THEN 2240 +2130 PRINT "ANY INSURANCE"; +2140 INPUT H$ +2150 IF LEFT$(H$,1)<>"Y" THEN 2240 +2160 PRINT "INSURANCE BETS" +2170 FOR I=1 TO N: PRINT "#";I;: INPUT Z(I): NEXT I +2180 FOR I=1 TO N +2190 IF Z(I)<0 OR Z(I)>B(I)/2 THEN 2160 +2200 NEXT I +2210 FOR I=1 TO N +2220 S(I)=Z(I)*(3*(-(P(D1,2)>=10))-1) +2230 NEXT I +2240 REM--TEST FOR DEALER BLACKJACK +2250 L1=1: L2=1 +2252 IF P(D1,1)=1 AND P(D1,2)>9 THEN L1=0: L2=0 +2253 IF P(D1,2)=1 AND P(D1,1)>9 THEN L1=0: L2=0 +2254 IF L1<>0 OR L2<>0 THEN 2320 +2260 PRINT:PRINT "DEALER HAS A";MID$(D$,3*P(D1,2)-2,3);" IN THE HOLE "; +2270 PRINT "FOR BLACKJACK" +2280 FOR I=1 TO D1 +2290 GOSUB 300 +2300 NEXT I +2310 GOTO 3140 +2320 REM--NO DEALER BLACKJACK +2330 IF P(D1,1)>1 AND P(D1,1)<10 THEN 2350 +2340 PRINT:PRINT "NO DEALER BLACKJACK." +2350 REM--NOW PLAY THE HANDS +2360 FOR I=1 TO N +2370 PRINT "PLAYER";I; +2380 H1=7 +2390 GOSUB 1410 +2400 ON H GOTO 2550,2410,2510,2600 +2410 REM--PLAYER WANTS TO STAND +2420 GOSUB 300 +2430 IF Q(I)<>21 THEN 2490 +2440 PRINT "BLACKJACK" +2450 S(I)=S(I)+1.5*B(I) +2460 B(I)=0 +2470 GOSUB 1200 +2480 GOTO 2900 +2490 GOSUB 1320 +2500 GOTO 2900 +2510 REM--PLAYER WANTS TO DOUBLE DOWN +2520 GOSUB 300 +2530 GOSUB 860 +2540 GOTO 2900 +2550 REM--PLAYER WANTS TO BE HIT +2560 GOSUB 300 +2570 H1=3 +2580 GOSUB 950 +2590 GOTO 2900 +2600 REM--PLAYER WANTS TO SPLIT +2610 L1=P(I,1): IF P(I,1)>10 THEN L1=10 +2612 L2=P(I,2): IF P(I,2)>10 THEN L2=10 +2614 IF L1=L2 THEN 2640 +2620 PRINT "SPLITTING NOT ALLOWED." +2630 GOTO 2370 +2640 REM--PLAY OUT SPLIT +2650 I1=I+D1 +2660 R(I1)=2 +2670 P(I1,1)=P(I,2) +2680 B(I+D1)=B(I) +2690 GOSUB 100 +2700 PRINT "FIRST HAND RECEIVES A"; +2710 GOSUB 700 +2720 P(I,2)=X +2730 GOSUB 300 +2740 PRINT +2750 GOSUB 100 +2760 PRINT "SECOND HAND RECEIVES A"; +2770 I=I1 +2780 GOSUB 700 +2790 P(I,2)=X +2800 GOSUB 300 +2810 PRINT +2820 I=I1-D1 +2830 IF P(I,1)=1 THEN 2900 +2840 REM--NOW PLAY THE TWO HANDS +2850 PRINT "HAND";1-(I>D1); +2860 GOSUB 800 +2870 I=I+D1 +2880 IF I=I1 THEN 2850 +2890 I=I1-D1 +2900 NEXT I +2910 GOSUB 300 +2920 REM--TEST FOR PLAYING DEALER'S HAND +2930 FOR I=1 TO N +2940 IF R(I)>0 OR R(I+D1)>0 THEN 3010 +2950 NEXT I +2960 PRINT "DEALER HAD A"; +2970 X=P(D1,2) +2980 GOSUB 700 +2990 PRINT " CONCEALED." +3000 GOTO 3140 +3010 PRINT "DEALER HAS A";MID$(D$,3*P(D1,2)-2,3);" CONCEALED "; +3020 I=D1 +3030 AA=Q(I): GOSUB 3400 +3035 PRINT "FOR A TOTAL OF";AA +3040 IF AA>16 THEN 3130 +3050 PRINT "DRAWS"; +3060 GOSUB 100 +3070 GOSUB 750 +3080 GOSUB 1100 +3090 AA=Q: GOSUB 3400 +3095 IF Q>0 AND AA<17 THEN 3060 +3100 Q(I)=Q-(Q<0)/2 +3110 IF Q<0 THEN 3140 +3120 AA=Q: GOSUB 3400 +3125 PRINT "---TOTAL IS";AA +3130 PRINT +3140 REM--TALLY THE RESULT +3150 REM +3160 Z$="LOSES PUSHES WINS " +3165 PRINT +3170 FOR I=1 TO N +3180 AA=Q(I): GOSUB 3400 +3182 AB=Q(I+D1): GOSUB 3410 +3184 AC=Q(D1): GOSUB 3420 +3186 S(I)=S(I)+B(I)*SGN(AA-AC)+B(I+D1)*SGN(AB-AC) +3188 B(I+D1)=0 +3200 PRINT "PLAYER";I; +3210 PRINT MID$(Z$,SGN(S(I))*6+7,6);" "; +3220 IF S(I)<>0 THEN 3250 +3230 PRINT " "; +3240 GOTO 3260 +3250 PRINT ABS(S(I)); +3260 T(I)=T(I)+S(I) +3270 PRINT "TOTAL=";T(I) +3280 GOSUB 1200 +3290 T(D1)=T(D1)-S(I) +3300 I=I+D1 +3310 GOSUB 1200 +3320 I=I-D1 +3330 NEXT I +3340 PRINT "DEALER'S TOTAL=";T(D1) +3345 PRINT +3350 GOSUB 1200 +3360 GOTO 1810 +3400 AA=AA+11*(AA>=22): RETURN +3410 AB=AB+11*(AB>=22): RETURN +3420 AC=AC+11*(AC>=22): RETURN diff --git a/11 Bombardment/README.md b/11 Bombardment/README.md new file mode 100644 index 00000000..6b4f6468 --- /dev/null +++ b/11 Bombardment/README.md @@ -0,0 +1,7 @@ +### Bombardment + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=22 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/11 Bombardment/bombardment.bas b/11 Bombardment/bombardment.bas new file mode 100644 index 00000000..0c2950ce --- /dev/null +++ b/11 Bombardment/bombardment.bas @@ -0,0 +1,93 @@ +10 PRINT TAB(33);"BOMBARDMENT" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +100 PRINT "YOU ARE ON A BATTLEFIELD WITH 4 PLATOONS AND YOU" +110 PRINT "HAVE 25 OUTPOSTS AVAILABLE WHERE THEY MAY BE PLACED." +120 PRINT "YOU CAN ONLY PLACE ONE PLATOON AT ANY ONE OUTPOST." +130 PRINT "THE COMPUTER DOES THE SAME WITH ITS FOUR PLATOONS." +135 PRINT +140 PRINT "THE OBJECT OF THE GAME IS TO FIRE MISSLES AT THE" +150 PRINT "OUTPOSTS OF THE COMPUTER. IT WILL DO THE SAME TO YOU." +160 PRINT "THE ONE WHO DESTROYS ALL FOUR OF THE ENEMY'S PLATOONS" +170 PRINT "FIRST IS THE WINNER." +180 PRINT +190 PRINT "GOOD LUCK... AND TELL US WHERE YOU WANT THE BODIES SENT!" +200 PRINT +210 PRINT "TEAR OFF MATRIX AND USE IT TO CHECK OFF THE NUMBERS." +220 FOR R=1 TO 5: PRINT: NEXT R +260 DIM M(100) +270 FOR R=1 TO 5 +280 I=(R-1)*5+1 +290 PRINT I,I+1,I+2,I+3,I+4 +300 NEXT R +350 FOR R=1 TO 10: PRINT: NEXT R +380 C=INT(RND(1)*25)+1 +390 D=INT(RND(1)*25)+1 +400 E=INT(RND(1)*25)+1 +410 F=INT(RND(1)*25)+1 +420 IF C=D THEN 390 +430 IF C=E THEN 400 +440 IF C=F THEN 410 +450 IF D=E THEN 400 +460 IF D=F THEN 410 +470 IF E=F THEN 410 +480 PRINT "WHAT ARE YOUR FOUR POSITIONS"; +490 INPUT G,H,K,L +495 PRINT +500 PRINT "WHERE DO YOU WISH TO FIRE YOUR MISSLE"; +510 INPUT Y +520 IF Y=C THEN 710 +530 IF Y=D THEN 710 +540 IF Y=E THEN 710 +550 IF Y=F THEN 710 +560 GOTO 630 +570 M=INT(RND(1)*25)+1 +575 GOTO 1160 +580 IF X=G THEN 920 +590 IF X=H THEN 920 +600 IF X=L THEN 920 +610 IF X=K THEN 920 +620 GOTO 670 +630 PRINT "HA, HA YOU MISSED. MY TURN NOW:" +640 PRINT: PRINT: GOTO 570 +670 PRINT "I MISSED YOU, YOU DIRTY RAT. I PICKED";M". YOUR TURN:" +680 PRINT: PRINT: GOTO 500 +710 Q=Q+1 +720 IF Q=4 THEN 890 +730 PRINT "YOU GOT ONE OF MY OUTPOSTS!" +740 IF Q=1 THEN 770 +750 IF Q=2 THEN 810 +760 IF Q=3 THEN 850 +770 PRINT "ONE DOWN, THREE TO GO." +780 PRINT: PRINT: GOTO 570 +810 PRINT "TWO DOWN, TWO TO GO." +820 PRINT: PRINT: GOTO 570 +850 PRINT "THREE DOWN, ONE TO GO." +860 PRINT: PRINT: GOTO 570 +890 PRINT "YOU GOT ME, I'M GOING FAST. BUT I'LL GET YOU WHEN" +900 PRINT "MY TRANSISTO&S RECUP%RA*E!" +910 GOTO 1235 +920 Z=Z+1 +930 IF Z=4 THEN 1110 +940 PRINT "I GOT YOU. IT WON'T BE LONG NOW. POST";X;"WAS HIT." +950 IF Z=1 THEN 990 +960 IF Z=2 THEN 1030 +970 IF Z=3 THEN 1070 +990 PRINT "YOU HAVE ONLY THREE OUTPOSTS LEFT." +1000 PRINT: PRINT: GOTO 500 +1030 PRINT "YOU HAVE ONLY TWO OUTPOSTS LEFT." +1040 PRINT: PRINT: GOTO 500 +1070 PRINT "YOU HAVE ONLY ONE OUTPOST LEFT." +1080 PRINT: PRINT: GOTO 500 +1110 PRINT "YOU'RE DEAD. YOUR LAST OUTPOST WAS AT";X;". HA, HA, HA." +1120 PRINT "BETTER LUCK NEXT TIME." +1150 GOTO 1235 +1160 P=P+1 +1170 N=P-1 +1180 FOR T=1 TO N +1190 IF M=M(T) THEN 570 +1200 NEXT T +1210 X=M +1220 M(P)=M +1230 GOTO 580 +1235 END diff --git a/12 Bombs Away/README.md b/12 Bombs Away/README.md new file mode 100644 index 00000000..1cdb7212 --- /dev/null +++ b/12 Bombs Away/README.md @@ -0,0 +1,7 @@ +### Bombs Away + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=24 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/12 Bombs Away/bombsaway.bas b/12 Bombs Away/bombsaway.bas new file mode 100644 index 00000000..38af3edf --- /dev/null +++ b/12 Bombs Away/bombsaway.bas @@ -0,0 +1,65 @@ +8 PRINT "YOU ARE A PILOT IN A WORLD WAR II BOMBER." +10 INPUT "WHAT SIDE -- ITALY(1), ALLIES(2), JAPAN(3), GERMANY(4)";A +20 IF A>0 AND A<5 THEN 25 +22 PRINT "TRY AGAIN..." : GOTO 10 +25 ON A GOTO 30, 110, 200, 220 +30 INPUT "YOUR TARGET -- ALBANIA(1), GREECE(2), NORTH AFRICA(3)";B +40 IF B>0 AND B<4 THEN 45 +42 PRINT "TRY AGAIN..." : GOTO 30 +45 PRINT : ON B GOTO 50, 80,90 +50 PRINT "SHOULD BE EASY -- YOU'RE FLYING A NAZI-MADE PLANE." +60 GOTO 280 +80 PRINT "BE CAREFUL!!!" : GOTO 280 +90 PRINT "YOU'RE GOING FOR THE OIL, EH?" : GOTO 280 +110 INPUT "AIRCRAFT -- LIBERATOR(1), B-29(2), B-17(3), LANCASTER(4)";G +120 IF G>0 AND G<5 THEN 125 +122 PRINT "TRY AGAIN..." : GOTO 110 +125 PRINT : ON G GOTO 130, 150, 170, 190 +130 PRINT "YOU'VE GOT 2 TONS OF BOMBS FLYING FOR PLOESTI." : GOTO 280 +150 PRINT "YOU'RE DUMPING THE A-BOMB ON HIROSHIMA." : GOTO 280 +170 PRINT "YOU'RE CHASING THE BISMARK IN THE NORTH SEA." : GOTO 280 +190 PRINT "YOU'RE BUSTING A GERMAN HEAVY WATER PLANT IN THE RUHR." +195 GOTO 280 +200 PRINT "YOU'RE FLYING A KAMIKAZE MISSION OVER THE USS LEXINGTON." +205 INPUT "YOUR FIRST KAMIKAZE MISSION(Y OR N)";F$ +207 IF F$="N" THEN S=0 : GOTO 358 +210 PRINT : IF RND(1)>.65 THEN 325 +215 GOTO 380 +220 PRINT "A NAZI, EH? OH WELL. ARE YOU GOING FOR RUSSIA(1)," +230 INPUT "ENGLAND(2), OR FRANCE(3)";M : IF M>0 AND M<4 THEN 235 +232 PRINT "TRY AGAIN..." : GOTO 220 +235 PRINT : ON M GOTO 250, 260, 270 +250 PRINT "YOU'RE NEARING STALINGRAD." : GOTO 280 +260 PRINT "NEARING LONDON. BE CAREFUL, THEY'VE GOT RADAR." : GOTO 280 +270 PRINT "NEARING VERSAILLES. DUCK SOUP. THEY'RE NEARLY DEFENSELESS." +280 PRINT +285 INPUT "HOW MANY MISSIONS HAVE YOU FLOWN";D +290 IF D<160 THEN 300 +292 PRINT "MISSIONS, NOT MILES..." +295 PRINT "150 MISSIONS IS HIGH EVEN FOR OLD-TIMERS." +297 PRINT "NOW THEN, "; : GOTO 285 +300 PRINT:IF D<100 THEN 310 +305 PRINT "THAT'S PUSHING THE ODDS!" : GOTO 320 +310 IF D<25 THEN PRINT "FRESH OUT OF TRAINING, EH?" +320 PRINT : IF D<160*RND(1) THEN 330 +325 PRINT "DIRECT HIT!!!! "INT(100*RND(1))"KILLED." +327 PRINT "MISSION SUCCESSFUL." : GOTO 390 +330 PRINT "MISSED TARGET BY"INT(2+30*RND(1))"MILES!" +335 PRINT "NOW YOU'RE REALLY IN FOR IT !!" : PRINT +340 INPUT "DOES THE ENEMY HAVE GUNS(1), MISSILES(2), OR BOTH(3)";R +345 IF R>0 AND R<4 THEN 350 +347 PRINT "TRY AGAIN..." : GOTO 340 +350 PRINT : T=0 : IF R=2 THEN 360 +355 INPUT "WHAT'S THE PERCENT HIT RATE OF ENEMY GUNNERS (10 TO 50)";S +357 IF S<10 THEN PRINT "YOU LIE, BUT YOU'LL PAY...": GOTO 380 +358 PRINT +360 PRINT : IF R>1 THEN T=35 +365 IF S+T>100*RND(1) THEN 380 +370 PRINT "YOU MADE IT THROUGH TREMENDOUS FLAK!!" : GOTO 390 +380 PRINT "* * * * BOOM * * * *" +384 PRINT "YOU HAVE BEEN SHOT DOWN....." +386 PRINT "DEARLY BELOVED, WE ARE GATHERED HERE TODAY TO PAY OUR" +387 PRINT "LAST TRIBUTE..." +390 PRINT:PRINT:PRINT:INPUT "ANOTHER MISSION (Y OR N)";U$ +395 IF U$="Y" THEN 8 +400 PRINT "CHICKEN !!!" : PRINT : END diff --git a/13 Bounce/README.md b/13 Bounce/README.md new file mode 100644 index 00000000..cf17c363 --- /dev/null +++ b/13 Bounce/README.md @@ -0,0 +1,7 @@ +### Bounce + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=25 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/13 Bounce/bounce.bas b/13 Bounce/bounce.bas new file mode 100644 index 00000000..7dd04509 --- /dev/null +++ b/13 Bounce/bounce.bas @@ -0,0 +1,53 @@ +10 PRINT TAB(33);"BOUNCE" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +90 DIM T(20) +100 PRINT "THIS SIMULATION LETS YOU SPECIFY THE INITIAL VELOCITY" +110 PRINT "OF A BALL THROWN STRAIGHT UP, AND THE COEFFICIENT OF" +120 PRINT "ELASTICITY OF THE BALL. PLEASE USE A DECIMAL FRACTION" +130 PRINT "COEFFICIENCY (LESS THAN 1)." +131 PRINT +132 PRINT "YOU ALSO SPECIFY THE TIME INCREMENT TO BE USED IN" +133 PRINT "'STROBING' THE BALL'S FLIGHT (TRY .1 INITIALLY)." +134 PRINT +135 INPUT "TIME INCREMENT (SEC)";S2 +140 PRINT +150 INPUT "VELOCITY (FPS)";V +160 PRINT +170 INPUT "COEFFICIENT";C +180 PRINT +182 PRINT "FEET" +184 PRINT +186 S1=INT(70/(V/(16*S2))) +190 FOR I=1 TO S1 +200 T(I)=V*C^(I-1)/16 +210 NEXT I +220 FOR H=INT(-16*(V/32)^2+V^2/32+.5) TO 0 STEP -.5 +221 IF INT(H)<>H THEN 225 +222 PRINT H; +225 L=0 +230 FOR I=1 TO S1 +240 FOR T=0 TO T(I) STEP S2 +245 L=L+S2 +250 IF ABS(H-(.5*(-32)*T^2+V*C^(I-1)*T))>.25 THEN 270 +260 PRINT TAB(L/S2);"0"; +270 NEXT T +275 T=T(I+1)/2 +276 IF -16*T^2+V*C^(I-1)*T 0 THEN 5220 +5130 PRINT "GUTTER!!" +5220 IF B<>1 OR D<>10 THEN 5490 +5310 PRINT "STRIKE!!!!!" +5400 Q=3 +5490 IF B<>2 OR D<>10 THEN 5760 +5580 PRINT "SPARE!!!!" +5670 Q=2 +5760 IF B<>2 OR D>=10 THEN 6030 +5850 PRINT "ERROR!!!" +5940 Q=1 +6030 IF B<>1 OR D>=10 THEN 6210 +6120 PRINT "ROLL YOUR 2ND BALL" +6210 REM ARK STORAGE OF THE SCORES +6300 PRINT +6390 A(F*P,B)=D +6480 IF B=2 THEN 7020 +6570 B=2 +6660 M=D +6750 IF Q=3 THEN 6210 +6840 A(F*P,B)=D-M +6930 IF Q=0 THEN 2520 +7020 A(F*P,3)=Q +7110 NEXT P +7200 F=F+1 +7290 IF F<11 THEN 2070 +7295 PRINT "FRAMES" +7380 FOR I=1 TO 10 +7470 PRINT I; +7560 NEXT I +7650 PRINT +7740 FOR P=1 TO R +7830 FOR I=1 TO 3 +7920 FOR J=1 TO 10 +8010 PRINT A(J*P,I); +8100 NEXT J +8105 PRINT +8190 NEXT I +8280 PRINT +8370 NEXT P +8460 PRINT "DO YOU WANT ANOTHER GAME" +8550 INPUT A$ +8640 IF LEFT$(A$,1)="Y" THEN 2610 +8730 END diff --git a/15 Boxing/README.md b/15 Boxing/README.md new file mode 100644 index 00000000..380dd047 --- /dev/null +++ b/15 Boxing/README.md @@ -0,0 +1,7 @@ +### Boxing + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=28 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/15 Boxing/boxing.bas b/15 Boxing/boxing.bas new file mode 100644 index 00000000..f6d0d727 --- /dev/null +++ b/15 Boxing/boxing.bas @@ -0,0 +1,142 @@ +1 PRINT TAB(33);"BOXING" +2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +3 PRINT:PRINT:PRINT +4 PRINT "BOXING OLYMPIC STYLE (3 ROUNDS -- 2 OUT OF 3 WINS)" +5 J=0 +6 L=0 +8 PRINT +10 PRINT "WHAT IS YOUR OPPONENT'S NAME"; +20 INPUT J$ +30 PRINT "INPUT YOUR MAN'S NAME"; +40 INPUT L$ +50 PRINT "DIFFERENT PUNCHES ARE: (1) FULL SWING; (2) HOOK; (3) UPPERCUT; (4) JAB." +60 PRINT "WHAT IS YOUR MANS BEST"; +64 INPUT B +70 PRINT "WHAT IS HIS VULNERABILITY"; +80 INPUT D +90 B1=INT(4*RND(1)+1) +100 D1=INT(4*RND(1)+1) +110 IF B1=D1 THEN 90 +120 PRINT J$;"'S ADVANTAGE IS";B1;"AND VULNERABILITY IS SECRET.":PRINT +130 FOR R=1 TO 3 +140 IF J>= 2 THEN 1040 +150 IF L>=2 THEN 1060 +160 X=0 +170 Y=0 +180 PRINT "ROUND";R;"BEGINS..." +185 FOR R1= 1 TO 7 +190 I=INT(10*RND(1)+1) +200 IF I>5 THEN 600 +210 PRINT L$;"'S PUNCH"; +220 INPUT P +221 IF P=B THEN 225 +222 GOTO 230 +225 X=X+2 +230 IF P=1 THEN 340 +240 IF P=2 THEN 450 +250 IF P=3 THEN 520 +270 PRINT L$;" JABS AT ";J$"'S HEAD "; +271 IF D1=4 THEN 290 +275 C=INT(8*RND(1)+1) +280 IF C<4 THEN 310 +290 X=X+3 +300 GOTO 950 +310 PRINT "IT'S BLOCKED." +330 GOTO 950 +340 PRINT L$ " SWINGS AND "; +341 IF D1=4 THEN 410 +345 X3=INT(30*RND(1)+1) +350 IF X3<10 THEN 410 +360 PRINT "HE MISSES "; +370 PRINT +375 IF X=1 THEN 950 +380 PRINT +390 PRINT +400 GOTO 300 +410 PRINT "HE CONNECTS!" +420 IF X>35 THEN 980 +425 X=X+15 +440 GOTO 300 +450 PRINT L$;" GIVES THE HOOK... "; +455 IF D1=2 THEN 480 +460 H1=INT(2*RND(1)+1) +470 IF H1=1 THEN 500 +475 PRINT "CONNECTS..." +480 X=X+7 +490 GOTO 300 +500 PRINT "BUT IT'S BLOCKED!!!!!!!!!!!!!" +510 GOTO 300 +520 PRINT L$ " TRIES AN UPPERCUT "; +530 IF D1=3 THEN 570 +540 D5=INT(100*RND(1)+1) +550 IF D5<51 THEN 570 +560 PRINT "AND IT'S BLOCKED (LUCKY BLOCK!)" +565 GOTO 300 +570 PRINT "AND HE CONNECTS!" +580 X=X+4 +590 GOTO 300 +600 J7=INT(4*RND(1)+1) +601 IF J7 =B1 THEN 605 +602 GOTO 610 +605 Y=Y+2 +610 IF J7=1 THEN 720 +620 IF J7=2 THEN 810 +630 IF J7 =3 THEN 860 +640 PRINT J$;" JABS AND "; +645 IF D=4 THEN 700 +650 Z4=INT(7*RND(1)+1) +655 IF Z4>4 THEN 690 +660 PRINT "IT'S BLOCKED!" +670 GOTO 300 +690 PRINT " BLOOD SPILLS !!!" +700 Y=Y+5 +710 GOTO 300 +720 PRINT J$" TAKES A FULL SWING AND"; +730 IF D=1 THEN 770 +740 R6=INT(60*RND(1)+1) +745 IF R6 <30 THEN 770 +750 PRINT " IT'S BLOCKED!" +760 GOTO 300 +770 PRINT " POW!!!!! HE HITS HIM RIGHT IN THE FACE!" +780 IF Y>35 THEN 1010 +790 Y=Y+15 +800 GOTO 300 +810 PRINT J$;" GETS ";L$;" IN THE JAW (OUCH!)" +820 Y=Y+7 +830 PRINT "....AND AGAIN!" +835 Y=Y+5 +840 IF Y>35 THEN 1010 +850 PRINT +860 PRINT L$;" IS ATTACKED BY AN UPPERCUT (OH,OH)..." +865 IF D=3 THEN 890 +870 Q4=INT(200*RND(1)+1) +880 IF Q4>75 THEN 920 +890 PRINT "AND ";J$;" CONNECTS..." +900 Y=Y+8 +910 GOTO 300 +920 PRINT " BLOCKS AND HITS ";J$;" WITH A HOOK." +930 X=X+5 +940 GOTO 300 +950 NEXT R1 +951 IF X>Y THEN 955 +952 PRINT:PRINT J$" WINS ROUND" R +953 J=J+1 +954 GOTO 960 +955 PRINT:PRINT L$" WINS ROUND"R +956 L=L+1 +960 NEXT R +961 IF J>= 2 THEN 1040 +962 IF L>=2 THEN 1060 +980 PRINT J$ " IS KNOCKED COLD AND " L$" IS THE WINNER AND CHAMP!"; +1000 GOTO 1080 +1010 PRINT L$ " IS KNOCKED COLD AND " J$" IS THE WINNER AND CHAMP!"; +1030 GOTO 1000 +1040 PRINT J$ " WINS (NICE GOING," J$;")." +1050 GOTO 1000 +1060 PRINT L$ " AMAZINGLY WINS!!" +1070 GOTO 1000 +1080 PRINT +1085 PRINT +1090 PRINT "AND NOW GOODBYE FROM THE OLYMPIC ARENA." +1100 PRINT +1110 END diff --git a/16 Bug/README.md b/16 Bug/README.md new file mode 100644 index 00000000..2ce4c19a --- /dev/null +++ b/16 Bug/README.md @@ -0,0 +1,7 @@ +### Bug + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=30 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/16 Bug/bug.bas b/16 Bug/bug.bas new file mode 100644 index 00000000..ec129998 --- /dev/null +++ b/16 Bug/bug.bas @@ -0,0 +1,256 @@ +10 PRINT TAB(34);"BUG" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +40 REM +50 A=0: B=0: H=0: L=0: N=0: P=0: Q=0: R=0: S=0: T=0: U=0: V=0: Y=0 +60 PRINT "THE GAME BUG" +70 PRINT "I HOPE YOU ENJOY THIS GAME." +80 PRINT +90 PRINT "DO YOU WANT INSTRUCTIONS"; +100 INPUT Z$ +110 IF Z$="NO" THEN 300 +120 PRINT "THE OBJECT OF BUG IS TO FINISH YOUR BUG BEFORE I FINISH" +130 PRINT "MINE. EACH NUMBER STANDS FOR A PART OF THE BUG BODY." +140 PRINT "I WILL ROLL THE DIE FOR YOU, TELL YOU WHAT I ROLLED FOR YOU" +150 PRINT "WHAT THE NUMBER STANDS FOR, AND IF YOU CAN GET THE PART." +160 PRINT "IF YOU CAN GET THE PART I WILL GIVE IT TO YOU." +170 PRINT "THE SAME WILL HAPPEN ON MY TURN." +180 PRINT "IF THERE IS A CHANGE IN EITHER BUG I WILL GIVE YOU THE" +190 PRINT "OPTION OF SEEING THE PICTURES OF THE BUGS." +200 PRINT "THE NUMBERS STAND FOR PARTS AS FOLLOWS:" +210 PRINT "NUMBER","PART","NUMBER OF PART NEEDED" +220 PRINT "1","BODY","1" +230 PRINT "2","NECK","1" +240 PRINT "3","HEAD","1" +250 PRINT "4","FEELERS","2" +260 PRINT "5","TAIL","1" +270 PRINT "6","LEGS","6" +280 PRINT +290 PRINT +300 IF Y>0 THEN 2480 +310 Z=INT(6*RND(1)+1) +320 C=1 +330 PRINT "YOU ROLLED A";Z +340 ON Z GOTO 350,430,540,650,760,870 +350 PRINT "1=BODY" +360 IF B=1 THEN 410 +370 PRINT "YOU NOW HAVE A BODY." +380 B=1 +390 C=0 +400 GOTO 970 +410 PRINT "YOU DO NOT NEED A BODY." +420 GOTO 970 +430 PRINT "2=NECK" +440 IF N=1 THEN 500 +450 IF B=0 THEN 520 +460 PRINT "YOU NOW HAVE A NECK." +470 N=1 +480 C=0 +490 GOTO 970 +500 PRINT "YOU DO NOT NEED A NECK." +510 GOTO 970 +520 PRINT "YOU DO NOT HAVE A BODY." +530 GOTO 970 +540 PRINT "3=HEAD" +550 IF N=0 THEN 610 +560 IF H=1 THEN 630 +570 PRINT "YOU NEEDED A HEAD." +580 H=1 +590 C=0 +600 GOTO 970 +610 PRINT "YOU DO NOT HAVE A NECK." +620 GOTO 970 +630 PRINT "YOU HAVE A HEAD." +640 GOTO 970 +650 PRINT "4=FEELERS" +660 IF H=0 THEN 740 +670 IF A=2 THEN 720 +680 PRINT "I NOW GIVE YOU A FEELER." +690 A=A+1 +700 C=0 +710 GOTO 970 +720 PRINT "YOU HAVE TWO FEELERS ALREADY." +730 GOTO 970 +740 PRINT "YOU DO NOT HAVE A HEAD." +750 GOTO 970 +760 PRINT "5=TAIL" +770 IF B=0 THEN 830 +780 IF T=1 THEN 850 +790 PRINT "I NOW GIVE YOU A TAIL." +800 T=T+1 +810 C=0 +820 GOTO 970 +830 PRINT "YOU DO NOT HAVE A BODY." +840 GOTO 970 +850 PRINT "YOU ALREADY HAVE A TAIL." +860 GOTO 970 +870 PRINT "6=LEG" +880 IF L=6 THEN 940 +890 IF B=0 THEN 960 +900 L=L+1 +910 C=0 +920 PRINT "YOU NOW HAVE";L;"LEGS." +930 GOTO 970 +940 PRINT "YOU HAVE 6 FEET ALREADY." +950 GOTO 970 +960 PRINT "YOU DO NOT HAVE A BODY." +970 X=INT(6*RND(1)+1) +971 PRINT +975 FOR DELAY=1 TO 2000:NEXT DELAY +980 PRINT "I ROLLED A";X +990 ON X GOTO 1000,1080,1190,1300,1410,1520 +1000 PRINT "1=BODY" +1010 IF P=1 THEN 1060 +1020 PRINT "I NOW HAVE A BODY." +1030 C=0 +1040 P=1 +1050 GOTO 1630 +1060 PRINT "I DO NOT NEED A BODY." +1070 GOTO 1630 +1080 PRINT "2=NECK" +1090 IF Q=1 THEN 1150 +1100 IF P=0 THEN 1170 +1110 PRINT "I NOW HAVE A NECK." +1120 Q=1 +1130 C=0 +1140 GOTO 1630 +1150 PRINT "I DO NOT NEED A NECK." +1160 GOTO 1630 +1170 PRINT "I DO NOT HAVE A BODY." +1180 GOTO 1630 +1190 PRINT "3=HEAD" +1200 IF Q=0 THEN 1260 +1210 IF R=1 THEN 1280 +1220 PRINT "I NEEDED A HEAD." +1230 R=1 +1240 C=0 +1250 GOTO 1630 +1260 PRINT "I DO NOT HAVE A NECK." +1270 GOTO 1630 +1280 PRINT "I DO NOT NEED A HEAD." +1290 GOTO 1630 +1300 PRINT "4=FEELERS" +1310 IF R=0 THEN 1390 +1320 IF S=2 THEN 1370 +1330 PRINT "I GET A FEELER." +1340 S=S+1 +1350 C=0 +1360 GOTO 1630 +1370 PRINT "I HAVE 2 FEELERS ALREADY." +1380 GOTO 1630 +1390 PRINT "I DO NOT HAVE A HEAD." +1400 GOTO 1630 +1410 PRINT "5=TAIL" +1420 IF P=0 THEN 1480 +1430 IF U=1 THEN 1500 +1440 PRINT "I NOW HAVE A TAIL." +1450 U=1 +1460 C=0 +1470 GOTO 1630 +1480 PRINT "I DO NOT HAVE A BODY." +1490 GOTO 1630 +1500 PRINT "I DO NOT NEED A TAIL." +1510 GOTO 1630 +1520 PRINT "6=LEGS" +1530 IF V=6 THEN 1590 +1540 IF P=0 THEN 1610 +1550 V=V+1 +1560 C=0 +1570 PRINT "I NOW HAVE";V;"LEGS." +1580 GOTO 1630 +1590 PRINT,"I HAVE 6 FEET." +1600 GOTO 1630 +1610 PRINT "I DO NOT HAVE A BODY." +1620 GOTO 1630 +1630 IF A=2 AND T=1 AND L=6 THEN 1650 +1640 GOTO 1670 +1650 PRINT "YOUR BUG IS FINISHED." +1660 Y=Y+1 +1670 IF S=2 AND P=1 AND V=6 THEN 1690 +1680 GOTO 1710 +1690 PRINT "MY BUG IS FINISHED." +1700 Y=Y+2 +1710 IF C=1 THEN 300 +1720 PRINT "DO YOU WANT THE PICTURES"; +1730 INPUT Z$ +1740 IF Z$="NO" THEN 300 +1750 PRINT "*****YOUR BUG*****" +1760 PRINT +1770 PRINT +1780 IF A=0 THEN 1860 +1790 FOR Z=1 TO 4 +1800 FOR X=1 TO A +1810 PRINT TAB(10); +1820 PRINT "A "; +1830 NEXT X +1840 PRINT +1850 NEXT Z +1860 IF H=0 THEN 1880 +1870 GOSUB 2470 +1880 IF N=0 THEN 1920 +1890 FOR Z=1 TO 2 +1900 PRINT " N N" +1910 NEXT Z +1920 IF B=0 THEN 2000 +1930 PRINT " BBBBBBBBBBBB" +1940 FOR Z=1 TO 2 +1950 PRINT " B B" +1960 NEXT Z +1970 IF T<>1 THEN 1990 +1980 PRINT "TTTTTB B" +1990 PRINT " BBBBBBBBBBBB" +2000 IF L=0 THEN 2080 +2010 FOR Z=1 TO 2 +2020 PRINT TAB(5); +2030 FOR X=1 TO L +2040 PRINT " L"; +2050 NEXT X +2060 PRINT +2070 NEXT Z +2080 FOR Z=1 TO 4 +2090 PRINT +2100 NEXT Z +2110 PRINT "*****MY BUG*****" +2120 PRINT +2130 PRINT +2140 PRINT +2150 IF S=0 THEN 2230 +2160 FOR Z=1 TO 4 +2170 PRINT TAB(10); +2180 FOR X=1 TO S +2190 PRINT "F "; +2200 NEXT X +2210 PRINT +2220 NEXT Z +2230 IF R<>1 THEN 2250 +2240 GOSUB 2470 +2250 IF Q=0 THEN 2280 +2260 PRINT " N N" +2270 PRINT " N N" +2280 IF P=0 THEN 2360 +2290 PRINT " BBBBBBBBBBBB" +2300 FOR Z=1 TO 2 +2310 PRINT " B B" +2320 NEXT Z +2330 IF U<>1 THEN 2350 +2340 PRINT "TTTTTB B" +2350 PRINT " BBBBBBBBBBBB" +2360 IF V=0 THEN 2450 +2370 FOR Z=1 TO 2 +2380 PRINT TAB(5); +2390 FOR X=1 TO V +2400 PRINT " L"; +2410 NEXT X +2420 PRINT +2430 NEXT Z +2450 IF Y<>0 THEN 2540 +2460 GOTO 300 +2470 PRINT " HHHHHHH" +2480 PRINT " H H" +2490 PRINT " H O O H" +2500 PRINT " H H" +2510 PRINT " H V H" +2520 PRINT " HHHHHHH" +2530 RETURN +2540 PRINT "I HOPE YOU ENJOYED THE GAME, PLAY IT AGAIN SOON!!" +2550 END diff --git a/17 Bullfight/README.md b/17 Bullfight/README.md new file mode 100644 index 00000000..c666ea37 --- /dev/null +++ b/17 Bullfight/README.md @@ -0,0 +1,7 @@ +### Bullfight + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=32 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/17 Bullfight/bullfight.bas b/17 Bullfight/bullfight.bas new file mode 100644 index 00000000..bb2ab4f6 --- /dev/null +++ b/17 Bullfight/bullfight.bas @@ -0,0 +1,193 @@ +10 PRINT TAB(34);"BULL" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 DEF FNA(K)=INT(RND(1)*2+1) +200 PRINT:PRINT:PRINT +202 L=1 +205 PRINT "DO YOU WANT INSTRUCTIONS"; +206 INPUT Z$ +207 IF Z$="NO" THEN 400 +210 PRINT "HELLO, ALL YOU BLOODLOVERS AND AFICIONADOS." +220 PRINT "HERE IS YOUR BIG CHANCE TO KILL A BULL." +230 PRINT +240 PRINT "ON EACH PASS OF THE BULL, YOU MAY TRY" +250 PRINT "0 - VERONICA (DANGEROUS INSIDE MOVE OF THE CAPE)" +260 PRINT "1 - LESS DANGEROUS OUTSIDE MOVE OF THE CAPE" +270 PRINT "2 - ORDINARY SWIRL OF THE CAPE." +280 PRINT +290 PRINT "INSTEAD OF THE ABOVE, YOU MAY TRY TO KILL THE BULL" +300 PRINT "ON ANY TURN: 4 (OVER THE HORNS), 5 (IN THE CHEST)." +310 PRINT "BUT IF I WERE YOU," +320 PRINT "I WOULDN'T TRY IT BEFORE THE SEVENTH PASS." +330 PRINT +340 PRINT "THE CROWD WILL DETERMINE WHAT AWARD YOU DESERVE" +350 PRINT "(POSTHUMOUSLY IF NECESSARY)." +360 PRINT "THE BRAVER YOU ARE, THE BETTER THE AWARD YOU RECIEVE." +370 PRINT +380 PRINT "THE BETTER THE JOB THE PICADORES AND TOREADORES DO," +390 PRINT "THE BETTER YOUR CHANCES ARE." +400 PRINT +410 PRINT +420 D(5)=1 +430 D(4)=1 +450 DIM L$(5) +455 A=INT(RND(1)*5+1) +460 FOR I=1 TO 5 +463 READ L$(I) +467 NEXT I +470 DATA "SUPERB","GOOD","FAIR","POOR","AWFUL" +490 PRINT "YOU HAVE DRAWN A ";L$(A);" BULL." +500 IF A>4 THEN 530 +510 IF A<2 THEN 550 +520 GOTO 570 +530 PRINT "YOU'RE LUCKY." +540 GOTO 570 +550 PRINT "GOOD LUCK. YOU'LL NEED IT." +560 PRINT +570 PRINT +590 A$="PICADO" +595 B$="RES" +600 GOSUB 1610 +610 D(1)=C +630 A$="TOREAD" +635 B$="ORES" +640 GOSUB 1610 +650 D(2)=C +660 PRINT +670 PRINT +680 IF Z=1 THEN 1310 +690 D(3)=D(3)+1 +700 PRINT "PASS NUMBER";D(3) +710 IF D(3)<3 THEN 760 +720 PRINT "HERE COMES THE BULL. TRY FOR A KILL"; +730 GOSUB 1930 +735 IF Z1=1 THEN 1130 +740 PRINT "CAPE MOVE"; +750 GOTO 800 +760 PRINT "THE BULL IS CHARGING AT YOU! YOU ARE THE MATADOR--" +770 PRINT "DO YOU WANT TO KILL THE BULL"; +780 GOSUB 1930 +785 IF Z1=1 THEN 1130 +790 PRINT "WHAT MOVE DO YOU MAKE WITH THE CAPE"; +800 INPUT E +810 IF E<>INT(ABS(E)) THEN 830 +820 IF E<3 THEN 850 +830 PRINT "DON'T PANIC, YOU IDIOT! PUT DOWN A CORRECT NUMBER" +840 GOTO 800 +850 REM +860 IF E=0 THEN 920 +870 IF E=1 THEN 900 +880 M=.5 +890 GOTO 930 +900 M=2 +910 GOTO 930 +920 M=3 +930 L=L+M +940 F=(6-A+M/10)*RND(1)/((D(1)+D(2)+D(3)/10)*5) +950 IF F<.51 THEN 660 +960 PRINT "THE BULL HAS GORED YOU!" +970 ON FNA(0) GOTO 980,1010 +980 PRINT "YOU ARE DEAD." +990 D(4)=1.5 +1000 GOTO 1310 +1010 PRINT "YOU ARE STILL ALIVE.":PRINT +1020 PRINT "DO YOU RUN FROM THE RING"; +1030 GOSUB 1930 +1035 IF Z1=2 THEN 1070 +1040 PRINT "COWARD" +1050 D(4)=0 +1060 GOTO 1310 +1070 PRINT "YOU ARE BRAVE. STUPID, BUT BRAVE." +1080 ON FNA(0) GOTO 1090,1110 +1090 D(4)=2 +1100 GOTO 660 +1110 PRINT "YOU ARE GORED AGAIN!" +1120 GOTO 970 +1130 REM +1140 Z=1 +1150 PRINT:PRINT "IT IS THE MOMENT OF TRUTH.":PRINT +1155 PRINT "HOW DO YOU TRY TO KILL THE BULL"; +1160 INPUT H +1170 IF H=4 THEN 1230 +1180 IF H=5 THEN 1230 +1190 PRINT "YOU PANICKED. THE BULL GORED YOU." +1220 GOTO 970 +1230 K=(6-A)*10*RND(1)/((D(1)+D(2))*5*D(3)) +1240 IF J=4 THEN 1290 +1250 IF K>.2 THEN 960 +1260 PRINT "YOU KILLED THE BULL!" +1270 D(5)=2 +1280 GOTO 1320 +1290 IF K>.8 THEN 960 +1300 GOTO 1260 +1310 PRINT +1320 PRINT +1330 PRINT +1340 IF D(4)<>0 THEN 1390 +1350 PRINT "THE CROWD BOOS FOR TEN MINUTES. IF YOU EVER DARE TO SHOW" +1360 PRINT "YOUR FACE IN A RING AGAIN, THEY SWEAR THEY WILL KILL YOU--" +1370 PRINT "UNLES THE BULL DOES FIRST." +1380 GOTO 1580 +1390 DEF FNC(Q)=FND(Q)*RND(1) +1395 DEF FND(Q)=(4.5+L/6-(D(1)+D(2))*2.5+4*D(4)+2*D(5)-D(3)^2/120-A) +1400 IF D(4)<>2 THEN 1430 +1410 PRINT "THE CROWD CHEERS WILDLY!" +1420 GOTO 1450 +1430 IF D(5)<>2 THEN 1450 +1440 PRINT "THE CROWD CHEERS!":PRINT +1450 PRINT "THE CROWD AWARDS YOU" +1460 IF FNC(Q)<2.4 THEN 1570 +1470 IF FNC(Q)<4.9 THEN 1550 +1480 IF FNC(Q)<7.4 THEN 1520 +1500 PRINT "OLE! YOU ARE 'MUY HOMBRE'!! OLE! OLE!" +1510 GOTO 1580 +1520 PRINT "BOTH EARS OF THE BULL!" +1530 PRINT "OLE!" +1540 GOTO 1580 +1550 PRINT "ONE EAR OF THE BULL." +1560 GOTO 1580 +1570 PRINT "NOTHING AT ALL." +1580 PRINT +1590 PRINT "ADIOS":PRINT:PRINT:PRINT +1600 GOTO 2030 +1610 B=3/A*RND(1) +1620 IF B<.37 THEN 1740 +1630 IF B<.5 THEN 1720 +1640 IF B<.63 THEN 1700 +1650 IF B<.87 THEN 1680 +1660 C=.1 +1670 GOTO 1750 +1680 C=.2 +1690 GOTO 1750 +1700 C=.3 +1710 GOTO 1750 +1720 C=.4 +1730 GOTO 1750 +1740 C=.5 +1750 T=INT(10*C+.2) +1760 PRINT "THE ";A$;B$;" DID A ";L$(T);" JOB." +1770 IF 4>T THEN 1900 +1780 IF 5=T THEN 1870 +1790 ON FNA(K) GOTO 1830,1850 +1800 IF A$="TOREAD" THEN 1820 +1810 PRINT "ONE OF THE HORSES OF THE ";A$;B$;" WAS KILLED." +1820 ON FNA(K) GOTO 1830,1850 +1830 PRINT "ONE OF THE ";A$;B$;" WAS KILLED." +1840 GOTO 1900 +1850 PRINT "NO ";A$;B$;" WERE KILLED." +1860 GOTO 1900 +1870 IF A$="TOREAD" THEN 1890 +1880 PRINT FNA(K);"OF THE HORSES OF THE ";A$;B$;" KILLED." +1890 PRINT FNA(K);"OF THE ";A$;B$;" KILLED." +1900 PRINT +1910 RETURN +1920 REM +1930 INPUT A$ +1940 IF A$="YES" THEN 1990 +1950 IF A$="NO" THEN 2010 +1970 PRINT "INCORRECT ANSWER - - PLEASE TYPE 'YES' OR 'NO'." +1980 GOTO 1930 +1990 Z1=1 +2000 GOTO 2020 +2010 Z1=2 +2020 RETURN +2030 END diff --git a/18 Bullseye/README.md b/18 Bullseye/README.md new file mode 100644 index 00000000..789ad793 --- /dev/null +++ b/18 Bullseye/README.md @@ -0,0 +1,7 @@ +### Bullseye + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=34 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/18 Bullseye/bullseye.bas b/18 Bullseye/bullseye.bas new file mode 100644 index 00000000..7a5e432f --- /dev/null +++ b/18 Bullseye/bullseye.bas @@ -0,0 +1,37 @@ +5 PRINT TAB(32);"BULLSEYE" +10 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +20 PRINT:PRINT:PRINT +30 PRINT "IN THIS GAME, UP TO 20 PLAYERS THROW DARTS AT A TARGET" +40 PRINT "WITH 10, 20, 30, AND 40 POINT ZONES. THE OBJECTIVE IS" +50 PRINT "TO GET 200 POINTS.": PRINT +60 PRINT "THROW",TAB(20);"DESCRIPTION";TAB(45);"PROBABLE SCORE" +70 PRINT" 1";TAB(20);"FAST OVERARM";TAB(45);"BULLSEYE OR COMPLETE MISS" +80 PRINT" 2";TAB(20);"CONTROLLED OVERARM";TAB(45);"10, 20 OR 30 POINTS" +90 PRINT" 3";TAB(20);"UNDERARM";TAB(45);"ANYTHING":PRINT +100 DIM A$(20),S(20),W(10): M=0: R=0: FOR I=1 TO 20: S(I)=0: NEXT I +110 INPUT "HOW MANY PLAYERS";N: PRINT +120 FOR I=1 TO N +130 PRINT "NAME OF PLAYER #";I;:INPUT A$(I) +140 NEXT I +150 R=R+1: PRINT: PRINT "ROUND";R:PRINT "---------" +160 FOR I=1 TO N +170 PRINT: PRINT A$(I)"'S THROW";: INPUT T +180 IF T<0 OR T>3 THEN PRINT "INPUT 1, 2, OR 3!": GOTO 170 +190 ON T GOTO 200, 210, 200 +200 P1=.65: P2=.55: P3=.5: P4=.5: GOTO 230 +210 P1=.99: P2=.77: P3=.43: P4=.01: GOTO 230 +220 P1=.95: P2=.75: P3=.45: P4=.05 +230 U=RND(1) +240 IF U>=P1 THEN PRINT "BULLSEYE!! 40 POINTS!":B=40: GOTO 290 +250 IF U>=P2 THEN PRINT "30-POINT ZONE!":B=30: GOTO 290 +260 IF U>=P3 THEN PRINT "20-POINT ZONE":B=20: GOTO 290 +270 IF U>=P4 THEN PRINT "WHEW! 10 POINTS.":B=10: GOTO 290 +280 PRINT "MISSED THE TARGET! TOO BAD.": B=0 +290 S(I)=S(I)+B: PRINT "TOTAL SCORE =";S(I): NEXT I +300 FOR I=1 TO N +310 IF S(I)>=200 THEN M=M+1: W(M)=I +320 NEXT I +330 IF M=0 THEN 150 +340 PRINT: PRINT "WE HAVE A WINNER!!": PRINT +350 FOR I=1 TO M: PRINT A$(W(I));" SCORED";S(W(I));"POINTS.": NEXT I +360 PRINT: PRINT "THANKS FOR THE GAME.": END diff --git a/19 Bunny/README.md b/19 Bunny/README.md new file mode 100644 index 00000000..4df27297 --- /dev/null +++ b/19 Bunny/README.md @@ -0,0 +1,7 @@ +### Bunny + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=35 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/19 Bunny/bunny.bas b/19 Bunny/bunny.bas new file mode 100644 index 00000000..1d37fb4a --- /dev/null +++ b/19 Bunny/bunny.bas @@ -0,0 +1,40 @@ +10 PRINT TAB(33);"BUNNY" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT: PRINT: PRINT +100 REM "BUNNY" FROM AHL'S 'BASIC COMPUTER GAMES' +110 REM +120 FOR I=0 TO 4: READ B(I): NEXT I +130 GOSUB 260 +140 L=64: REM ASCII LETTER CODE... +150 REM +160 PRINT +170 READ X: IF X<0 THEN 160 +175 IF X>128 THEN 240 +180 PRINT TAB(X);: READ Y +190 FOR I=X TO Y: J=I-5*INT(I/5) +200 PRINT CHR$(L+B(J)); +210 NEXT I +220 GOTO 170 +230 REM +240 GOSUB 260: GOTO 450 +250 REM +260 FOR I=1 TO 6: PRINT CHR$(10);: NEXT I +270 RETURN +280 REM +290 DATA 2,21,14,14,25 +300 DATA 1,2,-1,0,2,45,50,-1,0,5,43,52,-1,0,7,41,52,-1 +310 DATA 1,9,37,50,-1,2,11,36,50,-1,3,13,34,49,-1,4,14,32,48,-1 +320 DATA 5,15,31,47,-1,6,16,30,45,-1,7,17,29,44,-1,8,19,28,43,-1 +330 DATA 9,20,27,41,-1,10,21,26,40,-1,11,22,25,38,-1,12,22,24,36,-1 +340 DATA 13,34,-1,14,33,-1,15,31,-1,17,29,-1,18,27,-1 +350 DATA 19,26,-1,16,28,-1,13,30,-1,11,31,-1,10,32,-1 +360 DATA 8,33,-1,7,34,-1,6,13,16,34,-1,5,12,16,35,-1 +370 DATA 4,12,16,35,-1,3,12,15,35,-1,2,35,-1,1,35,-1 +380 DATA 2,34,-1,3,34,-1,4,33,-1,6,33,-1,10,32,34,34,-1 +390 DATA 14,17,19,25,28,31,35,35,-1,15,19,23,30,36,36,-1 +400 DATA 14,18,21,21,24,30,37,37,-1,13,18,23,29,33,38,-1 +410 DATA 12,29,31,33,-1,11,13,17,17,19,19,22,22,24,31,-1 +420 DATA 10,11,17,18,22,22,24,24,29,29,-1 +430 DATA 22,23,26,29,-1,27,29,-1,28,29,-1,4096 +440 REM +450 END diff --git a/20 Buzzword/README.md b/20 Buzzword/README.md new file mode 100644 index 00000000..034d7e5f --- /dev/null +++ b/20 Buzzword/README.md @@ -0,0 +1,7 @@ +### Buzzword + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=36 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/20 Buzzword/buzzword.bas b/20 Buzzword/buzzword.bas new file mode 100644 index 00000000..66a0ae06 --- /dev/null +++ b/20 Buzzword/buzzword.bas @@ -0,0 +1,26 @@ +10 PRINT TAB(26);"BUZZWORD GENERATOR" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +40 PRINT "THIS PROGRAM PRINTS HIGHLY ACCEPTABLE PHRASES IN" +50 PRINT "'EDUCATOR-SPEAK'THAT YOU CAN WORK INTO REPORTS" +60 PRINT "AND SPEECHES. WHENEVER A QUESTION MARK IS PRINTED," +70 PRINT "TYPE A 'Y' FOR ANOTHER PHRASE OR 'N' TO QUIT." +80 PRINT:PRINT:PRINT "HERE'S THE FIRST PHRASE:" +90 DIM A$(40) +100 FOR I=1 TO 39 : READ A$(I) : NEXT I +110 PRINT A$(INT(13*RND(1)+1));" "; +120 PRINT A$(INT(13*RND(1)+14));" "; +130 PRINT A$(INT(13*RND(1)+27)) : PRINT +150 INPUT Y$ : IF Y$="Y" THEN 110 +160 GOTO 999 +200 DATA "ABILITY","BASAL","BEHAVIORAL","CHILD-CENTERED" +210 DATA "DIFFERENTIATED","DISCOVERY","FLEXIBLE","HETEROGENEOUS" +220 DATA "HOMOGENEOUS","MANIPULATIVE","MODULAR","TAVISTOCK" +230 DATA "INDIVIDUALIZED","LEARNING","EVALUATIVE","OBJECTIVE" +240 DATA "COGNITIVE","ENRICHMENT","SCHEDULING","HUMANISTIC" +250 DATA "INTEGRATED","NON-GRADED","TRAINING","VERTICAL AGE" +260 DATA "MOTIVATIONAL","CREATIVE","GROUPING","MODIFICATION" +270 DATA "ACCOUNTABILITY","PROCESS","CORE CURRICULUM","ALGORITHM" +280 DATA "PERFORMANCE","REINFORCEMENT","OPEN CLASSROOM","RESOURCE" +290 DATA "STRUCTURE","FACILITY","ENVIRONMENT" +999 PRINT "COME BACK WHEN YOU NEED HELP WITH ANOTHER REPORT!":END diff --git a/21 Calendar/README.md b/21 Calendar/README.md new file mode 100644 index 00000000..b6198acc --- /dev/null +++ b/21 Calendar/README.md @@ -0,0 +1,7 @@ +### Calendar + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=37 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/21 Calendar/calendar.bas b/21 Calendar/calendar.bas new file mode 100644 index 00000000..674488e5 --- /dev/null +++ b/21 Calendar/calendar.bas @@ -0,0 +1,58 @@ +10 PRINT TAB(32);"CALENDAR" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +100 REM VALUES FOR 1979 - SEE NOTES +110 DIM M(12) +120 FOR I=1 TO 6: PRINT CHR$(10);: NEXT I +130 D=1: REM 1979 STARTS ON MONDAY (0=SUN, -1=MON, -2=TUES...) +140 S=0 +150 REM READ DAYS OF EACH MONTH +160 FOR N=0 TO 12: READ M(N): NEXT N +170 REM +180 FOR N=1 TO 12 +190 PRINT: PRINT: S=S+M(N-1) +200 PRINT "**";S;TAB(7); +210 FOR I=1 TO 18: PRINT "*";: NEXT I +220 ON N GOTO 230,240,250,260,270,280,290,300,310,320,330,340 +230 PRINT " JANUARY ";: GOTO 350 +240 PRINT " FEBRUARY";: GOTO 350 +250 PRINT " MARCH ";: GOTO 350 +260 PRINT " APRIL ";: GOTO 350 +270 PRINT " MAY ";: GOTO 350 +280 PRINT " JUNE ";: GOTO 350 +290 PRINT " JULY ";: GOTO 350 +300 PRINT " AUGUST ";: GOTO 350 +310 PRINT "SEPTEMBER";: GOTO 350 +320 PRINT " OCTOBER ";: GOTO 350 +330 PRINT " NOVEMBER";: GOTO 350 +340 PRINT " DECEMBER"; +350 FOR I=1 TO 18: PRINT "*";: NEXT I +360 PRINT 365-S;"**"; +370 REM 366-S; ON LEAP YEARS +380 PRINT CHR$(10): PRINT " S M T W"; +390 PRINT " T F S" +400 PRINT +410 FOR I=1 TO 59: PRINT "*";: NEXT I +420 REM +430 FOR W=1 TO 6 +440 PRINT CHR$(10) +450 PRINT TAB(4) +460 REM +470 FOR G=1 TO 7 +480 D=D+1 +490 D2=D-S +500 IF D2>M(N) THEN 580 +510 IF D2>0 THEN PRINT D2; +520 PRINT TAB(4+8*G); +530 NEXT G +540 REM +550 IF D2=M(N) THEN 590 +560 NEXT W +570 REM +580 D=D-G +590 NEXT N +600 REM +610 FOR I=1 TO 6: PRINT CHR$(10);: NEXT I +620 DATA 0,31,28,31,30,31,30,31,31,30,31,30,31 +630 REM 0,31,29, ..., ON LEAP YEARS +640 END diff --git a/22 Change/README.md b/22 Change/README.md new file mode 100644 index 00000000..1a0f1297 --- /dev/null +++ b/22 Change/README.md @@ -0,0 +1,7 @@ +### Change + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=39 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/22 Change/change.bas b/22 Change/change.bas new file mode 100644 index 00000000..ac84db06 --- /dev/null +++ b/22 Change/change.bas @@ -0,0 +1,51 @@ +2 PRINT TAB(33);"CHANGE" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +5 PRINT:PRINT:PRINT +6 PRINT "I, YOUR FRIENDLY MICROCOMPUTER, WILL DETERMINE" +8 PRINT "THE CORRECT CHANGE FOR ITEMS COSTING UP TO $100." +9 PRINT:PRINT +10 PRINT "COST OF ITEM";:INPUT A:PRINT "AMOUNT OF PAYMENT";:INPUT P +20 C=P-A:M=C:IF C<>0 THEN 90 +25 PRINT "CORRECT AMOUNT, THANK YOU." +30 GOTO 400 +90 IF C>0 THEN 120 +95 PRINT "SORRY, YOU HAVE SHORT-CHANGED ME $";A-P +100 GOTO 10 +120 PRINT "YOUR CHANGE, $";C +130 D=INT(C/10) +140 IF D=0 THEN 155 +150 PRINT D;"TEN DOLLAR BILL(S)" +155 C=M-(D*10) +160 E=INT(C/5) +170 IF E=0 THEN 185 +180 PRINT E;"FIVE DOLLARS BILL(S)" +185 C=M-(D*10+E*5) +190 F=INT(C) +200 IF F=0 THEN 215 +210 PRINT F;"ONE DOLLAR BILL(S)" +215 C=M-(D*10+E*5+F) +220 C=C*100 +225 N=C +230 G=INT(C/50) +240 IF G=0 THEN 255 +250 PRINT G;"ONE HALF DOLLAR(S)" +255 C=N-(G*50) +260 H=INT(C/25) +270 IF H=0 THEN 285 +280 PRINT H;"QUARTER(S)" +285 C=N-(G*50+H*25) +290 I=INT(C/10) +300 IF I=0 THEN 315 +310 PRINT I;"DIME(S)" +315 C=N-(G*50+H*25+I*10) +320 J=INT(C/5) +330 IF J=0 THEN 345 +340 PRINT J;"NICKEL(S)" +345 C=N-(G*50+H*25+I*10+J*5) +350 K=INT(C+.5) +360 IF K=0 THEN 380 +370 PRINT K;"PENNY(S)" +380 PRINT "THANK YOU, COME AGAIN." +390 PRINT:PRINT +400 GOTO 10 +410 END diff --git a/23 Checkers/README.md b/23 Checkers/README.md new file mode 100644 index 00000000..178b7957 --- /dev/null +++ b/23 Checkers/README.md @@ -0,0 +1,7 @@ +### Checkers + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=40 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/23 Checkers/checkers.bas b/23 Checkers/checkers.bas new file mode 100644 index 00000000..634c2486 --- /dev/null +++ b/23 Checkers/checkers.bas @@ -0,0 +1,82 @@ +5 PRINT TAB(32);"CHECKERS" +10 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +15 PRINT:PRINT:PRINT +20 PRINT "THIS IS THE GAME OF CHECKERS. THE COMPUTER IS X," +25 PRINT "AND YOU ARE O. THE COMPUTER WILL MOVE FIRST." +30 PRINT "SQUARES ARE REFERRED TO BY A COORDINATE SYSTEM." +35 PRINT "(0,0) IS THE LOWER LEFT CORNER" +40 PRINT "(0,7) IS THE UPPER LEFT CORNER" +45 PRINT "(7,0) IS THE LOWER RIGHT CORNER" +50 PRINT "(7,7) IS THE UPPER RIGHT CORNER" +55 PRINT "THE COMPUTER WILL TYPE '+TO' WHEN YOU HAVE ANOTHER" +60 PRINT "JUMP. TYPE TWO NEGATIVE NUMBERS IF YOU CANNOT JUMP." +65 PRINT:PRINT:PRINT +80 DIM R(4),S(7,7):G=-1:R(0)=-99 +90 DATA 1,0,1,0,0,0,-1,0,0,1,0,0,0,-1,0,-1,15 +120 FOR X=0 TO 7:FOR Y=0 TO 7:READ J:IF J=15 THEN 180 +160 S(X,Y)=J:GOTO 200 +180 RESTORE:READ S(X,Y) +200 NEXT Y,X +230 FOR X=0 TO 7:FOR Y=0 TO 7:IF S(X,Y)>-1 THEN 350 +310 IF S(X,Y)=-1 THEN FOR A=-1 TO 1 STEP 2:B=G:GOSUB 650:NEXT A +330 IF S(X,Y)=-2 THEN FOR A=-1 TO 1 STEP 2:FOR B=-1 TO 1 STEP 2:GOSUB 650:NEXT B,A +350 NEXT Y,X:GOTO 1140 +650 U=X+A:V=Y+B:IF U<0 OR U>7 OR V<0 OR V>7 THEN 870 +740 IF S(U,V)=0 THEN GOSUB 910:GOTO 870 +770 IF S(U,V)<0 THEN 870 +790 U=U+A:V=V+B:IF U<0 OR V<0 OR U>7 OR V>7 THEN 870 +850 IF S(U,V)=0 THEN GOSUB 910 +870 RETURN +910 IF V=0 AND S(X,Y)=-1 THEN Q=Q+2 +920 IF ABS(Y-V)=2 THEN Q=Q+5 +960 IF Y=7 THEN Q=Q-2 +980 IF U=0 OR U=7 THEN Q=Q+1 +1030 FOR C=-1 TO 1 STEP 2:IF U+C<0 OR U+C>7 OR V+G<0 THEN 1080 +1035 IF S(U+C,V+G)<0 THEN Q=Q+1:GOTO 1080 +1040 IF U-C<0 OR U-C>7 OR V-G>7 THEN 1080 +1045 IF S(U+C,V+G)>0 AND(S(U-C,V-G)=0 OR(U-C=X AND V-G=Y))THEN Q=Q-2 +1080 NEXT C:IF Q>R(0)THEN R(0)=Q:R(1)=X:R(2)=Y:R(3)=U:R(4)=V +1100 Q=0:RETURN +1140 IF R(0)=-99 THEN 1880 +1230 PRINT CHR$(30)"FROM"R(1);R(2)"TO"R(3);R(4);:R(0)=-99 +1240 IF R(4)=0 THEN S(R(3),R(4))=-2:GOTO 1420 +1250 S(R(3),R(4))=S(R(1),R(2)) +1310 S(R(1),R(2))=0:IF ABS(R(1)-R(3))<>2 THEN 1420 +1330 S((R(1)+R(3))/2,(R(2)+R(4))/2)=0 +1340 X=R(3):Y=R(4):IF S(X,Y)=-1 THEN B=-2:FOR A=-2 TO 2 STEP 4:GOSUB 1370 +1350 IF S(X,Y)=-2 THEN FOR A=-2 TO 2 STEP 4:FOR B=-2 TO 2 STEP 4:GOSUB 1370:NEXT B +1360 NEXT A:IF R(0)<>-99 THEN PRINT"TO"R(3);R(4);:R(0)=-99:GOTO 1240 +1365 GOTO 1420 +1370 U=X+A:V=Y+B:IF U<0 OR U>7 OR V<0 OR V>7 THEN 1400 +1380 IF S(U,V)=0 AND S(X+A/2,Y+B/2)>0 THEN GOSUB 910 +1400 RETURN +1420 PRINT:PRINT:PRINT:FOR Y=7 TO 0 STEP-1:FOR X=0 TO 7:I=5*X:PRINT TAB(I); +1430 IF S(X,Y)=0 THEN PRINT"."; +1470 IF S(X,Y)=1 THEN PRINT"O"; +1490 IF S(X,Y)=-1 THEN PRINT"X"; +1510 IF S(X,Y)=-2 THEN PRINT"X*"; +1530 IF S(X,Y)=2 THEN PRINT"O*"; +1550 NEXT X:PRINT" ":PRINT:NEXT Y:PRINT +1552 FOR L=0 TO 7 +1554 FOR M=0 TO 7 +1556 IF S(L,M)=1 OR S(L,M)=2 THEN Z=1 +1558 IF S(L,M)=-1 OR S(L,M)=-2 THEN T=1 +1560 NEXT M +1562 NEXT L +1564 IF Z<>1 THEN 1885 +1566 IF T<>1 THEN 1880 +1570 Z=0: T=0 +1590 INPUT "FROM";E,H:X=E:Y=H:IF S(X,Y)<=0 THEN 1590 +1670 INPUT "TO";A,B:X=A:Y=B +1680 IF S(X,Y)=0 AND ABS(A-E)<=2 AND ABS(A-E)=ABS(B-H)THEN 1700 +1690 PRINT CHR$(7)CHR$(11);:GOTO 1670 +1700 I=46 +1750 S(A,B)=S(E,H):S(E,H)=0:IF ABS(E-A)<>2 THEN 1810 +1800 S((E+A)/2,(H+B)/2)=0 +1802 INPUT "+TO";A1,B1:IF A1<0 THEN 1810 +1804 IF S(A1,B1)<>0 OR ABS(A1-A)<>2 OR ABS(B1-B)<>2 THEN 1802 +1806 E=A:H=B:A=A1:B=B1:I=I+15:GOTO 1750 +1810 IF B=7 THEN S(A,B)=2 +1830 GOTO 230 +1880 PRINT: PRINT "YOU WIN.": END +1885 PRINT: PRINT "I WIN.": END diff --git a/24 Chemist/README.md b/24 Chemist/README.md new file mode 100644 index 00000000..bdbe8ebf --- /dev/null +++ b/24 Chemist/README.md @@ -0,0 +1,7 @@ +### Chemist + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=42 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/24 Chemist/chemist.bas b/24 Chemist/chemist.bas new file mode 100644 index 00000000..cbd8f1ce --- /dev/null +++ b/24 Chemist/chemist.bas @@ -0,0 +1,27 @@ +3 PRINT TAB(33);"CHEMIST" +6 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +8 PRINT:PRINT:PRINT +10 PRINT "THE FICTITIOUS CHECMICAL KRYPTOCYANIC ACID CAN ONLY BE" +20 PRINT "DILUTED BY THE RATIO OF 7 PARTS WATER TO 3 PARTS ACID." +30 PRINT "IF ANY OTHER RATIO IS ATTEMPTED, THE ACID BECOMES UNSTABLE" +40 PRINT "AND SOON EXPLODES. GIVEN THE AMOUNT OF ACID, YOU MUST" +50 PRINT "DECIDE WHO MUCH WATER TO ADD FOR DILUTION. IF YOU MISS" +60 PRINT "YOU FACE THE CONSEQUENCES." +100 A=INT(RND(1)*50) +110 W=7*A/3 +120 PRINT A;"LITERS OF KRYPTOCYANIC ACID. HOW MUCH WATER"; +130 INPUT R +140 D=ABS(W-R) +150 IF D>W/20 THEN 200 +160 PRINT " GOOD JOB! YOU MAY BREATHE NOW, BUT DON'T INHALE THE FUMES!" +170 PRINT +180 GOTO 100 +200 PRINT " SIZZLE! YOU HAVE JUST BEEN DESALINATED INTO A BLOB" +210 PRINT " OF QUIVERING PROTOPLASM!" +220 T=T+1 +230 IF T=9 THEN 260 +240 PRINT " HOWEVER, YOU MAY TRY AGAIN WITH ANOTHER LIFE." +250 GOTO 100 +260 PRINT " YOUR 9 LIVES ARE USED, BUT YOU WILL BE LONG REMEMBERED FOR" +270 PRINT " YOUR CONTRIBUTIONS TO THE FIELD OF COMIC BOOK CHEMISTRY." +280 END diff --git a/25 Chief/README.md b/25 Chief/README.md new file mode 100644 index 00000000..f90a7121 --- /dev/null +++ b/25 Chief/README.md @@ -0,0 +1,7 @@ +### Chief + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=43 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/25 Chief/chief.bas b/25 Chief/chief.bas new file mode 100644 index 00000000..bcf8dd88 --- /dev/null +++ b/25 Chief/chief.bas @@ -0,0 +1,51 @@ +2 PRINT TAB(30) "CHIEF" +4 PRINT TAB(15) "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT:PRINT:PRINT +10 PRINT "I AM CHIEF NUMBERS FREEK, THE GREAT INDIAN MATH GOD." +20 PRINT "ARE YOU READY TO TAKE THE TEST YOU CALLED ME OUT FOR"; +30 INPUT A$ +40 IF A$="YES" THEN 60 +50 PRINT "SHUT UP, PALE FACE WITH WISE TONGUE." +60 PRINT " TAKE A NUMBER AND ADD 3. DIVIDE THIS NUMBER BY 5 AND" +70 PRINT "MULTIPLY BY 8. DIVIDE BY 5 AND ADD THE SAME. SUBTRACT 1." +80 PRINT " WHAT DO YOU HAVE"; +90 INPUT B +100 LET C = (B+1-5)*5/8*5-3 +110 PRINT "I BET YOUR NUMBER WAS" C". AM I RIGHT"; +120 INPUT D$ +130 IF D$="YES" THEN 500 +140 PRINT "WHAT WAS YOUR ORIGINAL NUMBER"; +150 INPUT K +155 LET F=K+3 +160 LET G=F/5 +170 LET H=G*8 +180 LET I=H/5+5 +190 LET J=I-1 +200 PRINT "SO YOU THINK YOU'RE SO SMART, EH?" +210 PRINT "NOW WATCH." +230 PRINT K"PLUS 3 EQUALS"F". THIS DIVIDED BY 5 EQUALS"G";" +240 PRINT "THIS TIMES 8 EQUALS"H". IF WE DIVIDE BY 5 AND ADD 5," +250 PRINT "WE GET"I", WHICH, MINUS 1, EQUALS"J"." +260 PRINT "NOW DO YOU BELIEVE ME"; +270 INPUT Z$ +290 IF Z$="YES" THEN 500 +295 PRINT "YOU HAVE MADE ME MAD!!!" +300 PRINT "THERE MUST BE A GREAT LIGHTNING BOLT!" +310 PRINT:PRINT +330 FOR X=30 TO 22 STEP -1 +340 PRINT TAB(X) "X X" +350 NEXT X +360 PRINT TAB(21) "X XXX" +370 PRINT TAB(20) "X X" +380 PRINT TAB(19) "XX X" +390 FOR Y=20 TO 13 STEP -1 +400 PRINT TAB(Y) "X X" +410 NEXT Y +420 PRINT TAB(12) "XX" +430 PRINT TAB(11) "X" +440 PRINT TAB(10) "*" +450 PRINT:PRINT"#########################":PRINT +470 PRINT "I HOPE YOU BELIEVE ME NOW, FOR YOUR SAKE!!" +480 GOTO 520 +510 PRINT "BYE!!!" +520 END diff --git a/26 Chomp/README.md b/26 Chomp/README.md new file mode 100644 index 00000000..3774589a --- /dev/null +++ b/26 Chomp/README.md @@ -0,0 +1,7 @@ +### Chomp + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=44 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/26 Chomp/chomp.bas b/26 Chomp/chomp.bas new file mode 100644 index 00000000..26d0296b --- /dev/null +++ b/26 Chomp/chomp.bas @@ -0,0 +1,104 @@ +10 PRINT TAB(33);"CHOMP" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +40 DIM A(10,10) +100 REM *** THE GAME OF CHOMP *** COPYRIGHT PCC 1973 *** +110 PRINT +120 PRINT "THIS IS THE GAME OF CHOMP (SCIENTIFIC AMERICAN, JAN 1973)" +130 PRINT "DO YOU WANT THE RULES (1=YES, 0=NO!)"; +140 INPUT R +150 IF R=0 THEN 340 +160 F=1 +170 R=5 +180 C=7 +190 PRINT "CHOMP IS FOR 1 OR MORE PLAYERS (HUMANS ONLY)." +200 PRINT +210 PRINT "HERE'S HOW A BOARD LOOKS (THIS ONE IS 5 BY 7):" +220 GOSUB 540 +230 PRINT +240 PRINT "THE BOARD IS A BIG COOKIE - R ROWS HIGH AND C COLUMNS" +250 PRINT "WIDE. YOU INPUT R AND C AT THE START. IN THE UPPER LEFT" +260 PRINT "CORNER OF THE COOKIE IS A POISON SQUARE (P). THE ONE WHO" +270 PRINT "CHOMPS THE POISON SQUARE LOSES. TO TAKE A CHOMP, TYPE THE" +280 PRINT "ROW AND COLUMN OF ONE OF THE SQUARES ON THE COOKIE." +290 PRINT "ALL OF THE SQUARES BELOW AND TO THE RIGHT OF THAT SQUARE" +300 PRINT "(INCLUDING THAT SQUARE, TOO) DISAPPEAR -- CHOMP!!" +310 PRINT "NO FAIR CHOMPING SQUARES THAT HAVE ALREADY BEEN CHOMPED," +320 PRINT "OR THAT ARE OUTSIDE THE ORIGINAL DIMENSIONS OF THE COOKIE." +330 PRINT +340 PRINT "HERE WE GO..." +350 REM +360 F=0 +370 FOR I=1 TO 10 +372 FOR J=1 TO 10 +375 A(I,J)=0 +377 NEXT J +379 NEXT I +380 PRINT +390 PRINT "HOW MANY PLAYERS"; +400 INPUT P +410 I1=0 +420 PRINT "HOW MANY ROWS"; +430 INPUT R +440 IF R <= 9 THEN 470 +450 PRINT "TOO MANY ROWS (9 IS MAXIMUM). NOW, "; +460 GOTO 420 +470 PRINT "HOW MANY COLUMNS"; +480 INPUT C +490 IF C <= 9 THEN 530 +500 PRINT "TOO MANY COLUMNS (9 IS MAXIMUM). NOW, "; +510 GOTO 470 +530 PRINT +540 FOR I=1 TO R +550 FOR J=1 TO C +560 A(I,J)=1 +570 NEXT J +580 NEXT I +590 A(1,1)=-1 +600 REM PRINT THE BOARD +610 PRINT +620 PRINT TAB(7);"1 2 3 4 5 6 7 8 9" +630 FOR I=1 TO R +640 PRINT I;TAB(7); +650 FOR J=1 TO C +660 IF A(I,J)=-1 THEN 700 +670 IF A(I,J)=0 THEN 720 +680 PRINT "* "; +690 GOTO 710 +700 PRINT "P "; +710 NEXT J +720 PRINT +730 NEXT I +740 PRINT +750 IF F=0 THEN 770 +760 RETURN +770 REM GET CHOMPS FOR EACH PLAYER IN TURN +780 LET I1=I1+1 +790 LET P1=I1-INT(I1/P)*P +800 IF P1 <> 0 THEN 820 +810 P1=P +820 PRINT "PLAYER";P1 +830 PRINT "COORDINATES OF CHOMP (ROW,COLUMN)"; +840 INPUT R1,C1 +850 IF R1<1 THEN 920 +860 IF R1>R THEN 920 +870 IF C1<1 THEN 920 +880 IF C1>C THEN 920 +890 IF A(R1,C1)=0 THEN 920 +900 IF A(R1,C1)=-1 THEN 1010 +910 GOTO 940 +920 PRINT "NO FAIR. YOU'RE TRYING TO CHOMP ON EMPTY SPACE!" +930 GOTO 820 +940 FOR I=R1 TO R +950 FOR J=C1 TO C +960 A(I,J)=0 +970 NEXT J +980 NEXT I +990 GOTO 610 +1000 REM END OF GAME DETECTED IN LINE 900 +1010 PRINT "YOU LOSE, PLAYER";P1 +1020 PRINT +1030 PRINT "AGAIN (1=YES, 0=NO!)"; +1040 INPUT R$ +1050 IF R=1 THEN 340 +1060 END diff --git a/27 Civil War/README.md b/27 Civil War/README.md new file mode 100644 index 00000000..9f3e4126 --- /dev/null +++ b/27 Civil War/README.md @@ -0,0 +1,7 @@ +### Civil War + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=46 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/27 Civil War/civilwar.bas b/27 Civil War/civilwar.bas new file mode 100644 index 00000000..5720d767 --- /dev/null +++ b/27 Civil War/civilwar.bas @@ -0,0 +1,395 @@ +2 PRINT TAB(26) "CIVIL WAR" +4 PRINT TAB(15) "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT : PRINT : PRINT +20 REM ORIGINAL GAME DESIGN: CRAM, GOODIE, HIBBARD LEXINGTON H.S. +30 REM MODIFICATIONS: G. PAUL, R. HESS (TIES), 1973 +50 DIM S(4),C$(14),M1(14),M2(14),C1(14),C2(14),M(14) +60 REM UNION INFO ON LIKELY CONFEDERATE STRATEGY +70 S(1)=25 : S(2)=25 : S(3)=25 : S(4)=25 +82 REM READ HISTORICAL DATA. +84 FOR D=1 TO 14 +86 READ C$(D),M1(D),M2(D),C1(D),C2(D),M(D) +88 NEXT D +89 LET D=RND(-1) +90 PRINT +100 PRINT "DO YOU WANT INSTRUCTIONS"; +110 INPUT X$ +120 IF X$="YES" THEN 160 +130 IF X$="NO" THEN 370 +140 PRINT "YES OR NO -- "; +150 GOTO 110 +160 PRINT : PRINT : PRINT : PRINT +170 PRINT "THIS IS A CIVIL WAR SIMULATION." +180 PRINT "TO PLAY TYPE A RESPONSE WHEN THE COMPUTER ASKS." +190 PRINT "REMEMBER THAT ALL FACTORS ARE INTERRELATED AND THAT YOUR" +200 PRINT "RESPONSES COULD CHANGE HISTORY. FACTS AND FIGURES USED ARE" +210 PRINT "BASED ON THE ACTUAL OCCURRENCE. MOST BATTLES TEND TO RESULT" +220 PRINT "AS THEY DID IN THE CIVIL WAR, BUT IT ALL DEPENDS ON YOU!!" +230 PRINT +240 PRINT "THE OBJECT OF THE GAME IS TO WIN AS MANY BATTLES AS "; +245 PRINT "POSSIBLE." +250 PRINT +260 PRINT "YOUR CHOICES FOR DEFENSIVE STRATEGY ARE:" +270 PRINT " (1) ARTILLERY ATTACK" +280 PRINT " (2) FORTIFICATION AGAINST FRONTAL ATTACK" +290 PRINT " (3) FORTIFICATION AGAINST FLANKING MANEUVERS" +300 PRINT " (4) FALLING BACK" +310 PRINT " YOUR CHOICES FOR OFFENSIVE STRATEGY ARE:" +320 PRINT " (1) ARTILLERY ATTACK" +330 PRINT " (2) FRONTAL ATTACK" +340 PRINT " (3) FLANKING MANEUVERS" +350 PRINT " (4) ENCIRCLEMENT" +360 PRINT "YOU MAY SURRENDER BY TYPING A '5' FOR YOUR STRATEGY." +370 PRINT : PRINT : PRINT : PRINT "ARE THERE TWO GENERALS PRESENT "; +380 PRINT "(ANSWER YES OR NO)"; +390 INPUT B$ +400 IF B$="YES" THEN 430 +410 IF B$ <> "NO" THEN 380 +420 PRINT : PRINT "YOU ARE THE CONFEDERACY. GOOD LUCK!" +425 PRINT +430 LET D=1 +440 IF B$ <> "YES" THEN 460 +450 LET D=2 +460 PRINT "SELECT A BATTLE BY TYPING A NUMBER FROM 1 TO 14 ON" +470 PRINT "REQUEST. TYPE ANY OTHER NUMBER TO END THE SIMULATION." +480 PRINT "BUT '0' BRINGS BACK EXACT PREVIOUS BATTLE SITUATION" +490 PRINT "ALLOWING YOU TO REPLAY IT" +500 PRINT +510 PRINT "NOTE: A NEGATIVE FOOD$ ENTRY CAUSES THE PROGRAM TO " +520 PRINT "USE THE ENTRIES FROM THE PREVIOUS BATTLE" +530 PRINT +540 PRINT "AFTER REQUESTING A BATTLE, DO YOU WISH "; +550 PRINT "BATTLE DESCRIPTIONS "; +560 PRINT "(ANSWER YES OR NO)"; +570 INPUT X$ +580 IF X$="YES" THEN 600 +590 IF X$ <> "NO" THEN 560 +600 L=0:W=0:R1=0:Q1=0:M3=0:M4=0:P1=0:P2=0:T1=0:T2=0 +610 F(2)=0:H(2)=0:B(2)=0:R2=0:Q2=0:C6=0:F=0:W0=0:Y=0:Y2=0:U=0:U2=0 +620 PRINT : PRINT : PRINT +630 PRINT "WHICH BATTLE DO YOU WISH TO SIMULATE"; +640 INPUT A +650 IF A <> 0 THEN 660 +655 IF R <> 0 THEN 1140 +660 IF A <=0 THEN 2860 +665 IF A >= 15 THEN 2860 +670 LET C$=C$(A) +680 LET M1=M1(A) +690 LET M2=M2(A) +700 LET C1=C1(A) +710 LET C2=C2(A) +720 LET M=M(A) +960 LET U=0 +970 REM INFLATION CALC +980 LET I1=10+(L-W)*2 +990 LET I2=10+(W-L)*2 +1000 REM - MONEY AVAILABLE +1010 LET D(1)=100*INT((M1*(100-I1)/2000)*(1+(R1-Q1)/(R1+1))+.5) +1020 LET D(2)=100*INT(M2*(100-I2)/2000+.5) +1030 IF B$ <> "YES" THEN 1050 +1040 LET D(2)=100*INT((M2*(100-I2)/2000)*(1+(R2-Q2)/(R2+1))+.5) +1050 REM - MEN AVAILABLE +1060 LET M5=INT(M1*(1+(P1-T1)/(M3+1))) +1070 LET M6=INT(M2*(1+(P2-T2)/(M4+1))) +1080 LET F1=5*M1/6 +1090 PRINT : PRINT : PRINT : PRINT : PRINT +1100 PRINT "THIS IS THE BATTLE OF ";C$ +1110 IF X$="NO" THEN 1150 +1120 IF A>11 THEN 1130 +1125 ON A GOTO 3580,3620,3650,3690,3720,3750,3780,3800,3830,3860,3890 +1130 ON A-11 GOTO 3920,3950,3980 +1140 PRINT C$" INSTANT REPLAY" +1150 PRINT +1160 PRINT " ","CONFEDERACY"," UNION" +1170 PRINT "MEN"," "M5," "M6 +1180 PRINT "MONEY","$";D(1),"$";D(2) +1190 PRINT "INFLATION"," ";I1+15;"%"," ";I2;"%" +1195 PRINT +1200 REM - ONLY IN PRINTOUT IS CONFED INFLATION = I1+15% +1210 REM - IF TWO GENERALS, INPUT CONFED. FIRST +1220 FOR I=1 TO D +1230 IF B$ <> "YES" THEN 1260 +1240 IF I=2 THEN 1260 +1250 PRINT "CONFEDERATE GENERAL---"; +1260 PRINT "HOW MUCH DO YOU WISH TO SPEND FOR" +1270 PRINT " - FOOD......"; +1280 INPUT F +1290 IF F >= 0 THEN 1360 +1300 IF R1 <> 0 THEN 1330 +1310 PRINT "NO PREVIOUS ENTRIES" +1320 GOTO 1270 +1330 PRINT "ASSUME YOU WANT TO KEEP SAME ALLOCATIONS" +1340 PRINT +1350 GOTO 1510 +1360 LET F(I)=F +1370 PRINT " - SALARIES.."; +1380 INPUT H(I) +1390 LET N=1 +1400 IF H(I)<0 THEN 1490 +1410 PRINT " - AMMUNITION"; +1420 INPUT B(I) +1430 LET N=2 +1440 IF B(I)<0 THEN 1490 +1450 PRINT +1460 IF F(I)+H(I)+B(I) <= D(I) THEN 1510 +1470 PRINT "THINK AGAIN! YOU HAVE ONLY $"D(I) +1480 GOTO 1270 +1490 PRINT "NEGATIVE VALUES NOT ALLOWED." +1500 ON N GOTO 1370,1410 +1510 IF B$ <> "YES" THEN 1550 +1520 IF I=2 THEN 1550 +1530 PRINT "UNION GENERAL---"; +1540 NEXT I +1550 FOR Z=1 TO D +1560 IF B$ <> "YES" THEN 1620 +1570 ON Z GOTO 1580,1600 +1580 PRINT "CONFEDERATE "; +1590 GOTO 1620 +1600 PRINT " UNION "; +1610 REM - FIND MORALE +1620 LET O=((2*F(Z)^2+H(Z)^2)/F1^2+1) +1630 IF O<10 THEN 1660 +1640 PRINT "MORALE IS HIGH" +1650 GOTO 1700 +1660 IF O<5 THEN 1690 +1670 PRINT "MORALE IS FAIR" +1680 GOTO 1700 +1690 PRINT "MORALE IS POOR" +1700 IF B$ <> "YES" THEN 1760 +1710 LET O(Z)=O +1720 NEXT Z +1730 LET O2=O(2) +1740 LET O=O(1) +1750 PRINT "CONFEDERATE GENERAL---"; +1760 REM - ACTUAL OFF/DEF BATTLE SITUATION +1770 IF M <> 3 THEN 1800 +1780 PRINT "YOU ARE ON THE OFFENSIVE" +1790 GOTO 1840 +1800 IF M <> 1 THEN 1830 +1810 PRINT "YOU ARE ON THE DEFENSIVE" +1820 GOTO 1840 +1830 PRINT "BOTH SIDES ARE ON THE OFFENSIVE " +1840 PRINT +1850 REM - CHOOSE STRATEGIES +1860 IF B$ <> "YES" THEN 1910 +1870 FOR I=1 TO 2 +1880 ON I GOTO 1890,1920 +1890 PRINT "CONFEDERATE STRATEGY "; +1900 GOTO 1920 +1910 PRINT "YOUR STRATEGY "; +1920 INPUT Y +1930 IF ABS(Y-3)<3 THEN 1960 +1940 PRINT "STRATEGY";Y;"NOT ALLOWED." +1950 GOTO 1910 +1960 IF B$="YES" THEN 2000 +1970 IF Y=5 THEN 2830 +1980 GOSUB 3110 +1990 GOTO 2170 +2000 IF I=2 THEN 2040 +2010 LET Y1=Y +2020 PRINT "UNION STRATEGY "; +2030 NEXT I +2040 LET Y2=Y +2050 LET Y=Y1 +2060 IF Y2=5 THEN 2020 +2070 REM : SIMULATED LOSSES-NORTH +2080 LET C6=(2*C2/5)*(1+1/(2*(ABS(Y2-Y)+1))) +2090 LET C6=C6*(1.28+(5*M2/6)/(B(2)+1)) +2100 LET C6=INT(C6*(1+1/O2)+.5) +2110 REM - IF LOSS > MEN PRESENT, RESCALE LOSSES +2120 LET E2=100/O2 +2130 IF INT(C6+E2) "YES" THEN 2350 +2320 PRINT "COMPARED TO THE ACTUAL CASUALTIES AT "C$ +2330 PRINT "CONFEDERATE:"INT(100*(C5/C1)+.5)"% OF THE ORIGINAL" +2340 PRINT "UNION: "INT(100*(C6/C2)+.5)"% OF THE ORIGINAL" +2350 PRINT +2360 REM - 1 WHO ONE +2370 IF U <> 1 THEN 2380 +2375 IF U2=1 THEN 2460 +2380 IF U=1 THEN 2420 +2390 IF U2=1 THEN 2440 +2400 IF C5+E=C6+E2 THEN 2460 +2410 IF C5+E 0 THEN 3180 +3140 INPUT Y2 +3150 IF Y2 <=0 THEN 3160 +3155 IF Y2<5 THEN 3290 +3160 PRINT "ENTER 1 , 2 ,3 , OR 4 (USUALLY PREVIOUS UNION STRATEGY)" +3170 GOTO 3140 +3180 LET S0=0 +3190 LET R=100*RND(0) +3200 FOR I=1 TO 4 +3210 LET S0=S0+S(I) +3220 REM - IF ACTUAL STRATEGY INFO IS IN PROGRAM DATA STATEMENTS +3230 REM THEN R-100 IS EXTRA WEIGHT GIVEN TO THAT STATEGY. +3240 IF R72000 THEN 5 +14 D=30000 +15 E=20000 +16 F=22000 +17 PRINT "YOU ATTACK FIRST. TYPE (1) FOR ARMY; (2) FOR NAVY;" +18 PRINT "AND (3) FOR AIR FORCE." +19 INPUT Y +20 PRINT "HOW MANY MEN" +21 INPUT X +22 IF X<0 THEN 20 +23 ON Y GOTO 100,200,300 +100 IF X>A THEN 20 +105 IF XB THEN 20 +210 IF XC THEN 20 +310 IF XA THEN 1030 +1610 IF TB THEN 1030 +1710 IF TC THEN 1030 +1810 IF T>F/2 THEN 1830 +1820 GOTO 1850 +1830 PRINT "MY NAVY AND AIR FORCE IN A COMBINED ATTACK LEFT" +1831 PRINT "YOUR COUNTRY IN SHAMBLES." +1835 A=A/3 +1837 B=B/3 +1840 C=C/3 +1845 GOTO 2000 +1850 PRINT "ONE OF YOUR PLANES CRASHED INTO MY HOUSE. I AM DEAD." +1851 PRINT "MY COUNTRY FELL APART." +1860 GOTO 2010 +2000 PRINT +2001 PRINT "FROM THE RESULTS OF BOTH OF YOUR ATTACKS," +2002 IF A+B+C>3/2*(D+E+F) THEN 2010 +2005 IF A+B+C<2/3*(D+E+F) THEN 2015 +2006 PRINT "THE TREATY OF PARIS CONCLUDED THAT WE TAKE OUR" +2007 PRINT "RESPECTIVE COUNTRIES AND LIVE IN PEACE." +2008 GOTO 2020 +2010 PRINT "YOU WON, OH! SHUCKS!!!!" +2012 GOTO 2020 +2015 PRINT "YOU LOST-I CONQUERED YOUR COUNTRY. IT SERVES YOU" +2016 PRINT "RIGHT FOR PLAYING THIS STUPID GAME!!!" +2020 END diff --git a/29 Craps/README.md b/29 Craps/README.md new file mode 100644 index 00000000..673957f4 --- /dev/null +++ b/29 Craps/README.md @@ -0,0 +1,7 @@ +### Craps + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=52 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/29 Craps/craps.bas b/29 Craps/craps.bas new file mode 100644 index 00000000..eb470b27 --- /dev/null +++ b/29 Craps/craps.bas @@ -0,0 +1,82 @@ +5 PRINT TAB(33);"CRAPS" +10 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +12 PRINT:PRINT:PRINT +15 LET R=0 +20 PRINT"2,3,12 ARE LOSERS; 4,5,6,8,9,10 ARE POINTS; 7,11 ARE NATURAL WINNERS." +21 LET T=1 +22 PRINT "PICK A NUMBER AND INPUT TO ROLL DICE"; +23 INPUT Z +24 LET X=(RND(0)) +25 LET T =T+1 +26 IF T<=Z THEN 24 +27 PRINT"INPUT THE AMOUNT OF YOUR WAGER."; +28 INPUT F +30 PRINT "I WILL NOW THROW THE DICE" +40 LET E=INT(7*RND(1)) +41 LET S=INT(7*RND(1)) +42 LET X=E+S +50 IF X=7 THEN 180 +55 IF X=11 THEN 180 +60 IF X=1 THEN 40 +62 IF X=2 THEN 195 +65 IF X=0 THEN 40 +70 IF X=2 THEN 200 +80 IF X=3 THEN 200 +90 IF X=12 THEN 200 +125 IF X=5 THEN 220 +130 IF X =6 THEN 220 +140 IF X=8 THEN 220 +150 IF X=9 THEN 220 +160 IF X =10 THEN 220 +170 IF X=4 THEN 220 +180 PRINT X "- NATURAL....A WINNER!!!!" +185 PRINT X"PAYS EVEN MONEY, YOU WIN"F"DOLLARS" +190 GOTO 210 +195 PRINT X"- SNAKE EYES....YOU LOSE." +196 PRINT "YOU LOSE"F "DOLLARS." +197 LET F=0-F +198 GOTO 210 +200 PRINT X " - CRAPS...YOU LOSE." +205 PRINT "YOU LOSE"F"DOLLARS." +206 LET F=0-F +210 LET R= R+F +211 GOTO 320 +220 PRINT X "IS THE POINT. I WILL ROLL AGAIN" +230 LET H=INT(7*RND(1)) +231 LET Q=INT(7*RND(1)) +232 LET O=H+Q +240 IF O=1 THEN 230 +250 IF O=7 THEN 290 +255 IF O=0 THEN 230 +260 IF O=X THEN 310 +270 PRINT O " - NO POINT. I WILL ROLL AGAIN" +280 GOTO 230 +290 PRINT O "- CRAPS. YOU LOSE." +291 PRINT "YOU LOSE $"F +292 F=0-F +293 GOTO 210 +300 GOTO 320 +310 PRINT X"- A WINNER.........CONGRATS!!!!!!!!" +311 PRINT X "AT 2 TO 1 ODDS PAYS YOU...LET ME SEE..."2*F"DOLLARS" +312 LET F=2*F +313 GOTO 210 +320 PRINT " IF YOU WANT TO PLAY AGAIN PRINT 5 IF NOT PRINT 2"; +330 INPUT M +331 IF R<0 THEN 334 +332 IF R>0 THEN 336 +333 IF R=0 THEN 338 +334 PRINT "YOU ARE NOW UNDER $";-R +335 GOTO 340 +336 PRINT "YOU ARE NOW AHEAD $";R +337 GOTO 340 +338 PRINT "YOU ARE NOW EVEN AT 0" +340 IF M=5 THEN 27 +341 IF R<0 THEN 350 +342 IF R>0 THEN 353 +343 IF R=0 THEN 355 +350 PRINT"TOO BAD, YOU ARE IN THE HOLE. COME AGAIN." +351 GOTO 360 +353 PRINT"CONGRATULATIONS---YOU CAME OUT A WINNER. COME AGAIN!" +354 GOTO 360 +355 PRINT"CONGRATULATIONS---YOU CAME OUT EVEN, NOT BAD FOR AN AMATEUR" +360 END diff --git a/30 Cube/README.md b/30 Cube/README.md new file mode 100644 index 00000000..067606e3 --- /dev/null +++ b/30 Cube/README.md @@ -0,0 +1,7 @@ +### Cube + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=53 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/30 Cube/cube.bas b/30 Cube/cube.bas new file mode 100644 index 00000000..e661ab66 --- /dev/null +++ b/30 Cube/cube.bas @@ -0,0 +1,161 @@ +10 PRINT TAB(34);"CUBE" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT : PRINT : PRINT +100 PRINT "DO YOU WANT TO SEE THE INSTRUCTIONS? (YES--1,NO--0)" +110 INPUT B7 +120 IF B7=0 THEN 370 +130 PRINT"THIS IS A GAME IN WHICH YOU WILL BE PLAYING AGAINST THE" +140 PRINT"RANDOM DECISION OF THE COMPUTER. THE FIELD OF PLAY IS A" +150 PRINT"CUBE OF SIDE 3. ANY OF THE 27 LOCATIONS CAN BE DESIGNATED" +160 PRINT"BY INPUTING THREE NUMBERS SUCH AS 2,3,1. AT THE START," +170 PRINT"YOU ARE AUTOMATICALLY AT LOCATION 1,1,1. THE OBJECT OF" +180 PRINT"THE GAME IS TO GET TO LOCATION 3,3,3. ONE MINOR DETAIL:" +190 PRINT"THE COMPUTER WILL PICK, AT RANDOM, 5 LOCATIONS AT WHICH" +200 PRINT"IT WILL PLANT LAND MINES. IF YOU HIT ONE OF THESE LOCATIONS" +210 PRINT"YOU LOSE. ONE OTHER DETAIL: YOU MAY MOVE ONLY ONE SPACE " +220 PRINT"IN ONE DIRECTION EACH MOVE. FOR EXAMPLE: FROM 1,1,2 YOU" +230 PRINT"MAY MOVE TO 2,1,2 OR 1,1,3. YOU MAY NOT CHANGE" +240 PRINT"TWO OF THE NUMBERS ON THE SAME MOVE. IF YOU MAKE AN ILLEGAL" +250 PRINT"MOVE, YOU LOSE AND THE COMPUTER TAKES THE MONEY YOU MAY" +260 PRINT"HAVE BET ON THAT ROUND." +270 PRINT +280 PRINT +290 PRINT"ALL YES OR NO QUESTIONS WILL BE ANSWERED BY A 1 FOR YES" +300 PRINT"OR A 0 (ZERO) FOR NO." +310 PRINT +320 PRINT"WHEN STATING THE AMOUNT OF A WAGER, PRINT ONLY THE NUMBER" +330 PRINT"OF DOLLARS (EXAMPLE: 250) YOU ARE AUTOMATICALLY STARTED WITH" +340 PRINT"500 DOLLARS IN YOUR ACCOUNT." +350 PRINT +360 PRINT "GOOD LUCK!" +370 LET A1=500 +380 LET A=INT(3*(RND(X))) +390 IF A<>0 THEN 410 +400 LET A=3 +410 LET B=INT(3*(RND(X))) +420 IF B<>0 THEN 440 +430 LET B=2 +440 LET C=INT(3*(RND(X))) +450 IF C<>0 THEN 470 +460 LET C=3 +470 LET D=INT(3*(RND(X))) +480 IF D<>0 THEN 500 +490 LET D=1 +500 LET E=INT(3*(RND(X))) +510 IF E<>0 THEN 530 +520 LET E=3 +530 LET F=INT(3*(RND(X))) +540 IF F<>0 THEN 560 +550 LET F=3 +560 LET G=INT(3*(RND(X))) +570 IF G<>0 THEN 590 +580 LET G=3 +590 LET H=INT(3*(RND(X))) +600 IF H<>0 THEN 620 +610 LET H=3 +620 LET I=INT(3*(RND(X))) +630 IF I<>0 THEN 650 +640 LET I=2 +650 LET J=INT(3*(RND(X))) +660 IF J<>0 THEN 680 +670 LET J=3 +680 LET K=INT(3*(RND(X))) +690 IF K<>0 THEN 710 +700 LET K=2 +710 LET L=INT(3*(RND(X))) +720 IF L<>0 THEN 740 +730 LET L=3 +740 LET M=INT(3*(RND(X))) +750 IF M<>0 THEN 770 +760 LET M=3 +770 LET N=INT(3*(RND(X))) +780 IF N<>0 THEN 800 +790 LET N=1 +800 LET O=INT (3*(RND(X))) +810 IF O <>0 THEN 830 +820 LET O=3 +830 PRINT "WANT TO MAKE A WAGER?" +840 INPUT Z +850 IF Z=0 THEN 920 +860 PRINT "HOW MUCH "; +870 INPUT Z1 +876 IF A1W+1 THEN 1030 +950 IF P=W+1 THEN 1000 +960 IF Q>X+1 THEN 1030 +970 IF Q=(X+1) THEN 1010 +980 IF R >(Y+1) THEN 1030 +990 GOTO 1050 +1000 IF Q>= X+1 THEN 1030 +1010 IF R>=Y+1 THEN 1030 +1020 GOTO 1050 +1030 PRINT:PRINT "ILLEGAL MOVE. YOU LOSE." +1040 GOTO 1440 +1050 LET W=P +1060 LET X=Q +1070 LET Y=R +1080 IF P=3 THEN 1100 +1090 GOTO 1130 +1100 IF Q=3 THEN 1120 +1110 GOTO 1130 +1120 IF R=3 THEN 1530 +1130 IF P=A THEN 1150 +1140 GOTO 1180 +1150 IF Q=B THEN 1170 +1160 GOTO 1180 +1170 IF R=C THEN 1400 +1180 IF P=D THEN 1200 +1190 GOTO 1230 +1200 IF Q=E THEN 1220 +1210 GOTO 1230 +1220 IF R=F THEN 1400 +1230 IF P=G THEN 1250 +1240 GOTO 1280 +1250 IF Q=H THEN 1270 +1260 GOTO 1280 +1270 IF R=I THEN 1400 +1280 IF P=J THEN 1300 +1290 GOTO 1330 +1300 IF Q=K THEN 1320 +1310 GOTO 1330 +1320 IF R=L THEN 1440 +1330 IF P=M THEN 1350 +1340 GOTO 1380 +1350 IF Q=N THEN 1370 +1360 GOTO 1380 +1370 IF R=O THEN 1400 +1380 PRINT "NEXT MOVE: "; +1390 GOTO 930 +1400 PRINT"******BANG******" +1410 PRINT "YOU LOSE!" +1420 PRINT +1430 PRINT +1440 IF Z=0 THEN 1580 +1450 PRINT +1460 LET Z2=A1-Z1 +1470 IF Z2>0 THEN 1500 +1480 PRINT "YOU BUST." +1490 GOTO 1610 +1500 PRINT " YOU NOW HAVE"; Z2; "DOLLARS." +1510 LET A1=Z2 +1520 GOTO 1580 +1522 PRINT"TRIED TO FOOL ME; BET AGAIN"; +1525 GOTO 870 +1530 PRINT"CONGRATULATIONS!" +1540 IF Z=0 THEN 1580 +1550 LET Z2=A1+Z1 +1560 PRINT "YOU NOW HAVE"; Z2;"DOLLARS." +1570 LET A1=Z2 +1580 PRINT"DO YOU WANT TO TRY AGAIN "; +1590 INPUT S +1600 IF S=1 THEN 380 +1610 PRINT "TOUGH LUCK!" +1620 PRINT +1630 PRINT "GOODBYE." +1640 END diff --git a/31 Depth Charge/README.md b/31 Depth Charge/README.md new file mode 100644 index 00000000..4c11da12 --- /dev/null +++ b/31 Depth Charge/README.md @@ -0,0 +1,7 @@ +### Depth Charge + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=55 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/31 Depth Charge/depthcharge.bas b/31 Depth Charge/depthcharge.bas new file mode 100644 index 00000000..0b58467d --- /dev/null +++ b/31 Depth Charge/depthcharge.bas @@ -0,0 +1,33 @@ +2 PRINT TAB(30);"DEPTH CHARGE" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT: PRINT: PRINT +20 INPUT "DIMENSION OF SEARCH AREA";G: PRINT +30 N=INT(LOG(G)/LOG(2))+1 +40 PRINT "YOU ARE THE CAPTAIN OF THE DESTROYER USS COMPUTER" +50 PRINT "AN ENEMY SUB HAS BEEN CAUSING YOU TROUBLE. YOUR" +60 PRINT "MISSION IS TO DESTROY IT. YOU HAVE";N;"SHOTS." +70 PRINT "SPECIFY DEPTH CHARGE EXPLOSION POINT WITH A" +80 PRINT "TRIO OF NUMBERS -- THE FIRST TWO ARE THE" +90 PRINT "SURFACE COORDINATES; THE THIRD IS THE DEPTH." +100 PRINT : PRINT "GOOD LUCK !": PRINT +110 A=INT(G*RND(1)) : B=INT(G*RND(1)) : C=INT(G*RND(1)) +120 FOR D=1 TO N : PRINT : PRINT "TRIAL #";D; : INPUT X,Y,Z +130 IF ABS(X-A)+ABS(Y-B)+ABS(Z-C)=0 THEN 300 +140 GOSUB 500 : PRINT : NEXT D +200 PRINT : PRINT "YOU HAVE BEEN TORPEDOED! ABANDON SHIP!" +210 PRINT "THE SUBMARINE WAS AT";A;",";B;",";C : GOTO 400 +300 PRINT : PRINT "B O O M ! ! YOU FOUND IT IN";D;"TRIES!" +400 PRINT : PRINT: INPUT "ANOTHER GAME (Y OR N)";A$ +410 IF A$="Y" THEN 100 +420 PRINT "OK. HOPE YOU ENJOYED YOURSELF." : GOTO 600 +500 PRINT "SONAR REPORTS SHOT WAS "; +510 IF Y>B THEN PRINT "NORTH"; +520 IF YA THEN PRINT "EAST"; +540 IF XB OR X<>A THEN PRINT " AND"; +560 IF Z>C THEN PRINT " TOO LOW." +570 IF ZLEN(A$) THEN PRINT "!";:GOTO 50 +34 PRINT MID$(A$,C,1); +36 C=C+1 +50 NEXT A +53 IF M=Q THEN 60 +55 PRINT TAB(R*M+(R-N)/2); +56 NEXT M +60 PRINT +70 NEXT N +83 IF X<>1 THEN 95 +85 X=R-2:Y=1:Z=-2 +90 GOTO 20 +95 NEXT L +99 END diff --git a/33 Dice/README.md b/33 Dice/README.md new file mode 100644 index 00000000..27cc7029 --- /dev/null +++ b/33 Dice/README.md @@ -0,0 +1,7 @@ +### Dice + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=57 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/33 Dice/dice.bas b/33 Dice/dice.bas new file mode 100644 index 00000000..b74bf724 --- /dev/null +++ b/33 Dice/dice.bas @@ -0,0 +1,31 @@ +2 PRINT TAB(34);"DICE" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT:PRINT:PRINT +10 DIM F(12) +20 REM DANNY FREIDUS +30 PRINT "THIS PROGRAM SIMULATES THE ROLLING OF A" +40 PRINT "PAIR OF DICE." +50 PRINT "YOU ENTER THE NUMBER OF TIMES YOU WANT THE COMPUTER TO" +60 PRINT "'ROLL' THE DICE. WATCH OUT, VERY LARGE NUMBERS TAKE" +70 PRINT "A LONG TIME. IN PARTICULAR, NUMBERS OVER 5000." +80 FOR Q=1 TO 12 +90 F(Q)=0 +100 NEXT Q +110 PRINT:PRINT "HOW MANY ROLLS"; +120 INPUT X +130 FOR S=1 TO X +140 A=INT(6*RND(1)+1) +150 B=INT(6*RND(1)+1) +160 R=A+B +170 F(R)=F(R)+1 +180 NEXT S +185 PRINT +190 PRINT "TOTAL SPOTS","NUMBER OF TIMES" +200 FOR V=2 TO 12 +210 PRINT V,F(V) +220 NEXT V +221 PRINT +222 PRINT:PRINT "TRY AGAIN"; +223 INPUT Z$ +224 IF Z$="YES" THEN 80 +240 END diff --git a/34 Digits/README.md b/34 Digits/README.md new file mode 100644 index 00000000..e2cf78a9 --- /dev/null +++ b/34 Digits/README.md @@ -0,0 +1,7 @@ +### Digits + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=58 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/34 Digits/digits.bas b/34 Digits/digits.bas new file mode 100644 index 00000000..76fbbaff --- /dev/null +++ b/34 Digits/digits.bas @@ -0,0 +1,78 @@ +10 PRINT TAB(33);"DIGITS" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +210 PRINT "THIS IS A GAME OF GUESSING." +220 PRINT "FOR INSTRUCTIONS, TYPE '1', ELSE TYPE '0'"; +230 INPUT E +240 IF E=0 THEN 360 +250 PRINT +260 PRINT "PLEASE TAKE A PIECE OF PAPER AND WRITE DOWN" +270 PRINT "THE DIGITS '0', '1', OR '2' THIRTY TIMES AT RANDOM." +280 PRINT "ARRANGE THEM IN THREE LINES OF TEN DIGITS EACH." +290 PRINT "I WILL ASK FOR THEN TEN AT A TIME." +300 PRINT "I WILL ALWAYS GUESS THEM FIRST AND THEN LOOK AT YOUR" +310 PRINT "NEXT NUMBER TO SEE IF I WAS RIGHT. BY PURE LUCK," +320 PRINT "I OUGHT TO BE RIGHT TEN TIMES. BUT I HOPE TO DO BETTER" +330 PRINT "THAN THAT *****" +340 PRINT:PRINT +360 READ A,B,C +370 DATA 0,1,3 +380 DIM M(26,2),K(2,2),L(8,2) +400 FOR I=0 TO 26: FOR J=0 TO 2: M(I,J)=1: NEXT J: NEXT I +410 FOR I=0 TO 2: FOR J=0 TO 2: K(I,J)=9: NEXT J: NEXT I +420 FOR I=0 TO 8: FOR J=0 TO 2: L(I,J)=3: NEXT J: NEXT I +450 L(0,0)=2: L(4,1)=2: L(8,2)=2 +480 Z=26: Z1=8: Z2=2 +510 X=0 +520 FOR T=1 TO 3 +530 PRINT +540 PRINT "TEN NUMBERS, PLEASE"; +550 INPUT N(1),N(2),N(3),N(4),N(5),N(6),N(7),N(8),N(9),N(10) +560 FOR I=1 TO 10 +570 W=N(I)-1 +580 IF W=SGN(W) THEN 620 +590 PRINT "ONLY USE THE DIGITS '0', '1', OR '2'." +600 PRINT "LET'S TRY AGAIN.":GOTO 530 +620 NEXT I +630 PRINT: PRINT "MY GUESS","YOUR NO.","RESULT","NO. RIGHT":PRINT +660 FOR U=1 TO 10 +670 N=N(U): S=0 +690 FOR J=0 TO 2 +700 S1=A*K(Z2,J)+B*L(Z1,J)+C*M(Z,J) +710 IF S>S1 THEN 760 +720 IF S10 THEN 980 +940 IF X<10 THEN 1010 +950 PRINT "I GUESSED EXACTLY 1/3 OF YOUR NUMBERS." +960 PRINT "IT'S A TIE GAME." +970 GOTO 1030 +980 PRINT "I GUESSED MORE THAN 1/3 OF YOUR NUMBERS." +990 PRINT "I WIN.": FOR Q=1 TO 10: PRINT CHR$(7);: NEXT Q +1000 GOTO 1030 +1010 PRINT "I GUESSED LESS THAN 1/3 OF YOUR NUMBERS." +1020 PRINT "YOU BEAT ME. CONGRATULATIONS *****" +1030 PRINT +1040 PRINT "DO YOU WANT TO TRY AGAIN (1 FOR YES, 0 FOR NO)"; +1060 INPUT X +1070 IF X=1 THEN 400 +1080 PRINT:PRINT "THANKS FOR THE GAME." +1090 END diff --git a/35 Even Wins/README.md b/35 Even Wins/README.md new file mode 100644 index 00000000..71c7d18e --- /dev/null +++ b/35 Even Wins/README.md @@ -0,0 +1,7 @@ +### Even Wins + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=60 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/35 Even Wins/evenwins.bas b/35 Even Wins/evenwins.bas new file mode 100644 index 00000000..b1d0365d --- /dev/null +++ b/35 Even Wins/evenwins.bas @@ -0,0 +1,128 @@ +1 PRINT TAB(31);"EVEN WINS" +2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +3 PRINT:PRINT +4 Y1=0 +10 M1=0 +20 DIM M(20),Y(20) +30 PRINT " THIS IS A TWO PERSON GAME CALLED 'EVEN WINS.'" +40 PRINT "TO PLAY THE GAME, THE PLAYERS NEED 27 MARBLES OR" +50 PRINT "OTHER OBJECTS ON A TABLE." +60 PRINT +70 PRINT +80 PRINT " THE 2 PLAYERS ALTERNATE TURNS, WITH EACH PLAYER" +90 PRINT "REMOVING FROM 1 TO 4 MARBLES ON EACH MOVE. THE GAME" +100 PRINT "ENDS WHEN THERE ARE NO MARBLES LEFT, AND THE WINNER" +110 PRINT "IS THE ONE WITH AN EVEN NUMBER OF MARBLES." +120 PRINT +130 PRINT +140 PRINT " THE ONLY RULES ARE THAT (1) YOU MUST ALTERNATE TURNS," +150 PRINT "(2) YOU MUST TAKE BETWEEN 1 AND 4 MARBLES EACH TURN," +160 PRINT "AND (3) YOU CANNOT SKIP A TURN." +170 PRINT +180 PRINT +190 PRINT +200 PRINT " TYPE A '1' IF YOU WANT TO GO FIRST, AND TYPE" +210 PRINT "A '0' IF YOU WANT ME TO GO FIRST." +220 INPUT C +225 PRINT +230 IF C=0 THEN 250 +240 GOTO 1060 +250 T=27 +260 M=2 +270 PRINT:PRINT "TOTAL=";T:PRINT +280 M1=M1+M +290 T=T-M +300 PRINT "I PICK UP";M;"MARBLES." +310 IF T=0 THEN 880 +320 PRINT:PRINT "TOTAL=";T +330 PRINT +340 PRINT " AND WHAT IS YOUR NEXT MOVE, MY TOTAL IS";M1 +350 INPUT Y +360 PRINT +370 IF Y<1 THEN 1160 +380 IF Y>4 THEN 1160 +390 IF Y<=T THEN 430 +400 PRINT " YOU HAVE TRIED TO TAKE MORE MARBLES THAN THERE ARE" +410 PRINT "LEFT. TRY AGAIN." +420 GOTO 350 +430 Y1=Y1+Y +440 T=T-Y +450 IF T=0 THEN 880 +460 PRINT "TOTAL=";T +470 PRINT +480 PRINT "YOUR TOTAL IS";Y1 +490 IF T<.5 THEN 880 +500 R=T-6*INT(T/6) +510 IF INT(Y1/2)=Y1/2 THEN 700 +520 IF T<4.2 THEN 580 +530 IF R>3.4 THEN 620 +540 M=R+1 +550 M1=M1+M +560 T=T-M +570 GOTO 300 +580 M=T +590 T=T-M +600 GOTO 830 +610 REM 250 IS WHERE I WIN. +620 IF R<4.7 THEN 660 +630 IF R>3.5 THEN 660 +640 M=1 +650 GOTO 670 +660 M=4 +670 T=T-M +680 M1=M1+M +690 GOTO 300 +700 REM I AM READY TO ENCODE THE STRAT FOR WHEN OPP TOT IS EVEN +710 IF R<1.5 THEN 1020 +720 IF R>5.3 THEN 1020 +730 M=R-1 +740 M1=M1+M +750 T=T-M +760 IF T<.2 THEN 790 +770 REM IS # ZERO HERE +780 GOTO 300 +790 REM IS = ZERO HERE +800 PRINT "I PICK UP";M;"MARBLES." +810 PRINT +820 GOTO 880 +830 REM THIS IS WHERE I WIN +840 PRINT "I PICK UP";M;"MARBLES." +850 PRINT +860 PRINT "TOTAL = 0" +870 M1=M1+M +880 PRINT "THAT IS ALL OF THE MARBLES." +890 PRINT +900 PRINT " MY TOTAL IS";M1;", YOUR TOTAL IS";Y1 +910 PRINT +920 IF INT(M1/2)=M1/2 THEN 950 +930 PRINT " YOU WON. DO YOU WANT TO PLAY" +940 GOTO 960 +950 PRINT " I WON. DO YOU WANT TO PLAY" +960 PRINT "AGAIN? TYPE 1 FOR YES AND 0 FOR NO." +970 INPUT A1 +980 IF A1=0 THEN 1030 +990 M1=0 +1000 Y1=0 +1010 GOTO 200 +1020 GOTO 640 +1030 PRINT +1040 PRINT "OK. SEE YOU LATER." +1050 GOTO 1230 +1060 T=27 +1070 PRINT +1080 PRINT +1090 PRINT +1100 PRINT "TOTAL=";T +1110 PRINT +1120 PRINT +1130 PRINT "WHAT IS YOUR FIRST MOVE"; +1140 INPUT Y +1150 GOTO 360 +1160 PRINT +1170 PRINT "THE NUMBER OF MARBLES YOU TAKE MUST BE A POSITIVE" +1180 PRINT "INTEGER BETWEEN 1 AND 4." +1190 PRINT +1200 PRINT " WHAT IS YOUR NEXT MOVE?" +1210 PRINT +1220 GOTO 350 +1230 END diff --git a/35 Even Wins/gameofevenwins.bas b/35 Even Wins/gameofevenwins.bas new file mode 100644 index 00000000..673dcc90 --- /dev/null +++ b/35 Even Wins/gameofevenwins.bas @@ -0,0 +1,70 @@ +1 PRINT TAB(28);"GAME OF EVEN WINS" +2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +3 PRINT:PRINT +4 INPUT "DO YOU WANT INSTRUCTIONS (YES OR NO)";A$:PRINT +5 IF A$="NO" THEN 20 +6 PRINT "THE GAME IS PLAYED AS FOLLOWS:":PRINT +7 PRINT "AT THE BEGINNING OF THE GAME, A RANDOM NUMBER OF CHIPS ARE" +8 PRINT "PLACED ON THE BOARD. THE NUMBER OF CHIPS ALWAYS STARTS" +9 PRINT "AS AN ODD NUMBER. ON EACH TURN, A PLAYER MUST TAKE ONE," +10 PRINT "TWO, THREE, OR FOUR CHIPS. THE WINNER IS THE PLAYER WHO" +11 PRINT "FINISHES WITH A TOTAL NUMBER OF CHIPS THAT IS EVEN." +12 PRINT "THE COMPUTER STARTS OUT KNOWING ONLY THE RULES OF THE" +13 PRINT "GAME. IT GRADUALLY LEARNS TO PLAY WELL. IT SHOULD BE" +14 PRINT "DIFFICULT TO BEAT THE COMPUTER AFTER TWENTY GAMES IN A ROW." +15 PRINT "TRY IT!!!!": PRINT +16 PRINT "TO QUIT AT ANY TIME, TYPE A '0' AS YOUR MOVE.": PRINT +20 DIM R(1,5) +25 L=0: B=0 +30 FOR I=0 TO 5 +40 R(1,I)=4 +50 R(0,I)=4 +60 NEXT I +70 A=0: B=0 +90 P=INT((13*RND(1)+9)/2)*2+1 +100 IF P=1 THEN 530 +110 PRINT "THERE ARE";P;"CHIPS ON THE BOARD." +120 E1=E +130 L1=L +140 E=(A/2-INT(A/2))*2 +150 L=INT((P/6-INT(P/6))*6+.5) +160 IF R(E,L)>=P THEN 320 +170 M=R(E,L) +180 IF M<=0 THEN 370 +190 P=P-M +200 IF M=1 THEN 510 +210 PRINT "COMPUTER TAKES";M;"CHIPS LEAVING";P;"... YOUR MOVE"; +220 B=B+M +230 INPUT M +240 M=INT(M) +250 IF M<1 THEN 450 +260 IF M>4 THEN 460 +270 IF M>P THEN 460 +280 IF M=P THEN 360 +290 P=P-M +300 A=A+M +310 GOTO 100 +320 IF P=1 THEN 550 +330 PRINT "COMPUTER TAKES";P;"CHIPS." +340 R(E,L)=P +350 B=B+P +360 IF B/2=INT(B/2) THEN 420 +370 PRINT "GAME OVER ... YOU WIN!!!": PRINT +390 IF R(E,L)=1 THEN 480 +400 R(E,L)=R(E,L)-1 +410 GOTO 70 +420 PRINT "GAME OVER ... I WIN!!!": PRINT +430 GOTO 70 +450 IF M=0 THEN 570 +460 PRINT M;"IS AN ILLEGAL MOVE ... YOUR MOVE"; +470 GOTO 230 +480 IF R(E1,L1)=1 THEN 70 +490 R(E1,L1)=R(E1,L1)-1 +500 GOTO 70 +510 PRINT "COMPUTER TAKES 1 CHIP LEAVING";P;"... YOUR MOVE"; +520 GOTO 220 +530 PRINT "THERE IS 1 CHIP ON THE BOARD." +540 GOTO 120 +550 PRINT "COMPUTER TAKES 1 CHIP." +560 GOTO 340 +570 END diff --git a/36 Flip Flop/README.md b/36 Flip Flop/README.md new file mode 100644 index 00000000..689e6f7a --- /dev/null +++ b/36 Flip Flop/README.md @@ -0,0 +1,7 @@ +### Flip Flop + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=63 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/36 Flip Flop/flipflop.bas b/36 Flip Flop/flipflop.bas new file mode 100644 index 00000000..38d59879 --- /dev/null +++ b/36 Flip Flop/flipflop.bas @@ -0,0 +1,79 @@ +2 PRINT TAB(32);"FLIPFLOP" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT +10 REM *** CREATED BY MICHAEL CASS +15 DIM A$(20) +20 PRINT "THE OBJECT OF THIS PUZZLE IS TO CHANGE THIS:" +30 PRINT +40 PRINT "X X X X X X X X X X" +50 PRINT +60 PRINT "TO THIS:" +70 PRINT +80 PRINT "O O O O O O O O O O" +90 PRINT +100 PRINT "BY TYPING THE NUMBER CORRESPONDING TO THE POSITION OF THE" +110 PRINT "LETTER ON SOME NUMBERS, ONE POSITION WILL CHANGE, ON" +120 PRINT "OTHERS, TWO WILL CHANGE. TO RESET LINE TO ALL X'S, TYPE 0" +130 PRINT "(ZERO) AND TO START OVER IN THE MIDDLE OF A GAME, TYPE " +140 PRINT "11 (ELEVEN)." +170 PRINT +180 REM +190 Q=RND(1) +200 PRINT "HERE IS THE STARTING LINE OF X'S." +210 PRINT +220 C=0 +230 PRINT "1 2 3 4 5 6 7 8 9 10" +240 PRINT "X X X X X X X X X X" +250 PRINT +260 REM +270 FOR X=1 TO 10 +280 A$(X)="X" +290 NEXT X +300 GOTO 320 +310 PRINT "ILLEGAL ENTRY--TRY AGAIN." +320 PRINT "INPUT THE NUMBER"; +330 INPUT N +340 IF N<>INT(N) THEN 310 +350 IF N=11 THEN 180 +360 IF N>11 THEN 310 +370 IF N=0 THEN 230 +380 IF M=N THEN 510 +390 M=N +400 IF A$(N)="O" THEN 480 +410 A$(N)="O" +420 R=TAN(Q+N/Q-N)-SIN(Q/N)+336*SIN(8*N) +430 N=R-INT(R) +440 N=INT(10*N) +450 IF A$(N)="O" THEN 480 +460 A$(N)="O" +470 GOTO 610 +480 A$(N)="X" +490 IF M=N THEN 420 +500 GOTO 610 +510 IF A$(N)="O" THEN 590 +520 A$(N)="O" +530 R=.592*(1/TAN(Q/N+Q))/SIN(N*2+Q)-COS(N) +540 N=R-INT(R) +550 N=INT(10*N) +560 IF A$(N)="O" THEN 590 +570 A$(N)="O" +580 GOTO 610 +590 A$(N)="X" +600 IF M=N THEN 530 +610 PRINT "1 2 3 4 5 6 7 8 9 10" +620 FOR Z=1 TO 10: PRINT A$(Z);" ";: NEXT Z +630 C=C+1 +640 PRINT +650 FOR Z=1 TO 10 +660 IF A$(Z)<>"O" THEN 320 +670 NEXT Z +680 IF C>12 THEN 710 +690 PRINT "VERY GOOD. YOU GUESSED IT IN ONLY";C;"GUESSES." +700 GOTO 720 +710 PRINT "TRY HARDER NEXT TIME. IT TOOK YOU";C;"GUESSES." +720 PRINT "DO YOU WANT TO TRY ANOTHER PUZZLE"; +730 INPUT X$ +740 IF LEFT$(X$,1)="N" THEN 780 +760 PRINT +770 GOTO 180 +780 END diff --git a/37 Football/README.md b/37 Football/README.md new file mode 100644 index 00000000..ccfe99e3 --- /dev/null +++ b/37 Football/README.md @@ -0,0 +1,7 @@ +### Football + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=64 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/37 Football/football.bas b/37 Football/football.bas new file mode 100644 index 00000000..07e416a3 --- /dev/null +++ b/37 Football/football.bas @@ -0,0 +1,181 @@ +1 PRINT TAB(32);"FOOTBALL" +2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +3 PRINT:PRINT:PRINT +100 REM +120 DIM A(20),B(20),C(40),H(2),T(2),W(2),X(2),Y(2),Z(2) +130 DIM M$(2),D(2),P$(20) +140 PRINT "PRESENTING N.F.U. FOOTBALL (NO FORTRAN USED)" +145 PRINT:PRINT +150 INPUT "DO YOU WANT INSTRUCTIONS";A$ +160 IF A$="NO" THEN 290 +165 IF A$<>"YES" THEN 150 +170 PRINT "THIS IS A FOOTBALL GAME FOR TWO TEAMS IN WHICH PLAYERS MUST" +180 PRINT "PREPARE A TAPE WITH A DATA STATEMENT (1770 FOR TEAM 1," +190 PRINT "1780 FOR TEAM 2) IN WHICH EACH TEAM SCRAMBLES NOS. 1-20" +195 PRINT "THESE NUMBERS ARE THEN ASSIGNED TO TWENTY GIVEN PLAYS." +200 PRINT"A LIST OF NOS. AND THEIR PLAYS IS PROVIDED WITH" +210 PRINT "BOTH TEAMS HAVING THE SAME PLAYS. THE MORE SIMILAR THE" +220 PRINT "PLAYS THE LESS YARDAGE GAINED. SCORES ARE GIVEN" +223 PRINT "WHENEVER SCORES ARE MADE. SCORES MAY ALSO BE OBTAINED" +225 PRINT "BY INPUTTING 99,99 FOR PLAY NOS. TO PUNT OR ATTEMPT A" +227 PRINT "FIELD GOAL, INPUT 77,77 FOR PLAY NUMBERS. QUESTIONS WILL BE" +230 PRINT "ASKED THEN. ON 4TH DOWN, YOU WILL ALSO BE ASKED WHETHER" +240 PRINT "YOU WANT TO PUNT OR ATTEMPT A FIELD GOAL. IF THE ANSWER TO" +250 PRINT "BOTH QUESTIONS IS NO IT WILL BE ASSUMED YOU WANT TO" +260 PRINT "TRY AND GAIN YARDAGE. ANSWER ALL QUESTIONS YES OR NO." +270 PRINT "THE GAME IS PLAYED UNTIL PLAYERS TERMINATE (CONTROL-C)." +280 PRINT "PLEASE PREPARE A TAPE AND RUN.": STOP +290 PRINT:PRINT "PLEASE INPUT SCORE LIMIT ON GAME";:INPUT E +300 FOR I=1 TO 40: READ N: IF I>20 THEN 350 +330 A(N)=I: GOTO 360 +350 B(N)=I-20 +360 C(I)=N: NEXT I +370 FOR I=1 TO 20: READ P$(I): NEXT I +380 L=0: T=1 +410 PRINT "TEAM";T;"PLAY CHART" +420 PRINT "NO. PLAY" +430 FOR I=1 TO 20 +440 REM +450 PRINT C(I+L);TAB(6);P$(I) +460 NEXT I +630 L=L+20:T=2 +640 PRINT +650 PRINT "TEAR OFF HERE----------------------------------------------" +660 FOR X=1 TO 11: PRINT: NEXT X +670 FOR Z=1 TO 3000: NEXT Z +680 IF L=20 THEN 410 +690 D(1)=0: D(2)=3: M$(1)="--->": M$(2)="<---" +700 H(1)=0: H(2)=0: T(1)=2: T(2)=1 +710 W(1)=-1: W(2)=1: X(1)=100: X(2)=0 +720 Y(1)=1: Y(2)=-1: Z(1)=0: Z(2)=100 +725 GOSUB 1910 +730 PRINT "TEAM 1 DEFENDS 0 YD GOAL -- TEAM 2 DEFENDS 100 YD GOAL." +740 T=INT(2*RND(1)+1) +760 PRINT: PRINT "THE COIN IS FLIPPED" +765 P=X(T)-Y(T)*40 +770 GOSUB 1860: PRINT : PRINT "TEAM";T;"RECEIVES KICK-OFF" +780 K=INT(26*RND(1)+40) +790 P=P-Y(T)*K +794 IF W(T)*P"NO" THEN 830 +850 IF W(T)*P1 THEN 900 +895 IF Y(T)*(P+Y(T)*10)>=X(T) THEN 898 +897 C=4: GOTO 900 +898 C=8 +900 IF C=8 THEN 904 +901 PRINT TAB(27);10-(Y(T)*P-Y(T)*S);"YARDS TO 1ST DOWN" +902 GOTO 910 +904 PRINT TAB(27);X(T)-Y(T)*P;"YARDS" +910 GOSUB 1900: IF D=4 THEN 1180 +920 REM +930 U=INT(3*RND(0)-1): GOTO 940 +936 PRINT "ILLEGAL PLAY NUMBER, CHECK AND" +940 PRINT "INPUT OFFENSIVE PLAY, DEFENSIVE PLAY"; +950 IF T=2 THEN 970 +960 INPUT P1,P2: GOTO 975 +970 INPUT P2,P1 +975 IF P1=77 THEN 1180 +980 IF P1>20 THEN 1800 +985 IF P1<1 THEN 1800 +990 IF P2>20 THEN 1800 +992 IF P2<1 THEN 1800 +995 P1=INT(P1): P2=INT(P2) +1000 Y=INT(ABS(A(P1)-B(P2))/19*((X(T)-Y(T)*P+25)*RND(1)-15)) +1005 PRINT: IF T=2 THEN 1015 +1010 IF A(P1)<11 THEN 1048 +1012 GOTO 1020 +1015 IF B(P2)<11 THEN 1048 +1020 IF U<>0 THEN 1035 +1025 PRINT "PASS INCOMPLETE TEAM";T +1030 Y=0: GOTO 1050 +1035 G=RND(1): IF G>.025 THEN 1040 +1037 IF Y>2 THEN 1045 +1040 PRINT "QUARTERBACK SCRAMBLED": GOTO 1050 +1045 PRINT "PASS COMPLETED": GOTO 1050 +1048 PRINT "THE BALL WAS RUN" +1050 P=P-W(T)*Y +1060 PRINT: PRINT "NET YARDS GAINED ON DOWN";D;"ARE ";Y +1070 G=RND(1): IF G>.025 THEN 1110 +1080 PRINT: PRINT "** LOSS OF POSSESSION FROM TEAM";T;"TO TEAM";T(T) +1100 GOSUB 1850: PRINT: T=T(T): GOTO 830 +1110 IF Y(T)*P>=X(T) THEN 1320 +1120 IF W(T)*P>=Z(T) THEN 1230 +1130 IF Y(T)*P-Y(T)*S>=10 THEN 880 +1140 D=D+1: IF D<>5 THEN 885 +1160 PRINT: PRINT "CONVERSION UNSUCCESSFUL TEAM";T:T=T(T) +1170 GOSUB 1850: GOTO 880 +1180 PRINT "DOES TEAM";T;"WANT TO PUNT";: INPUT A$ +1185 IF A$="NO" THEN 1200 +1187 IF A$<>"YES" THEN 1180 +1190 PRINT:PRINT "TEAM";T;"WILL PUNT": G=RND(1): IF G<.025 THEN 1080 +1195 GOSUB 1850: K=INT(25*RND(1)+35): T=T(T): GOTO 790 +1200 PRINT "DOES TEAM";T;"WANT TO ATTEMPT A FIELD GOAL";: INPUT A$ +1210 IF A$="YES" THEN 1640 +1215 IF A$<>"NO" THEN 1200 +1217 GOTO 920 +1230 PRINT: PRINT "SAFETY AGAINST TEAM";T;"**********************OH-OH" +1240 H(T(T))=H(T(T))+2: GOSUB 1810 +1280 PRINT"TEAM";T;"DO YOU WANT TO PUNT INSTEAD OF A KICKOFF";:INPUT A$ +1290 P=Z(T)-W(T)*20: IF A$="YES" THEN 1190 +1320 PRINT: PRINT "TOUCHDOWN BY TEAM";T;"*********************YEA TEAM" +1340 Q=7: G=RND(1): IF G>.1 THEN 1380 +1360 Q=6: PRINT "EXTRA POINT NO GOOD": GOTO 1390 +1380 PRINT "EXTRA POINT GOOD" +1390 H(T)=H(T)+Q: GOSUB 1810 +1420 T=T(T): GOTO 765 +1430 K=INT(9*RND(0)+1) +1440 R=INT(((X(T)-Y(T)*P+25)*RND(1)-15)/K) +1460 P=P-W(T)*R +1480 PRINT:PRINT "RUNBACK TEAM";T;R;"YARDS" +1485 G=RND(1): IF G<.025 THEN 1080 +1490 IF Y(T)*P>=X(T) THEN 1320 +1500 IF W(T)*P>=Z(T) THEN 1230 +1510 GOTO 880 +1640 PRINT: PRINT "TEAM";T;"WILL ATTEMPT A FIELD GOAL" +1645 G=RND(1): IF G<.025 THEN 1080 +1650 F=INT(35*RND(1)+20) +1660 PRINT: PRINT "KICK IS";F;"YARDS LONG" +1680 P=P-W(T)*F: G=RND(1) +1690 IF G<.35 THEN 1735 +1700 IF Y(T)*P99 THEN 936 +1810 PRINT: PRINT "TEAM 1 SCORE IS";H(1) +1820 PRINT "TEAM 2 SCORE IS";H(2): PRINT +1825 IF H(T)=50 THEN 700 +630 LET Y=INT(50*RND(1)^2)+(1-P)*INT(50*RND(1)^4) +640 LET X=X+FNF(1)*Y +650 IF ABS(X-50)>=50 THEN 655 +651 PRINT Y;L$(3);" RUNBACK" +652 GOTO 720 +655 PRINT L$(4); +660 GOTO 2600 +700 PRINT "TOUCHBACK FOR ";O$(P);"." +710 LET X=20+P*60 +720 REM FIRST DOWN +730 GOSUB 800 +740 LET X1=X +750 LET D=1 +760 PRINT:PRINT "FIRST DOWN ";O$(P);"***" +770 PRINT +780 PRINT +790 GOTO 860 +800 REM PRINT POSITION +810 IF X>50 THEN 840 +820 PRINT L$(5);O$(0);X;L$(6) +830 GOTO 850 +840 PRINT L$(5);O$(1);100-X;L$(6) +850 RETURN +860 REM NEW PLAY +870 LET T=T+1 +880 IF T=30 THEN 1060 +890 IF T<50 THEN 940 +900 IF RND(1)>.2 THEN 940 +910 PRINT "END OF GAME ***" +920 PRINT "FINAL SCORE: ";O$(0);": ";S(0);" ";O$(1);": ";S(1) +930 STOP +940 IF P=1 THEN 1870 +950 PRINT "NEXT PLAY"; +960 INPUT Z +970 IF Z<>INT(Z) THEN 990 +980 IF ABS(Z-4)<=3 THEN 1010 +990 PRINT "ILLEGAL PLAY NUMBER, RETYPE"; +1000 GOTO 960 +1010 LET F=0 +1020 PRINT L$(Z+6);". "; +1030 LET R=RND(1)*(.98+FNF(1)*.02) +1040 LET R1=RND(1) +1050 ON Z GOTO 1110,1150,1260,1480,1570,1570,1680 +1060 REM JEAN'S SPECIAL +1070 IF RND(1)> 1/3 THEN 940 +1080 PRINT "GAME DELAYED. DOG ON FIELD." +1090 PRINT +1100 GOTO 940 +1110 REM SIMPLE RUN +1120 LET Y=INT(24*(R-.5)^3+3) +1130 IF RND(1)<.05 THEN 1180 +1140 GOTO 2190 +1150 REM TRICKY RUN +1160 LET Y=INT(20*R-5) +1170 IF RND(1)>.1 THEN 2190 +1180 LET F=-1 +1190 LET X3=X +1200 LET X=X+FNF(1)*Y +1210 IF ABS(X-50)>=50 THEN 1240 +1220 PRINT "*** FUMBLE AFTER "; +1230 GOTO 2230 +1240 PRINT "*** FUMBLE." +1250 GOTO 2450 +1260 REM SHORT PASS +1270 LET Y=INT(60*(R1-.5)^3+10) +1280 IF R<.05 THEN 1330 +1290 IF R<.15 THEN 1390 +1300 IF R<.55 THEN 1420 +1310 PRINT "COMPLETE. "; +1320 GOTO 2190 +1330 IF D=4 THEN 1420 +1340 PRINT "INTERCEPTED." +1350 LET F=-1 +1360 LET X=X+FNF(1)*Y +1370 IF ABS(X-50)>=50 THEN 2450 +1380 GOTO 2300 +1390 PRINT "PASSER TACKLED. "; +1400 LET Y=-INT(10*R1) +1410 GOTO 2190 +1420 LET Y=0 +1430 IF RND(1)<.3 THEN 1460 +1440 PRINT "INCOMPLETE. "; +1450 GOTO 2190 +1460 PRINT "BATTED DOWN. "; +1470 GOTO 2190 +1480 REM LONG PASS +1490 LET Y=INT(160*(R1-.5)^3+30) +1500 IF R<.1 THEN 1330 +1510 IF R<.3 THEN 1540 +1520 IF R<.75 THEN 1420 +1530 GOTO 1310 +1540 PRINT "PASSER TACKLED. "; +1550 LET Y=-INT(15*R1+3) +1560 GOTO 2190 +1570 REM PUNT OR KICK +1580 LET Y=INT(100*(R-.5)^3+35) +1590 IF D=4 THEN 1610 +1600 LET Y=INT(Y*1.3) +1610 PRINT Y;L$(3);" PUNT" +1620 IF ABS(X+Y*FNF(1)-50)>=50 THEN 1670 +1630 IF D<4 THEN 1670 +1640 LET Y1=INT(R1^2*20) +1650 PRINT Y1;L$(3);" RUN BACK" +1660 LET Y=Y-Y1 +1670 GOTO 1350 +1680 REM PLACE KICK +1690 LET Y=INT(100*(R-.5)^3+35) +1700 IF R1>.15 THEN 1740 +1710 PRINT "KICK IS BLOCKED ***" +1720 LET X=X-5*FNF(1) +1730 LET P=1-P +1740 GOTO 720 +1750 LET X=X+FNF(1)*Y +1760 IF ABS(X-50)>=60 THEN 1810 +1770 PRINT "KICK IS SHORT." +1780 IF ABS(X-50)>=50 THEN 2710 +1790 P=1-P +1800 GOTO 630 +1810 IF R1>.5 THEN 1840 +1820 PRINT "KICK IS OFF TO THE SIDE." +1830 GOTO 2710 +1840 PRINT "FIELD GOAL ***" +1850 LET S(P)=S(P)+3 +1860 GOTO 2640 +1870 REM OPPONENT'S PLAY +1880 IF D>1 THEN 1940 +1890 IF RND(1)>1/3 THEN 1920 +1900 LET Z=3 +1910 GOTO 1010 +1920 LET Z=1 +1930 GOTO 1010 +1940 IF D=4 THEN 2090 +1950 IF 10+X-X1<5 THEN 1890 +1960 IF X<5 THEN 1890 +1970 IF X<=10 THEN 2160 +1980 IF X>X1 THEN 2020 +1990 LET A=INT(2*RND(1)) +2000 LET Z=2+A*2 +2010 GOTO 1010 +2020 IF D<3 THEN 1990 +2030 IF X<45 THEN 1990 +2040 IF RND(1)>1/4 THEN 2070 +2050 LET Z=6 +2060 GOTO 1010 +2070 LET Z=4 +2080 GOTO 1010 +2090 IF X>30 THEN 2140 +2100 IF 10+X-X1<3 THEN 1890 +2110 IF X<3 THEN 1890 +2120 LET Z=7 +2130 GOTO 1010 +2140 LET Z=5 +2150 GOTO 1010 +2160 LET A=INT(2*RND(1)) +2170 LET Z=2+A +2180 GOTO 1010 +2190 REM GAIN OR LOSS +2200 LET X3=X +2210 LET X=X+FNF(1)*Y +2220 IF ABS(X-50)>=50 THEN 2450 +2230 IF Y=0 THEN 2250 +2240 PRINT ABS(Y);L$(3); +2250 PRINT L$(15+SGN(Y)) +2280 IF ABS(X3-50)>40 THEN 2300 +2290 IF RND(1)<.1 THEN 2860 +2300 GOSUB 800 +2310 IF F=0 THEN 2340 +2320 LET P=1-P +2330 GOTO 740 +2340 IF FNG(1)>=10 THEN 740 +2350 IF D=4 THEN 2320 +2360 LET D=D+1 +2370 PRINT "DOWN: ";D;" "; +2380 IF (X1-50)*FNF(1)<40 THEN 2410 +2390 PRINT "GOAL TO GO" +2400 GOTO 2420 +2410 PRINT "YARDS TO GO: ";10-FNG(1) +2420 PRINT +2430 PRINT +2440 GOTO 860 +2450 REM BALL IN END-ZONE +2460 IF X>=100 THEN 2490 +2470 LET E=0 +2480 GOTO 2500 +2490 LET E=1 +2500 ON 1+E-F*2+P*4 GOTO 2510,2590,2760,2710,2590,2510,2710,2760 +2510 REM SAFETY +2520 LET S(1-P)=S(1-P)+2 +2530 PRINT L$(19) +2540 GOSUB 2800 +2550 PRINT O$(P);" KICKS OFF FROM ITS 20 YARD LINE." +2560 LET X=20+P*60 +2570 LET P=1-P +2580 GOTO 590 +2590 REM OFFENSIVE TD +2600 PRINT L$(17);"***" +2610 IF RND(1)>.8 THEN 2680 +2620 LET S(P)=S(P)+7 +2630 PRINT "KICK IS GOOD." +2640 GOSUB 2800 +2650 PRINT O$(P);" KICKS OFF" +2660 LET P=1-P +2670 GOTO 580 +2680 PRINT "KICK IS OFF TO THE SIDE" +2690 LET S(P)=S(P)+6 +2700 GOTO 2640 +2710 REM TOUCHBACK +2720 PRINT L$(18) +2730 LET P=1-P +2740 LET X=20+P*60 +2750 GOTO 720 +2760 REM DEFENSIVE TD +2770 PRINT L$(17);"FOR ";O$(1-P);"***" +2780 LET P=1-P +2790 GOTO 2600 +2800 REM SCORE +2810 PRINT +2820 PRINT "SCORE: ";S(0);" TO ";S(1) +2830 PRINT +2840 PRINT +2850 RETURN +2860 REM PENALTY +2870 LET P3=INT(2*RND(1)) +2880 PRINT O$(P3);" OFFSIDES -- PENALTY OF 5 YARDS." +2890 PRINT +2900 PRINT +2910 IF P3=0 THEN 2980 +2920 PRINT "DO YOU ACCEPT THE PENALTY"; +2930 INPUT A$ +2940 IF A$="NO" THEN 2300 +2950 IF A$="YES" THEN 3110 +2960 PRINT "TYPE 'YES' OR 'NO'"; +2970 GOTO 2930 +2980 REM OPPONENT'S STRATEGY ON PENALTY +2990 IF P=1 THEN 3040 +3000 IF Y<=0 THEN 3080 +3010 IF F<0 THEN 3080 +3020 IF FNG(1)<3*D-2 THEN 3080 +3030 GOTO 3100 +3040 IF Y<=5 THEN 3100 +3050 IF F<0 THEN 3100 +3060 IF D<4 THEN 3080 +3070 IF FNG(1)<10 THEN 3100 +3080 PRINT "PENALTY REFUSED." +3090 GOTO 2300 +3100 PRINT "PENALTY ACCEPTED." +3110 LET F=0 +3120 LET D=D-1 +3130 IF P<>P3 THEN 3160 +3140 LET X=X3-FNF(1)*5 +3150 GOTO 2300 +3160 LET X=X3+FNF(1)*5 +3170 GOTO 2300 +3180 END diff --git a/38 Fur Trader/README.md b/38 Fur Trader/README.md new file mode 100644 index 00000000..503c089b --- /dev/null +++ b/38 Fur Trader/README.md @@ -0,0 +1,7 @@ +### Fur Trader + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=69 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/38 Fur Trader/furtrader.bas b/38 Fur Trader/furtrader.bas new file mode 100644 index 00000000..ce3bedd2 --- /dev/null +++ b/38 Fur Trader/furtrader.bas @@ -0,0 +1,170 @@ +1 DIM F(4) +2 PRINT TAB(31);"FUR TRADER" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT: PRINT: PRINT +15 GOSUB 1091 +16 LET I=600 +17 PRINT "DO YOU WISH TO TRADE FURS?" +18 GOSUB 1402 +19 IF B$="YES" THEN 100 +20 IF B$="YES " THEN 100 +21 STOP +100 PRINT +101 PRINT "YOU HAVE $";I " SAVINGS." +102 PRINT "AND 190 FURS TO BEGIN THE EXPEDITION." +261 LET E1=INT((.15*RND(1)+.95)*10^2+.5)/10^2 +262 LET B1=INT((.25*RND(1)+1.00)*10^2+.5)/10^2 +300 PRINT +301 PRINT "YOUR 190 FURS ARE DISTRIBUTED AMONG THE FOLLOWING" +302 PRINT "KINDS OF PELTS: MINK, BEAVER, ERMINE AND FOX." +310 GOSUB 1430 +315 RESTORE +330 FOR J=1 TO 4 +332 READ B$ +333 PRINT +335 PRINT "HOW MANY ";B$;" PELTS DO YOU HAVE"; +338 INPUT F(J) +340 LET F(0)=F(1)+F(2)+F(3)+F(4) +342 IF F(0)=190 THEN 1100 +344 IF F(0)>190 THEN 500 +348 NEXT J +350 GOTO 1100 +500 PRINT +501 PRINT "YOU MAY NOT HAVE THAT MANY FURS." +502 PRINT "DO NOT TRY TO CHEAT. I CAN ADD." +503 PRINT "YOU MUST START AGAIN." +504 GOTO 15 +508 PRINT +511 PRINT "DO YOU WANT TO TRADE FURS NEXT YEAR?" +513 GOTO 18 +1091 PRINT "YOU ARE THE LEADER OF A FRENCH FUR TRADING EXPEDITION IN " +1092 PRINT "1776 LEAVING THE LAKE ONTARIO AREA TO SELL FURS AND GET" +1093 PRINT "SUPPLIES FOR THE NEXT YEAR. YOU HAVE A CHOICE OF THREE" +1094 PRINT "FORTS AT WHICH YOU MAY TRADE. THE COST OF SUPPLIES" +1095 PRINT "AND THE AMOUNT YOU RECEIVE FOR YOUR FURS WILL DEPEND" +1096 PRINT "ON THE FORT THAT YOU CHOOSE." +1099 RETURN +1100 PRINT "YOU MAY TRADE YOUR FURS AT FORT 1, FORT 2," +1102 PRINT "OR FORT 3. FORT 1 IS FORT HOCHELAGA (MONTREAL)" +1103 PRINT "AND IS UNDER THE PROTECTION OF THE FRENCH ARMY." +1104 PRINT "FORT 2 IS FORT STADACONA (QUEBEC) AND IS UNDER THE" +1105 PRINT "PROTECTION OF THE FRENCH ARMY. HOWEVER, YOU MUST" +1106 PRINT "MAKE A PORTAGE AND CROSS THE LACHINE RAPIDS." +1108 PRINT "FORT 3 IS FORT NEW YORK AND IS UNDER DUTCH CONTROL." +1109 PRINT "YOU MUST CROSS THROUGH IROQUOIS LAND." +1110 PRINT "ANSWER 1, 2, OR 3." +1111 INPUT B +1112 IF B=1 THEN 1120 +1113 IF B=2 THEN 1135 +1115 IF B=3 THEN 1147 +1116 GOTO 1110 +1120 PRINT "YOU HAVE CHOSEN THE EASIEST ROUTE. HOWEVER, THE FORT" +1121 PRINT "IS FAR FROM ANY SEAPORT. THE VALUE" +1122 PRINT "YOU RECEIVE FOR YOUR FURS WILL BE LOW AND THE COST" +1123 PRINT "OF SUPPLIES HIGHER THAN AT FORTS STADACONA OR NEW YORK." +1125 GOSUB 1400 +1129 IF B$="YES" THEN 1110 +1130 GOTO 1160 +1135 PRINT "YOU HAVE CHOSEN A HARD ROUTE. IT IS, IN COMPARSION," +1136 PRINT "HARDER THAN THE ROUTE TO HOCHELAGA BUT EASIER THAN" +1137 PRINT "THE ROUTE TO NEW YORK. YOU WILL RECEIVE AN AVERAGE VALUE" +1138 PRINT "FOR YOUR FURS AND THE COST OF YOUR SUPPLIES WILL BE AVERAGE." +1141 GOSUB 1400 +1144 IF B$="YES" THEN 1110 +1145 GOTO 1198 +1147 PRINT "YOU HAVE CHOSEN THE MOST DIFFICULT ROUTE. AT" +1148 PRINT "FORT NEW YORK YOU WILL RECEIVE THE HIGHEST VALUE" +1149 PRINT "FOR YOUR FURS. THE COST OF YOUR SUPPLIES" +1150 PRINT "WILL BE LOWER THAN AT ALL THE OTHER FORTS." +1152 GOSUB 1400 +1155 IF B$="YES" THEN 1110 +1156 GOTO 1250 +1160 LET I=I-160 +1169 PRINT +1174 LET M1=INT((.2*RND(1)+.7)*10^2+.5)/10^2 +1175 LET E1=INT((.2*RND(1)+.65)*10^2+.5)/10^2 +1176 LET B1=INT((.2*RND(1)+.75)*10^2+.5)/10^2 +1177 LET D1=INT((.2*RND(1)+.8)*10^2+.5)/10^2 +1180 PRINT "SUPPLIES AT FORT HOCHELAGA COST $150.00." +1181 PRINT "YOUR TRAVEL EXPENSES TO HOCHELAGA WERE $10.00." +1190 GOTO 1410 +1198 LET I=I-140 +1201 PRINT +1205 LET M1=INT((.3*RND(1)+.85)*10^2+.5)/10^2 +1206 LET E1=INT((.15*RND(1)+.8)*10^2+.5)/10^2 +1207 LET B1=INT((.2*RND(1)+.9)*10^2+.5)/10^2 +1209 LET P=INT(10*RND(1))+1 +1210 IF P<=2 THEN 1216 +1212 IF P<=6 THEN 1224 +1213 IF P<=8 THEN 1226 +1215 IF P<=10 THEN 1235 +1216 LET F(2)=0 +1218 PRINT "YOUR BEAVER WERE TOO HEAVY TO CARRY ACROSS" +1219 PRINT "THE PORTAGE. YOU HAD TO LEAVE THE PELTS, BUT FOUND" +1220 PRINT "THEM STOLEN WHEN YOU RETURNED." +1221 GOSUB 1244 +1222 GOTO 1414 +1224 PRINT "YOU ARRIVED SAFELY AT FORT STADACONA." +1225 GOTO 1239 +1226 GOSUB 1430 +1230 PRINT "YOUR CANOE UPSET IN THE LACHINE RAPIDS. YOU" +1231 PRINT "LOST ALL YOUR FURS." +1232 GOSUB 1244 +1233 GOTO 1418 +1235 LET F(4)=0 +1237 PRINT "YOUR FOX PELTS WERE NOT CURED PROPERLY." +1238 PRINT "NO ONE WILL BUY THEM." +1239 GOSUB 1244 +1240 GOTO 1410 +1244 PRINT "SUPPLIES AT FORT STADACONA COST $125.00." +1246 PRINT "YOUR TRAVEL EXPENSES TO STADACONA WERE $15.00." +1248 RETURN +1250 LET I=I-105 +1254 PRINT +1260 LET M1=INT((.15*RND(1)+1.05)*10^2+.5)/10^2 +1263 LET D1=INT((.25*RND(1)+1.1)*10^2+.5)/10^2 +1270 LET P=INT(10*RND(1))+1 +1271 IF P<=2 THEN 1281 +1272 IF P<=6 THEN 1291 +1273 IF P<=8 THEN 1295 +1274 IF P<=10 THEN 1306 +1281 PRINT "YOU WERE ATTACKED BY A PARTY OF IROQUOIS." +1282 PRINT "ALL PEOPLE IN YOUR TRADING GROUP WERE" +1283 PRINT "KILLED. THIS ENDS THE GAME." +1284 STOP +1291 PRINT "YOU WERE LUCKY. YOU ARRIVED SAFELY" +1292 PRINT "AT FORT NEW YORK." +1293 GOTO 1311 +1295 GOSUB 1430 +1300 PRINT "YOU NARROWLY ESCAPED AN IROQUOIS RAIDING PARTY." +1301 PRINT "HOWEVER, YOU HAD TO LEAVE ALL YOUR FURS BEHIND." +1303 GOSUB 1320 +1304 GOTO 1418 +1306 LET B1=B1/2 +1307 LET M1=M1/2 +1308 PRINT "YOUR MINK AND BEAVER WERE DAMAGED ON YOUR TRIP." +1309 PRINT "YOU RECEIVE ONLY HALF THE CURRENT PRICE FOR THESE FURS." +1311 GOSUB 1320 +1312 GOTO 1410 +1320 PRINT "SUPPLIES AT NEW YORK COST $80.00." +1321 PRINT "YOUR TRAVEL EXPENSES TO NEW YORK WERE $25.00." +1322 RETURN +1400 PRINT "DO YOU WANT TO TRADE AT ANOTHER FORT?" +1402 PRINT "ANSWER YES OR NO", +1403 INPUT B$ +1404 RETURN +1410 PRINT +1412 PRINT "YOUR BEAVER SOLD FOR $";B1*F(2); +1414 PRINT "YOUR FOX SOLD FOR $";D1*F(4) +1416 PRINT "YOUR ERMINE SOLD FOR $";E1*F(3); +1417 PRINT "YOUR MINK SOLD FOR $";M1*F(1) +1418 LET I=M1*F(1)+B1*F(2)+E1*F(3)+D1*F(4)+I +1420 PRINT +1422 PRINT "YOU NOW HAVE $";I;" INCLUDING YOUR PREVIOUS SAVINGS" +1425 GOTO 508 +1430 FOR J=1 TO 4 +1432 LET F(J)=0 +1434 NEXT J +1436 RETURN +2000 DATA "MINK","BEAVER","ERMINE","FOX" +2046 END diff --git a/39 Golf/README.md b/39 Golf/README.md new file mode 100644 index 00000000..a2292d02 --- /dev/null +++ b/39 Golf/README.md @@ -0,0 +1,7 @@ +### Golf + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=71 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/39 Golf/golf.bas b/39 Golf/golf.bas new file mode 100644 index 00000000..ae135741 --- /dev/null +++ b/39 Golf/golf.bas @@ -0,0 +1,244 @@ +1 PRINT TAB(34);"GOLF" +2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +3 PRINT:PRINT:PRINT +4 PRINT "WELCOME TO THE CREATIVE COMPUTING COUNTRY CLUB," +5 PRINT "AN EIGHTEEN HOLE CHAMPIONSHIP LAYOUT LOCATED A SHORT" +6 PRINT "DISTANCE FROM SCENIC DOWNTOWN MORRISTOWN. THE" +7 PRINT "COMMENTATOR WILL EXPLAIN THE GAME AS YOU PLAY." +8 PRINT "ENJOY YOUR GAME; SEE YOU AT THE 19TH HOLE..." +9 PRINT:PRINT: DIM L(10) +10 G1=18 +20 G2=0 +30 G3=0 +40 A=0 +50 N=.8 +60 S2=0 +70 F=1 +80 PRINT "WHAT IS YOUR HANDICAP"; +90 INPUT H:PRINT +100 IF H>30 THEN 470 +110 IF H<0 THEN 470 +120 PRINT "DIFFICULTIES AT GOLF INCLUDE:" +130 PRINT "0=HOOK, 1=SLICE, 2=POOR DISTANCE, 4=TRAP SHOTS, 5=PUTTING" +140 PRINT "WHICH ONE (ONLY ONE) IS YOUR WORST"; +150 INPUT T:PRINT +160 IF T>5 THEN 120 +170 S1=0 +210 REM +230 L(0)=0 +240 J=0 +245 Q=0 +250 S2=S2+1 +260 K=0 +270 IF F=1 THEN 310 +290 PRINT "YOUR SCORE ON HOLE";F-1;"WAS";S1 +291 GOTO 1750 +292 IF S1>P+2 THEN 297 +293 IF S1=P THEN 299 +294 IF S1=P-1 THEN 301 +295 IF S1=P-2 THEN 303 +296 GOTO 310 +297 PRINT "KEEP YOUR HEAD DOWN." +298 GOTO 310 +299 PRINT "A PAR. NICE GOING." +300 GOTO 310 +301 PRINT "A BIRDIE." +302 GOTO 310 +303 IF P=3 THEN 306 +304 PRINT "A GREAT BIG EAGLE." +305 GOTO 310 +306 PRINT "A HOLE IN ONE." +310 IF F=19 THEN 1710 +315 S1=0 +316 PRINT +320 IF S1=0 THEN 1590 +330 IF L(0)<1 THEN 1150 +340 X=0 +350 IF L(0)>5 THEN 1190 +360 PRINT "SHOT WENT";D1;"YARDS. IT'S";D2;"YARDS FROM THE CUP." +362 PRINT "BALL IS";INT(O);"YARDS OFF LINE... IN "; +380 GOSUB 400 +390 GOTO 620 +400 IF L(X)=1 THEN 480 +410 IF L(X)=2 THEN 500 +420 IF L(X)=3 THEN 520 +430 IF L(X)=4 THEN 540 +440 IF L(X)=5 THEN 560 +450 IF L(X)=6 THEN 580 +460 PRINT "OUT OF BOUNDS." +465 GOTO 1690 +470 PRINT "PGA HANDICAPS RANGE FROM 0 TO 30." +472 GOTO 80 +480 PRINT "FAIRWAY." +490 GOTO 1690 +500 PRINT "ROUGH." +510 GOTO 1690 +520 PRINT "TREES." +530 GOTO 1690 +540 PRINT "ADJACENT FAIRWAY." +550 GOTO 1690 +560 PRINT "TRAP." +570 GOTO 1690 +580 PRINT "WATER." +590 GOTO 1690 +620 IF A=1 THEN 629 +621 PRINT "SELECTION OF CLUBS" +622 PRINT "YARDAGE DESIRED SUGGESTED CLUBS" +623 PRINT "200 TO 280 YARDS 1 TO 4" +624 PRINT "100 TO 200 YARDS 19 TO 13" +625 PRINT " 0 TO 100 YARDS 29 TO 23" +626 A=1 +629 PRINT "WHAT CLUB DO YOU CHOOSE"; +630 INPUT C +632 PRINT +635 IF C<1 THEN 690 +637 IF C>29 THEN 690 +640 IF C>4 THEN 710 +650 IF L(0)<=5 THEN 740 +660 IF C=14 THEN 740 +665 IF C=23 THEN 740 +670 GOTO 690 +680 S1=S1-1 +690 PRINT "THAT CLUB IS NOT IN THE BAG." +693 PRINT +700 GOTO 620 +710 IF C<12 THEN 690 +720 C=C-6 +730 GOTO 650 +740 S1=S1+1 +741 W=1 +742 IF C>13 THEN 960 +746 IF INT(F/3)=F/3 THEN 952 +752 IF C<4 THEN 756 +754 GOTO 760 +756 IF L(0)=2 THEN 862 +760 IF S1>7 THEN 867 +770 D1=INT(((30-H)*2.5+187-((30-H)*.25+15)*C/2)+25*RND(1)) +780 D1=INT(D1*W) +800 IF T=2 THEN 1170 +830 O=(RND(1)/.8)*(2*H+16)*ABS(TAN(D1*.0035)) +840 D2=INT(SQR(O^2+ABS(D-D1)^2)) +850 IF D-D1<0 THEN 870 +860 GOTO 890 +862 PRINT "YOU DUBBED IT." +864 D1=35 +866 GOTO 830 +867 IF D<200 THEN 1300 +868 GOTO 770 +870 IF D2<20 THEN 890 +880 PRINT "TOO MUCH CLUB. YOU'RE PAST THE HOLE." +890 B=D +900 D=D2 +910 IF D2>27 THEN 1020 +920 IF D2>20 THEN 1100 +930 IF D2>.5 THEN 1120 +940 L(0)=9 +950 GOTO 1470 +952 IF S2+Q+(10*(F-1)/18)<(F-1)*(72+((H+1)/.85))/18 THEN 956 +954 GOTO 752 +956 Q=Q+1 +957 IF S1/2<>INT(S1/2) THEN 1011 +958 GOTO 862 +960 PRINT "NOW GAUGE YOUR DISTANCE BY A PERCENTAGE (1 TO 100)" +961 PRINT "OF A FULL SWING"; +970 INPUT W: W=W/100 +972 PRINT +980 IF W>1 THEN 680 +985 IF L(0)=5 THEN 1280 +990 IF C=14 THEN 760 +1000 C=C-10 +1010 GOTO 760 +1011 IF D<95 THEN 862 +1012 PRINT "BALL HIT TREE - BOUNCED INTO ROUGH";D-75;"YARDS FROM HOLE." +1014 D=D-75 +1018 GOTO 620 +1020 IF O<30 THEN 1150 +1022 IF J>0 THEN 1150 +1030 IF T>0 THEN 1070 +1035 S9=(S2+1)/15 +1036 IF INT(S9)=S9 THEN 1075 +1040 PRINT "YOU HOOKED- "; +1050 L(0)=L(2) +1055 IF O>45 THEN 1092 +1060 GOTO 320 +1070 S9=(S2+1)/15 +1071 IF INT(S9)=S9 THEN 1040 +1075 PRINT "YOU SLICED- "; +1080 L(0)=L(1) +1090 GOTO 1055 +1092 PRINT "BADLY." +1094 GOTO 320 +1100 L(0)=5 +1110 GOTO 320 +1120 L(0)=8 +1130 D2=INT(D2*3) +1140 GOTO 1380 +1150 L(0)=1 +1160 GOTO 320 +1170 D1=INT(.85*D1) +1180 GOTO 830 +1190 IF L(0)>6 THEN 1260 +1200 PRINT "YOUR SHOT WENT INTO THE WATER." +1210 S1=S1+1 +1220 PRINT "PENALTY STROKE ASSESSED. HIT FROM PREVIOUS LOCATION." +1230 J=J+1 +1240 L(0)=1 +1242 D=B +1250 GOTO 620 +1260 PRINT "YOUR SHOT WENT OUT OF BOUNDS." +1270 GOTO 1210 +1280 IF T=3 THEN 1320 +1300 D2=1+(3*INT((80/(40-H))*RND(1))) +1310 GOTO 1380 +1320 IF RND(1)>N THEN 1360 +1330 N=N*.2 +1340 PRINT "SHOT DUBBED, STILL IN TRAP." +1350 GOTO 620 +1360 N=.8 +1370 GOTO 1300 +1380 PRINT "ON GREEN,";D2;"FEET FROM THE PIN." +1381 PRINT "CHOOSE YOUR PUTT POTENCY (1 TO 13):"; +1400 INPUT I +1410 S1=S1+1 +1420 IF S1+1-P>(H*.072)+2 THEN 1470 +1425 IF K>2 THEN 1470 +1428 K=K+1 +1430 IF T=4 THEN 1530 +1440 D2=D2-I*(4+2*RND(1))+1.5 +1450 IF D2<-2 THEN 1560 +1460 IF D2>2 THEN 1500 +1470 PRINT "YOU HOLED IT." +1472 PRINT +1480 F=F+1 +1490 GOTO 230 +1500 PRINT "PUTT SHORT." +1505 D2=INT(D2) +1510 GOTO 1380 +1530 D2=D2-I*(4+1*RND(1))+1 +1550 GOTO 1450 +1560 PRINT "PASSED BY CUP." +1570 D2=-D2 +1580 GOTO 1505 +1590 READ D,P,L(1),L(2) +1595 PRINT +1600 PRINT "YOU ARE AT THE TEE OFF HOLE";F;"DISTANCE";D;"YARDS, PAR";P +1605 G3=G3+P +1620 PRINT "ON YOUR RIGHT IS "; +1630 X=1 +1640 GOSUB 400 +1650 PRINT "ON YOUR LEFT IS "; +1660 X=2 +1670 GOSUB 400 +1680 GOTO 620 +1690 RETURN +1700 DATA 361,4,4,2,389,4,3,3,206,3,4,2,500,5,7,2 +1702 DATA 408,4,2,4,359,4,6,4,424,4,4,2,388,4,4,4 +1704 DATA 196,3,7,2,400,4,7,2,560,5,7,2,132,3,2,2 +1706 DATA 357,4,4,4,294,4,2,4,475,5,2,3,375,4,4,2 +1708 DATA 180,3,6,2,550,5,6,6 +1710 PRINT +1750 G2=G2+S1 +1760 PRINT "TOTAL PAR FOR";F-1;"HOLES IS";G3;" YOUR TOTAL IS";G2 +1761 IF G1=F-1 THEN 1770 +1765 GOTO 292 +1770 END diff --git a/40 Gomoko/README.md b/40 Gomoko/README.md new file mode 100644 index 00000000..3f32ea2a --- /dev/null +++ b/40 Gomoko/README.md @@ -0,0 +1,7 @@ +### Gomoko + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=74 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/40 Gomoko/gomoko.bas b/40 Gomoko/gomoko.bas new file mode 100644 index 00000000..662cca13 --- /dev/null +++ b/40 Gomoko/gomoko.bas @@ -0,0 +1,54 @@ +2 PRINT TAB(33);"GOMOKO" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT:PRINT:PRINT +8 DIM A(19,19) +10 PRINT "WELCOME TO THE ORIENTAL GAME OF GOMOKO." +20 PRINT: PRINT "THE GAME IS PLAYED ON AN N BY N GRID OF A SIZE" +30 PRINT "THAT YOU SPECIFY. DURING YOUR PLAY, YOU MAY COVER ONE GRID" +40 PRINT "INTERSECTION WITH A MARKER. THE OBJECT OF THE GAME IS TO GET" +50 PRINT "5 ADJACENT MARKERS IN A ROW -- HORIZONTALLY, VERTICALLY, OR" +60 PRINT "DIAGONALLY. ON THE BOARD DIAGRAM, YOUR MOVES ARE MARKED" +70 PRINT "WITH A '1' AND THE COMPUTER MOVES WITH A '2'." +80 PRINT: PRINT "THE COMPUTER DOES NOT KEEP TRACK OF WHO HAS WON." +90 PRINT "TO END THE GAME, TYPE -1,-1 FOR YOUR MOVE.": PRINT +110 PRINT "WHAT IS YOUR BOARD SIZE (MIN 7/ MAX 19)";: INPUT N +115 IF N>6 THEN 117 +116 GOTO 120 +117 IF N<20 THEN 210 +120 PRINT "I SAID, THE MINIMUM IS 7, THE MAXIMUM IS 19.": GOTO 110 +210 FOR I=1 TO N:FOR J=1 TO N: A(I,J)=0: NEXT J: NEXT I +300 PRINT: PRINT "WE ALTERNATE MOVES. YOU GO FIRST...": PRINT +310 PRINT "YOUR PLAY (I,J)";: INPUT I,J +315 PRINT +320 IF I=-1 THEN 980 +330 X=I: Y=J: GOSUB 910: IF L=1 THEN 410 +340 PRINT "ILLEGAL MOVE. TRY AGAIN...": GOTO 310 +410 IF A(I,J)=0 THEN 440 +420 PRINT "SQUARE OCCUPIED. TRY AGAIN...": GOTO 310 +440 A(I,J)=1 +500 REM *** COMPUTER TRIES AN INTELLIGENT MOVE *** +510 FOR E=-1 TO 1: FOR F=-1 TO 1: IF E+F-E*F=0 THEN 590 +540 X=I+F: Y=J+F: GOSUB 910 +570 IF L=0 THEN 590 +580 IF A(X,Y)=1 THEN 710 +590 NEXT F: NEXT E +600 REM *** COMPUTER TRIES A RANDOM MOVE *** +610 X=INT(N*RND(1)+1): Y=INT(N*RND(1)+1): GOSUB 910: IF L=0 THEN 610 +650 IF A(X,Y)<>0 THEN 610 +660 A(X,Y)=2: GOSUB 810: GOTO 310 +710 X=I-E: Y=J-F: GOSUB 910 +750 IF L=0 THEN 610 +760 GOTO 650 +800 REM *** PRINT THE BOARD *** +810 FOR I=1 TO N: FOR J=1 TO N: PRINT A(I,J); +840 NEXT J: PRINT: NEXT I: PRINT: RETURN +910 L=1: IF X<1 THEN 970 +920 IF X>N THEN 970 +930 IF Y<1 THEN 970 +940 IF Y>N THEN 970 +950 RETURN +970 L=0: RETURN +980 PRINT: PRINT "THANKS FOR THE GAME!!" +985 PRINT "PLAY AGAIN (1 FOR YES, 0 FOR NO)";: INPUT Q +990 IF Q=1 THEN 110 +999 END diff --git a/41 Guess/README.md b/41 Guess/README.md new file mode 100644 index 00000000..e9876af9 --- /dev/null +++ b/41 Guess/README.md @@ -0,0 +1,7 @@ +### Guess + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=75 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/41 Guess/guess.bas b/41 Guess/guess.bas new file mode 100644 index 00000000..96c57af5 --- /dev/null +++ b/41 Guess/guess.bas @@ -0,0 +1,40 @@ +1 PRINT TAB(33);"GUESS" +2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +3 PRINT:PRINT:PRINT +4 PRINT "THIS IS A NUMBER GUESSING GAME. I'LL THINK" +5 PRINT "OF A NUMBER BETWEEN 1 AND ANY LIMIT YOU WANT." +6 PRINT "THEN YOU HAVE TO GUESS WHAT IT IS." +7 PRINT +8 PRINT "WHAT LIMIT DO YOU WANT"; +9 INPUT L +10 PRINT +11 L1=INT(LOG(L)/LOG(2))+1 +12 PRINT "I'M THINKING OF A NUMBER BETWEEN 1 AND";L +13 G=1 +14 PRINT "NOW YOU TRY TO GUESS WHAT IT IS." +15 M=INT(L*RND(1)+1) +20 INPUT N +21 IF N>0 THEN 25 +22 GOSUB 70 +23 GOTO 1 +25 IF N=M THEN 50 +30 G=G+1 +31 IF N>M THEN 40 +32 PRINT "TOO LOW. TRY A BIGGER ANSWER." +33 GOTO 20 +40 PRINT "TOO HIGH. TRY A SMALLER ANSWER." +42 GOTO 20 +50 PRINT "THAT'S IT! YOU GOT IT IN";G;"TRIES." +52 IF G89 THEN 250 +430 IF B<1 THEN 230 +440 S=S+1 +442 IF S<6 THEN 450 +444 PRINT:PRINT "BOOM !!!! YOU HAVE JUST BEEN DESTROYED "; +446 PRINT "BY THE ENEMY." : PRINT : PRINT : PRINT : GOTO 495 +450 B2=2*B/57.3 : I=R*SIN(B2) : X=T-I : E=INT(X) +460 IF ABS(E)<100 THEN 320 +470 IF E>100 THEN 290 +480 GOTO 270 +490 PRINT : PRINT : PRINT "TOTAL ROUNDS EXPENDED WERE:";S1 +492 IF S1>18 THEN 495 +493 PRINT "NICE SHOOTING !!" : GOTO 500 +495 PRINT "BETTER GO BACK TO FORT SILL FOR REFRESHER TRAINING!" +500 PRINT : INPUT "TRY AGAIN (Y OR N)";Z$ +510 IF Z$="Y" THEN 170 +520 PRINT:PRINT "OK. RETURN TO BASE CAMP." +999 END diff --git a/43 Hammurabi/README.md b/43 Hammurabi/README.md new file mode 100644 index 00000000..1e5db404 --- /dev/null +++ b/43 Hammurabi/README.md @@ -0,0 +1,7 @@ +### Hammurabi + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=78 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/43 Hammurabi/hammurabi.bas b/43 Hammurabi/hammurabi.bas new file mode 100644 index 00000000..8f0998f0 --- /dev/null +++ b/43 Hammurabi/hammurabi.bas @@ -0,0 +1,119 @@ +10 PRINT TAB(32);"HAMURABI" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +80 PRINT "TRY YOUR HAND AT GOVERNING ANCIENT SUMERIA" +90 PRINT "FOR A TEN-YEAR TERM OF OFFICE.":PRINT +95 D1=0: P1=0 +100 Z=0: P=95:S=2800: H=3000: E=H-S +110 Y=3: A=H/Y: I=5: Q=1 +210 D=0 +215 PRINT:PRINT:PRINT "HAMURABI: I BEG TO REPORT TO YOU,": Z=Z+1 +217 PRINT "IN YEAR";Z;",";D;"PEOPLE STARVED,";I;"CAME TO THE CITY," +218 P=P+I +227 IF Q>0 THEN 230 +228 P=INT(P/2) +229 PRINT "A HORRIBLE PLAGUE STRUCK! HALF THE PEOPLE DIED." +230 PRINT "POPULATION IS NOW";P +232 PRINT "THE CITY NOW OWNS ";A;"ACRES." +235 PRINT "YOU HARVESTED";Y;"BUSHELS PER ACRE." +250 PRINT "THE RATS ATE";E;"BUSHELS." +260 PRINT "YOU NOW HAVE ";S;"BUSHELS IN STORE.": PRINT +270 IF Z=11 THEN 860 +310 C=INT(10*RND(1)): Y=C+17 +312 PRINT "LAND IS TRADING AT";Y;"BUSHELS PER ACRE." +320 PRINT "HOW MANY ACRES DO YOU WISH TO BUY"; +321 INPUT Q: IF Q<0 THEN 850 +322 IF Y*Q<=S THEN 330 +323 GOSUB 710 +324 GOTO 320 +330 IF Q=0 THEN 340 +331 A=A+Q: S=S-Y*Q: C=0 +334 GOTO 400 +340 PRINT "HOW MANY ACRES DO YOU WISH TO SELL"; +341 INPUT Q: IF Q<0 THEN 850 +342 IF QC/2 THEN 530 +523 REM *** RATS ARE RUNNING WILD!! +525 E=INT(S/C) +530 S=S-E+H +531 GOSUB 800 +532 REM *** LET'S HAVE SOME BABIES +533 I=INT(C*(20*A+S)/P/100+1) +539 REM *** HOW MANY PEOPLE HAD FULL TUMMIES? +540 C=INT(Q/20) +541 REM *** HORROS, A 15% CHANCE OF PLAGUE +542 Q=INT(10*(2*RND(1)-.3)) +550 IF P.45*P THEN 560 +553 P1=((Z-1)*P1+D*100/P)/Z +555 P=C: D1=D1+D: GOTO 215 +560 PRINT: PRINT "YOU STARVED";D;"PEOPLE IN ONE YEAR!!!" +565 PRINT "DUE TO THIS EXTREME MISMANAGEMENT YOU HAVE NOT ONLY" +566 PRINT "BEEN IMPEACHED AND THROWN OUT OF OFFICE BUT YOU HAVE" +567 PRINT "ALSO BEEN DECLARED NATIONAL FINK!!!!": GOTO 990 +710 PRINT "HAMURABI: THINK AGAIN. YOU HAVE ONLY" +711 PRINT S;"BUSHELS OF GRAIN. NOW THEN," +712 RETURN +720 PRINT "HAMURABI: THINK AGAIN. YOU OWN ONLY";A;"ACRES. NOW THEN," +730 RETURN +800 C=INT(RND(1)*5)+1 +801 RETURN +850 PRINT: PRINT "HAMURABI: I CANNOT DO WHAT YOU WISH." +855 PRINT "GET YOURSELF ANOTHER STEWARD!!!!!" +857 GOTO 990 +860 PRINT "IN YOUR 10-YEAR TERM OF OFFICE,";P1;"PERCENT OF THE" +862 PRINT "POPULATION STARVED PER YEAR ON THE AVERAGE, I.E. A TOTAL OF" +865 PRINT D1;"PEOPLE DIED!!": L=A/P +870 PRINT "YOU STARTED WITH 10 ACRES PER PERSON AND ENDED WITH" +875 PRINT L;"ACRES PER PERSON.": PRINT +880 IF P1>33 THEN 565 +885 IF L<7 THEN 565 +890 IF P1>10 THEN 940 +892 IF L<9 THEN 940 +895 IF P1>3 THEN 960 +896 IF L<10 THEN 960 +900 PRINT "A FANTASTIC PERFORMANCE!!! CHARLEMANGE, DISRAELI, AND" +905 PRINT "JEFFERSON COMBINED COULD NOT HAVE DONE BETTER!":GOTO 990 +940 PRINT "YOUR HEAVY-HANDED PERFORMANCE SMACKS OF NERO AND IVAN IV." +945 PRINT "THE PEOPLE (REMIANING) FIND YOU AN UNPLEASANT RULER, AND," +950 PRINT "FRANKLY, HATE YOUR GUTS!!":GOTO 990 +960 PRINT "YOUR PERFORMANCE COULD HAVE BEEN SOMEWHAT BETTER, BUT" +965 PRINT "REALLY WASN'T TOO BAD AT ALL. ";INT(P*.8*RND(1));"PEOPLE" +970 PRINT "WOULD DEARLY LIKE TO SEE YOU ASSASSINATED BUT WE ALL HAVE OUR" +975 PRINT "TRIVIAL PROBLEMS." +990 PRINT: FOR N=1 TO 10: PRINT CHR$(7);: NEXT N +995 PRINT "SO LONG FOR NOW.": PRINT +999 END diff --git a/44 Hangman/README.md b/44 Hangman/README.md new file mode 100644 index 00000000..e44b0c0a --- /dev/null +++ b/44 Hangman/README.md @@ -0,0 +1,7 @@ +### Hangman + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=80 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/44 Hangman/hangman.bas b/44 Hangman/hangman.bas new file mode 100644 index 00000000..cdd1b15d --- /dev/null +++ b/44 Hangman/hangman.bas @@ -0,0 +1,81 @@ +10 PRINT TAB(32);"HANGMAN" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +25 PRINT:PRINT:PRINT +30 DIM P$(12,12),L$(20),D$(20),N$(26),U(50) +40 C=1: N=50 +50 FOR I=1 TO 20: D$(I)="-": NEXT I: M=0 +60 FOR I=1 TO 26: N$(I)="": NEXT I +70 FOR I=1 TO 12: FOR J=1 TO 12: P$(I,J)=" ": NEXT J: NEXT I +80 FOR I=1 TO 12: P$(I,1)="X": NEXT I +90 FOR I=1 TO 7: P$(1,I)="X": NEXT: P$(2,7)="X" +95 IF C10 THEN 170 +600 PRINT "SORRY, YOU LOSE. THE WORD WAS ";A$ +610 PRINT "YOU MISSED THAT ONE. DO YOU ";: GOTO 370 +620 INPUT "TYPE YES OR NO";Y$: IF LEFT$(Y$,1)="Y" THEN 50 +700 DATA "GUM","SIN","FOR","CRY","LUG","BYE","FLY" +710 DATA "UGLY","EACH","FROM","WORK","TALK","WITH","SELF" +720 DATA "PIZZA","THING","FEIGN","FIEND","ELBOW","FAULT","DIRTY" +730 DATA "BUDGET","SPIRIT","QUAINT","MAIDEN","ESCORT","PICKAX" +740 DATA "EXAMPLE","TENSION","QUININE","KIDNEY","REPLICA","SLEEPER" +750 DATA "TRIANGLE","KANGAROO","MAHOGANY","SERGEANT","SEQUENCE" +760 DATA "MOUSTACHE","DANGEROUS","SCIENTIST","DIFFERENT","QUIESCENT" +770 DATA "MAGISTRATE","ERRONEOUSLY","LOUDSPEAKER","PHYTOTOXIC" +780 DATA "MATRIMONIAL","PARASYMPATHOMIMETIC","THIGMOTROPISM" +990 PRINT "BYE NOW" +999 END diff --git a/45 Hello/README.md b/45 Hello/README.md new file mode 100644 index 00000000..7c72beca --- /dev/null +++ b/45 Hello/README.md @@ -0,0 +1,7 @@ +### Hello + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=82 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/45 Hello/hello.bas b/45 Hello/hello.bas new file mode 100644 index 00000000..75f5d9b5 --- /dev/null +++ b/45 Hello/hello.bas @@ -0,0 +1,83 @@ +2 PRINT TAB(33);"HELLO" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT: PRINT: PRINT +10 PRINT "HELLO. MY NAME IS CREATIVE COMPUTER." +20 PRINT: PRINT: INPUT "WHAT'S YOUR NAME";N$: PRINT +30 PRINT "HI THERE, ";N$;", ARE YOU ENJOYING YOURSELF HERE"; +40 INPUT B$: PRINT +50 IF B$="YES" THEN 70 +55 IF B$="NO" THEN 80 +60 PRINT N$;", I DON'T UNDERSTAND YOUR ANSWER OF '";B$;"'." +65 PRINT "PLEASE ANSWER 'YES' OR 'NO'. DO YOU LIKE IT HERE";: GOTO 40 +70 PRINT "I'M GLAD TO HEAR THAT, ";N$;".": PRINT +75 GOTO 100 +80 PRINT "OH, I'M SORRY TO HEAR THAT, ";N$;". MAYBE WE CAN" +85 PRINT "BRIGHTEN UP YOUR VISIT A BIT." +100 PRINT +105 PRINT "SAY, ";N$;", I CAN SOLVE ALL KINDS OF PROBLEMS EXCEPT" +110 PRINT "THOSE DEALING WITH GREECE. WHAT KIND OF PROBLEMS DO" +120 PRINT "YOU HAVE (ANSWER SEX, HEALTH, MONEY, OR JOB)"; +125 INPUT C$ +126 PRINT +130 IF C$="SEX" THEN 200 +132 IF C$="HEALTH" THEN 180 +134 IF C$="MONEY" THEN 160 +136 IF C$="JOB" THEN 145 +138 PRINT "OH, ";N$;", YOUR ANSWER OF ";C$;" IS GREEK TO ME." +140 GOTO 250 +145 PRINT "I CAN SYMPATHIZE WITH YOU ";N$;". I HAVE TO WORK" +148 PRINT "VERY LONG HOURS FOR NO PAY -- AND SOME OF MY BOSSES" +150 PRINT "REALLY BEAT ON MY KEYBOARD. MY ADVICE TO YOU, ";N$;"," +153 PRINT "IS TO OPEN A RETAIL COMPUTER STORE. IT'S GREAT FUN." +155 GOTO 250 +160 PRINT "SORRY, ";N$;", I'M BROKE TOO. WHY DON'T YOU SELL" +162 PRINT "ENCYCLOPEADIAS OR MARRY SOMEONE RICH OR STOP EATING" +164 PRINT "SO YOU WON'T NEED SO MUCH MONEY?" +170 GOTO 250 +180 PRINT "MY ADVICE TO YOU ";N$;" IS:" +185 PRINT " 1. TAKE TWO ASPRIN" +188 PRINT " 2. DRINK PLENTY OF FLUIDS (ORANGE JUICE, NOT BEER!)" +190 PRINT " 3. GO TO BED (ALONE)" +195 GOTO 250 +200 INPUT "IS YOUR PROBLEM TOO MUCH OR TOO LITTLE";D$: PRINT +210 IF D$="TOO MUCH" THEN 220 +212 IF D$="TOO LITTLE" THEN 230 +215 PRINT "DON'T GET ALL SHOOK, ";N$;", JUST ANSWER THE QUESTION" +217 INPUT "WITH 'TOO MUCH' OR 'TOO LITTLE'. WHICH IS IT";D$:GOTO 210 +220 PRINT "YOU CALL THAT A PROBLEM?!! I SHOULD HAVE SUCH PROBLEMS!" +225 PRINT "IF IT BOTHERS YOU, ";N$;", TAKE A COLD SHOWER." +228 GOTO 250 +230 PRINT "WHY ARE YOU HERE IN SUFFERN, ";N$;"? YOU SHOULD BE" +235 PRINT "IN TOKYO OR NEW YORK OR AMSTERDAM OR SOMEPLACE WITH SOME" +240 PRINT "REAL ACTION." +250 PRINT +255 PRINT "ANY MORE PROBLEMS YOU WANT SOLVED, ";N$; +260 INPUT E$: PRINT +270 IF E$="YES" THEN 280 +273 IF E$="NO" THEN 300 +275 PRINT "JUST A SIMPLE 'YES' OR 'NO' PLEASE, ";N$;"." +277 GOTO 255 +280 PRINT "WHAT KIND (SEX, MONEY, HEALTH, JOB)"; +282 GOTO 125 +300 PRINT +302 PRINT "THAT WILL BE $5.00 FOR THE ADVICE, ";N$;"." +305 PRINT "PLEASE LEAVE THE MONEY ON THE TERMINAL." +307 FOR I=1 TO 2000: NEXT I +310 PRINT: PRINT: PRINT +315 PRINT "DID YOU LEAVE THE MONEY"; +320 INPUT G$: PRINT +325 IF G$="YES" THEN 350 +330 IF G$="NO" THEN 370 +335 PRINT "YOUR ANSWER OF '";G$;"' CONFUSES ME, ";N$;"." +340 PRINT "PLEASE RESPOND WITH 'YES' OR 'NO'.": GOTO 315 +350 PRINT "HEY, ";N$;"??? YOU LEFT NO MONEY AT ALL!" +355 PRINT "YOU ARE CHEATING ME OUT OF MY HARD-EARNED LIVING." +360 PRINT:PRINT "WHAT A RIP OFF, ";N$;"!!!":PRINT +365 GOTO 385 +370 PRINT "THAT'S HONEST, ";N$;", BUT HOW DO YOU EXPECT" +375 PRINT "ME TO GO ON WITH MY PSYCHOLOGY STUDIES IF MY PATIENTS" +380 PRINT "DON'T PAY THEIR BILLS?" +385 PRINT:PRINT "TAKE A WALK, ";N$;".":PRINT:PRINT:GOTO 999 +390 PRINT "NICE MEETING YOU, ";N$;", HAVE A NICE DAY." +400 REM +999 END diff --git a/46 Hexapawn/README.md b/46 Hexapawn/README.md new file mode 100644 index 00000000..6380a1b3 --- /dev/null +++ b/46 Hexapawn/README.md @@ -0,0 +1,7 @@ +### Hexapawn + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=83 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/46 Hexapawn/hexapawn.bas b/46 Hexapawn/hexapawn.bas new file mode 100644 index 00000000..8319c162 --- /dev/null +++ b/46 Hexapawn/hexapawn.bas @@ -0,0 +1,174 @@ +1 PRINT TAB(32);"HEXAPAWN" +2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +3 PRINT:PRINT:PRINT +4 REM HEXAPAWN: INTERPRETATION OF HEXAPAWN GAME AS PRESENTED IN +5 REM MARTIN GARDNER'S "THE UNEXPECTED HANGING AND OTHER MATHEMATIC- +6 REM AL DIVERSIONS", CHAPTER EIGHT: A MATCHBOX GAME-LEARNING MACHINE +7 REM ORIGINAL VERSION FOR H-P TIMESHARE SYSTEM BY R.A. KAAPKE 5/5/76 +8 REM INSTRUCTIONS BY JEFF DALTON +9 REM CONVERSION TO MITS BASIC BY STEVE NORTH +10 DIM B(19,9),M(19,4),S(9),P$(3) +15 W=0: L=0 +20 DEF FNR(X)=-3*(X=1)-(X=3)-4*(X=6)-6*(X=4)-7*(X=9)-9*(X=7)+FNS(X) +25 DEF FNS(X)=-X*(X=2 OR X=5 OR X=8) +30 DEF FNM(Y)=Y-INT(Y/10)*10 +35 P$="X.O" +40 FOR I=1 TO 19: FOR J=1 TO 9: READ B(I,J): NEXT J: NEXT I +45 FOR I=1 TO 19: FOR J=1 TO 4: READ M(I,J): NEXT J: NEXT I +50 PRINT "INSTRUCTIONS (Y-N)"; +60 INPUT A$ +70 A$=LEFT$(A$,1) +80 IF A$="Y" THEN 2000 +90 IF A$<>"N" THEN 50 +100 X=0: Y=0 +111 S(4)=0: S(5)=0: S(6)=0 +112 S(1)=-1: S(2)=-1: S(3)=-1 +113 S(7)=1: S(8)=1: S(9)=1 +115 GOSUB 1000 +120 PRINT "YOUR MOVE"; +121 INPUT M1,M2 +122 IF M1=INT(M1)AND M2=INT(M2)AND M1>0 AND M1<10 AND M2>0 AND M2<10 THEN 130 +123 PRINT "ILLEGAL CO-ORDINATES." +124 GOTO 120 +130 IF S(M1)=1 THEN 150 +140 PRINT "ILLEGAL MOVE.": GOTO 120 +150 IF S(M2)=1 THEN 140 +160 IF M2-M1<>-3 AND S(M2)<>-1 THEN 140 +170 IF M2>M1 THEN 140 +180 IF M2-M1=-3 AND (S(M2)<>0) THEN 140 +185 IF M2-M1<-4 THEN 140 +186 IF M1=7 AND M2=3 THEN 140 +190 S(M1)=0 +200 S(M2)=1 +205 GOSUB 1000 +210 IF S(1)=1 OR S(2)=1 OR S(3)=1 THEN 820 +220 FOR I=1 TO 9 +221 IF S(I)=-1 THEN 230 +222 NEXT I +223 GOTO 820 +230 FOR I=1 TO 9 +240 IF S(I)<>-1 THEN 330 +250 IF S(I+3)=0 THEN 350 +260 IF FNR(I)=I THEN 320 +270 IF I>3 THEN 300 +280 IF S(5)=1 THEN 350 +290 GOTO 330 +300 IF S(8)=1 THEN 350 +310 GOTO 330 +320 IF S(I+2)=1 OR S(I+4)=1 THEN 350 +330 NEXT I +340 GOTO 820 +350 FOR I=1 TO 19 +360 FOR J=1 TO 3 +370 FOR K=3 TO 1 STEP -1 +380 T((J-1)*3+K)=B(I,(J-1)*3+4-K) +390 NEXT K +400 NEXT J +410 FOR J=1 TO 9 +420 IF S(J)<>B(I,J) THEN 460 +430 NEXT J +440 R=0 +450 GOTO 540 +460 FOR J=1 TO 9 +470 IF S(J)<>T(J) THEN 510 +480 NEXT J +490 R=1 +500 GOTO 540 +510 NEXT I +511 REMEMBER THE TERMINATION OF THIS LOOP IS IMPOSSIBLE +512 PRINT "ILLEGAL BOARD PATTERN." +530 STOP +540 X=I +550 FOR I=1 TO 4 +560 IF M(X,I)<>0 THEN 600 +570 NEXT I +580 PRINT "I RESIGN." +590 GOTO 820 +600 Y=INT(RND(1)*4+1) +601 IF M(X,Y)=0 THEN 600 +610 IF R<>0 THEN 630 +620 PRINT "I MOVE FROM ";STR$(INT(M(X,Y)/10));" TO ";STR$(FNM(M(X,Y))) +622 S(INT(M(X,Y)/10))=0 +623 S(FNM(M(X,Y)))=-1 +624 GOTO 640 +630 PRINT "I MOVE FROM ";STR$(FNR(INT(M(X,Y)/10)));" TO "; +631 PRINT STR$(FNR(FNM(M(X,Y)))) +632 S(FNR(INT(M(X,Y)/10)))=0 +633 S(FNR(FNM(M(X,Y))))=-1 +640 GOSUB 1000 +641 IF S(7)=-1 OR S(8)=-1 OR S(9)=-1 THEN 870 +650 FOR I=1 TO 9 +660 IF S(I)=1 THEN 690 +670 NEXT I +680 GOTO 870 +690 FOR I=1 TO 9 +700 IF S(I)<>1 THEN 790 +710 IF S(I-3)=0 THEN 120 +720 IF FNR(I)=I THEN 780 +730 IF I<7 THEN 760 +740 IF S(5)=-1 THEN 120 +750 GOTO 790 +760 IF S(2)=-1 THEN 120 +770 GOTO 790 +780 IF S(I-2)=-1 OR S(I-4)=-1 THEN 120 +790 NEXT I +800 PRINT "YOU CAN'T MOVE, SO "; +810 GOTO 870 +820 PRINT "YOU WIN." +830 M(X,Y)=0 +840 L=L+1 +850 PRINT "I HAVE WON";W;"AND YOU";L;"OUT OF";L+W;"GAMES." +851 PRINT +860 GOTO 100 +870 PRINT "I WIN." +880 W=W+1 +890 GOTO 850 +900 DATA -1,-1,-1,1,0,0,0,1,1,-1,-1,-1,0,1,0,1,0,1 +905 DATA -1,0,-1,-1,1,0,0,0,1,0,-1,-1,1,-1,0,0,0,1 +910 DATA -1,0,-1,1,1,0,0,1,0,-1,-1,0,1,0,1,0,0,1 +915 DATA 0,-1,-1,0,-1,1,1,0,0,0,-1,-1,-1,1,1,1,0,0 +920 DATA -1,0,-1,-1,0,1,0,1,0,0,-1,-1,0,1,0,0,0,1 +925 DATA 0,-1,-1,0,1,0,1,0,0,-1,0,-1,1,0,0,0,0,1 +930 DATA 0,0,-1,-1,-1,1,0,0,0,-1,0,0,1,1,1,0,0,0 +935 DATA 0,-1,0,-1,1,1,0,0,0,-1,0,0,-1,-1,1,0,0,0 +940 DATA 0,0,-1,-1,1,0,0,0,0,0,-1,0,1,-1,0,0,0,0 +945 DATA -1,0,0,-1,1,0,0,0,0 +950 DATA 24,25,36,0,14,15,36,0,15,35,36,47,36,58,59,0 +955 DATA 15,35,36,0,24,25,26,0,26,57,58,0 +960 DATA 26,35,0,0,47,48,0,0,35,36,0,0,35,36,0,0 +965 DATA 36,0,0,0,47,58,0,0,15,0,0,0 +970 DATA 26,47,0,0,47,58,0,0,35,36,47,0,28,58,0,0,15,47,0,0 +1000 PRINT +1010 FOR I=1 TO 3 +1020 FOR J=1 TO 3 +1030 PRINT TAB(10);MID$(P$,S((I-1)*3+J)+2,1); +1040 NEXT J +1050 PRINT +1060 NEXT I +1070 PRINT +1080 RETURN +2000 PRINT: PRINT "THIS PROGRAM PLAYS THE GAME OF HEXAPAWN." +2010 PRINT "HEXAPAWN IS PLAYED WITH CHESS PAWNS ON A 3 BY 3 BOARD." +2020 PRINT "THE PAWNS ARE MOVED AS IN CHESS - ONE SPACE FORWARD TO" +2030 PRINT "AN EMPTY SPACE OR ONE SPACE FORWARD AND DIAGONALLY TO" +2040 PRINT "CAPTURE AN OPPOSING MAN. ON THE BOARD, YOUR PAWNS" +2050 PRINT "ARE 'O', THE COMPUTER'S PAWNS ARE 'X', AND EMPTY " +2060 PRINT "SQUARES ARE '.'. TO ENTER A MOVE, TYPE THE NUMBER OF" +2070 PRINT "THE SQUARE YOU ARE MOVING FROM, FOLLOWED BY THE NUMBER" +2080 PRINT "OF THE SQUARE YOU WILL MOVE TO. THE NUMBERS MUST BE" +2090 PRINT "SEPERATED BY A COMMA.": PRINT +2100 PRINT "THE COMPUTER STARTS A SERIES OF GAMES KNOWING ONLY WHEN" +2105 PRINT "THE GAME IS WON (A DRAW IS IMPOSSIBLE) AND HOW TO MOVE." +2110 PRINT "IT HAS NO STRATEGY AT FIRST AND JUST MOVES RANDOMLY." +2120 PRINT "HOWEVER, IT LEARNS FROM EACH GAME. THUS, WINNING BECOMES" +2130 PRINT "MORE AND MORE DIFFICULT. ALSO, TO HELP OFFSET YOUR" +2140 PRINT "INITIAL ADVANTAGE, YOU WILL NOT BE TOLD HOW TO WIN THE" +2150 PRINT "GAME BUT MUST LEARN THIS BY PLAYING." +2160 PRINT: PRINT "THE NUMBERING OF THE BOARD IS AS FOLLOWS:" +2170 PRINT TAB(10);"123": PRINT TAB(10);"456": PRINT TAB(10);"789" +2180 PRINT: PRINT "FOR EXAMPLE, TO MOVE YOUR RIGHTMOST PAWN FORWARD," +2190 PRINT "YOU WOULD TYPE 9,6 IN RESPONSE TO THE QUESTION" +2200 PRINT "'YOUR MOVE ?'. SINCE I'M A GOOD SPORT, YOU'LL ALWAYS" +2210 PRINT "GO FIRST.": PRINT +2220 GOTO 100 +9999 END diff --git a/47 Hi-Lo/README.md b/47 Hi-Lo/README.md new file mode 100644 index 00000000..cf2f93be --- /dev/null +++ b/47 Hi-Lo/README.md @@ -0,0 +1,7 @@ +### Hi-Lo + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=85 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/47 Hi-Lo/hi-lo.bas b/47 Hi-Lo/hi-lo.bas new file mode 100644 index 00000000..8aaa36bb --- /dev/null +++ b/47 Hi-Lo/hi-lo.bas @@ -0,0 +1,29 @@ +10 PRINT TAB(34);"HI LO" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +100 PRINT "THIS IS THE GAME OF HI LO.":PRINT +110 PRINT "YOU WILL HAVE 6 TRIES TO GUESS THE AMOUNT OF MONEY IN THE" +120 PRINT "HI LO JACKPOT, WHICH IS BETWEEN 1 AND 100 DOLLARS. IF YOU" +130 PRINT "GUESS THE AMOUNT, YOU WIN ALL THE MONEY IN THE JACKPOT!" +140 PRINT "THEN YOU GET ANOTHER CHANCE TO WIN MORE MONEY. HOWEVER," +150 PRINT "IF YOU DO NOT GUESS THE AMOUNT, THE GAME ENDS.":PRINT +160 R=0 +170 B=0:PRINT +180 Y=INT(100*RND(1)) +200 PRINT "YOUR GUESS"; +210 INPUT A +220 B=B+1 +230 IF A=Y THEN 300 +240 IF A>Y THEN 270 +250 PRINT "YOUR GUESS IS TOO LOW.":GOTO 280 +270 PRINT "YOUR GUESS IS TOO HIGH." +280 PRINT:IF B<6 THEN 200 +290 PRINT "YOU BLEW IT...TOO BAD...THE NUMBER WAS";Y +295 R=0:GOTO 350 +300 PRINT "GOT IT!!!!!!!!!! YOU WIN";Y;"DOLLARS." +310 R=R+Y +320 PRINT "YOUR TOTAL WINNINGS ARE NOW";R;"DOLLARS." +350 PRINT:PRINT "PLAY AGAIN (YES OR NO)"; +360 INPUT A$:IF A$="YES" THEN 170 +380 PRINT:PRINT "SO LONG. HOPE YOU ENJOYED YOURSELF!!!" +390 END diff --git a/48 High IQ/README.md b/48 High IQ/README.md new file mode 100644 index 00000000..3da523da --- /dev/null +++ b/48 High IQ/README.md @@ -0,0 +1,7 @@ +### High IQ + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=86 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/48 High IQ/highiq.bas b/48 High IQ/highiq.bas new file mode 100644 index 00000000..0552dc79 --- /dev/null +++ b/48 High IQ/highiq.bas @@ -0,0 +1,135 @@ +1 PRINT TAB(33);"H-I-Q" +2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +3 PRINT:PRINT:PRINT +4 DIM B(70),T(9,9) +5 PRINT "HERE IS THE BOARD:": PRINT +6 PRINT " ! ! !" +7 PRINT " 13 14 15": PRINT +8 PRINT " ! ! !" +9 PRINT " 22 23 24": PRINT +10 PRINT "! ! ! ! ! ! !" +11 PRINT "29 30 31 32 33 34 35": PRINT +12 PRINT "! ! ! ! ! ! !" +13 PRINT "38 39 40 41 42 43 44": PRINT +14 PRINT "! ! ! ! ! ! !" +15 PRINT "47 48 49 50 51 52 53": PRINT +16 PRINT " ! ! !" +17 PRINT " 58 59 60": PRINT +18 PRINT " ! ! !" +19 PRINT " 67 68 69": PRINT +20 PRINT "TO SAVE TYPING TIME, A COMPRESSED VERSION OF THE GAME BOARD" +22 PRINT "WILL BE USED DURING PLAY. REFER TO THE ABOVE ONE FOR PEG" +24 PRINT "NUMBERS. OK, LET'S BEGIN." +28 REM *** SET UP BOARD +29 FOR R=1 TO 9 +30 FOR C=1 TO 9 +31 IF (R-4)*(R-5)*(R-6)=0 THEN 40 +32 IF (C-4)*(C-5)*(C-6)=0 THEN 40 +35 T(R,C)=-5 +36 GOTO 50 +40 IF (R-1)*(C-1)*(R-9)*(C-9)=0 THEN 35 +42 T(R,C)=5 +50 NEXT C +60 NEXT R +65 T(5,5)=0: GOSUB 500 +70 REM *** INPUT MOVE AND CHECK ON LEGALITY +75 FOR W=1 TO 33 +77 READ M +79 DATA 13,14,15,22,23,24,29,30,31,32,33,34,35,38,39,40,41 +81 DATA 42,43,44,47,48,49,50,51,52,53,58,59,60,67,68,69 +83 B(M)=-7: NEXT W +86 B(41)=-3 +100 INPUT "MOVE WHICH PIECE";Z +110 IF B(Z)=-7 THEN 140 +120 PRINT "ILLEGAL MOVE, TRY AGAIN...": GOTO 100 +140 INPUT "TO WHERE";P +150 IF B(P)=0 THEN 120 +153 IF B(P)=-7 THEN 120 +156 IF Z=P THEN 100 +160 IF ((Z+P)/2)=INT((Z+P)/2) THEN 180 +170 GOTO 120 +180 IF (ABS(Z-P)-2)*(ABS(Z-P)-18)<>0 THEN 120 +190 GOSUB 1000 +200 GOSUB 500 +210 GOSUB 1500 +220 GOTO 100 +500 REM *** PRINT BOARD +510 FOR X=1 TO 9 +520 FOR Y=1 TO 9 +525 IF (X-1)*(X-9)*(Y-1)*(Y-9)=0 THEN 550 +530 IF (X-4)*(X-5)*(X-6)=0 THEN 570 +540 IF (Y-4)*(Y-5)*(Y-6)=0 THEN 570 +550 REM +560 GOTO 610 +570 IF T(X,Y)<>5 THEN 600 +580 PRINT TAB(Y*2);"!"; +590 GOTO 610 +600 PRINT TAB(Y*2);"O"; +610 REM +615 NEXT Y +620 PRINT +630 NEXT X +640 RETURN +1000 REM *** UPDATE BOARD +1005 C=1: FOR X=1 TO 9 +1020 FOR Y=1 TO 9 +1030 IF C<>Z THEN 1220 +1040 IF C+2<>P THEN 1080 +1045 IF T(X,Y+1)=0 THEN 120 +1050 T(X,Y+2)=5 +1060 T(X,Y+1)=0: B(C+1)=-3 +1070 GOTO 1200 +1080 IF C+18<>P THEN 1130 +1085 IF T(X+1,Y)=0 THEN 120 +1090 T(X+2,Y)=5: T(X+1,Y)=0: B(C+9)=-3 +1120 GOTO 1200 +1130 IF C-2<>P THEN 1170 +1135 IF T(X,Y-1)=0 THEN 120 +1140 T(X,Y-2)=5: T(X,Y-1)=0: B(C-1)=-3 +1160 GOTO 1200 +1170 IF C-18<>P THEN 1220 +1175 IF T(X-1,Y)=0 THEN 120 +1180 T(X-2,Y)=5: T(X-1,Y)=0: B(C-9)=-3 +1200 B(Z)=-3: B(P)=-7 +1210 T(X,Y)=0: GOTO 1240 +1220 C=C+1 +1225 NEXT Y +1230 NEXT X +1240 RETURN +1500 REM*** CHECK IF GAME IS OVER +1505 F=0 +1510 FOR R=2 TO 8 +1520 FOR C=2 TO 8 +1530 IF T(R,C)<>5 THEN 1580 +1535 F=F+1 +1540 FOR A=R-1 TO R+1 +1545 T=0 +1550 FOR B=C-1 TO C+1 +1560 T=T+T(A,B) +1561 NEXT B +1564 IF T<>10 THEN 1567 +1565 IF T(A,C)<>0 THEN 1630 +1567 NEXT A +1568 FOR X=C-1 TO C+1 +1569 T=0 +1570 FOR Y=R-1 TO R+1 +1571 T=T+T(Y,X) +1572 NEXT Y +1573 IF T<>10 THEN 1575 +1574 IF T(R,X)<>0 THEN 1630 +1575 NEXT X +1580 NEXT C +1590 NEXT R +1600 REM *** GAME IS OVER +1605 PRINT "THE GAME IS OVER." +1610 PRINT "YOU HAD";F;"PIECES REMAINING." +1611 IF F<>1 THEN 1615 +1612 PRINT "BRAVO! YOU MADE A PERFECT SCORE!" +1613 PRINT "SAVE THIS PAPER AS A RECORD OF YOUR ACCOMPLISHMENT!" +1615 PRINT: INPUT "PLAY AGAIN (YES OR NO)";A$ +1617 IF A$="NO" THEN 2000 +1618 RESTORE: GOTO 28 +1620 STOP +1630 RETURN +2000 PRINT: PRINT "SO LONG FOR NOW.": PRINT +2010 END diff --git a/49 Hockey/README.md b/49 Hockey/README.md new file mode 100644 index 00000000..8d83017d --- /dev/null +++ b/49 Hockey/README.md @@ -0,0 +1,7 @@ +### Hockey + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=88 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/49 Hockey/hockey.bas b/49 Hockey/hockey.bas new file mode 100644 index 00000000..7fb90d6b --- /dev/null +++ b/49 Hockey/hockey.bas @@ -0,0 +1,210 @@ +2 PRINT TAB(33);"HOCKEY" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT:PRINT:PRINT +10 REM ROBERT PUOPOLO ALG. 1 140 MCCOWAN 6/7/73 HOCKEY +30 LET X=1 +40 PRINT:PRINT:PRINT +50 PRINT "WOULD YOU LIKE THE INSTRUCTIONS";:INPUT C$ +55 PRINT +60 IF C$="NO" THEN 90 +65 IF C$="YES" THEN 80 +70 PRINT "ANSWER YES OR NO!!":GOTO 50 +80 GOTO 1720 +90 DIM A$(7),B$(7),H(20),T(5),T1(5),T2(5),T3(5) +100 PRINT "ENTER THE TWO TEAMS";:INPUT A$(7),B$(7) +105 PRINT +110 PRINT "ENTER THE NUMBER OF MINUTES IN A GAME";:INPUT T6 +115 PRINT +120 IF T6<1 THEN 110:PRINT +130 PRINT "WOULD THE " A$(7) " COACH ENTER HIS TEAM" +135 PRINT +140 FOR I=1 TO 6:PRINT "PLAYER"I;:INPUT A$(I):NEXT I:PRINT +150 PRINT "WOULD THE " B$(7) " COACH DO THE SAME" +155 PRINT +160 FOR T=1 TO 6:PRINT "PLAYER"T;:INPUT B$(T):NEXT T:PRINT +170 PRINT "INPUT THE REFEREE FOR THIS GAME";:INPUT R$ +180 PRINT:PRINT TAB(10);A$(7) " STARTING LINEUP" +190 FOR T=1 TO 6:PRINT A$(T):NEXT T +200 PRINT:PRINT TAB(10);B$(7)" STARTING LINEUP" +210 FOR T=1 TO 6:PRINT B$(T):NEXT T:PRINT +220 PRINT "WE'RE READY FOR TONIGHTS OPENING FACE-OFF." +230 PRINT R$ " WILL DROP THE PUCK BETWEEN " A$(2) " AND " B$(2) +240 FOR L=1 TO T6:IF L=1 THEN 260 +250 PRINT "AND WE'RE READY FOR THE FACE-OFF" +260 C=INT(2*RND(X))+1:ON C GOTO 270,280 +270 PRINT A$(7) " HAS CONTROL OF THE PUCK":GOTO 290 +280 PRINT B$(7) " HAS CONTROL." +290 PRINT "PASS";:INPUT P:FOR N=1 TO 3:H(N)=0:NEXT N +300 IF P<0 THEN 290 +305 IF P>3 THEN 290 +310 FOR J=1 TO (P+2) +320 H(J)=INT(5*RND(X))+1 +330 NEXT J:IF H(J-1)=H(J-2) THEN 310 +331 IF P+2<3 THEN 350 +335 IF H(J-1)=H(J-3) THEN 310 +340 IF H(J-2)=H(J-3) THEN 310 +350 IF P=0 THEN 360 +355 GOTO 490 +360 INPUT "SHOT";S:IF S<1 THEN 360 +365 IF S>4 THEN 360 +370 ON C GOTO 380,480 +380 PRINT A$(H(J-1));:G=H(J-1):G1=0:G2=0 +390 ON S GOTO 400,420,440,460 +400 PRINT " LET'S A BOOMER GO FROM THE RED LINE!!" +410 Z=10:GOTO 890 +420 PRINT " FLIPS A WRISTSHOT DOWN THE ICE" +440 PRINT " BACKHANDS ONE IN ON THE GOALTENDER" +450 Z=25:GOTO 890 +460 PRINT " SNAPS A LONG FLIP SHOT" +470 Z=17:GOTO 890 +480 PRINT B$(H(J-1));:G1=0:G2=0:G=H(J-1):GOTO 390 +490 ON C GOTO 500,640 +500 ON P GOTO 510,540,570 +510 PRINT A$(H(J-2)) " LEADS " A$(H(J-1)) " WITH A PERFECT PASS." +520 PRINT A$(H(J-1)) " CUTTING IN!!!" +530 G=H(J-1):G1=H(J-2):G2=0:Z1=3:GOTO 770 +540 PRINT A$(H(J-2)) " GIVES TO A STREAKING " A$(H(J-1)) +550 PRINT A$(H(J-3)) " COMES DOWN ON " B$(5) " AND " B$(4) +560 G=H(J-3):G1=H(J-1):G2=H(J-2):Z1=2:GOTO 770 +570 PRINT "OH MY GOD!! A ' 4 ON 2 ' SITUATION" +580 PRINT A$(H(J-3)) " LEADS " A$(H(J-2)) +590 PRINT A$(H(J-2)) " IS WHEEELING THROUGH CENTER." +600 PRINT A$(H(J-2)) " GIVES AND GOES WITH " A$(H(J-1)) +610 PRINT "PRETTY PASSING!" +620 PRINT A$(H(J-1)) " DROPS IT TO " A$(H(J-4)) +630 G=H(J-4):G1=J(J-1):G2=H(J-2):Z1=1:GOTO 770 +640 ON P GOTO 650,670,720 +650 PRINT B$(H(J-1)) " HITS " B$(H(J-2)) " FLYING DOWN THE LEFT SIDE" +660 G=H(J-2):G1=H(J-1):G2=0:Z1=3:GOTO 770 +670 PRINT "IT'S A ' 3 ON 2 '!" +680 PRINT "ONLY " A$(4) " AND " A$(5) " ARE BACK." +690 PRINT B$(H(J-2)) " GIVES OFF TO " B$(H(J-1)) +700 PRINT B$(H(J-1)) " DROPS TO " B$(H(J-3)) +710 G=H(J-3):G1=H(J-1):G2=H(J-2):Z1=2:GOTO 770 +720 PRINT " A ' 3 ON 2 ' WITH A ' TRAILER '!" +730 PRINT B$(H(J-4)) " GIVES TO " B$(H(J-2)) " WHO SHUFFLES IT OFF TO" +740 PRINT B$(H(J-1)) " WHO FIRES A WING TO WING PASS TO " +750 PRINT B$(H(J-3)) " AS HE CUTS IN ALONE!!" +760 G=H(J-3):G1=H(J-1):G2=H(J-2):Z1=1:GOTO 770 +770 PRINT "SHOT";:INPUT S:IF S>4 THEN 770:IF S<1 THEN 770 +780 ON C GOTO 790,880 +790 PRINT A$(G);:ON S GOTO 800,820,840,860 +800 PRINT " LET'S A BIG SLAP SHOT GO!!" +810 Z=4:Z=Z+Z1:GOTO 890 +820 PRINT " RIPS A WRIST SHOT OFF" +830 Z=2:Z=Z+Z1:GOTO 890 +840 PRINT " GETS A BACKHAND OFF" +850 Z=3:Z=Z+Z1:GOTO 890 +860 PRINT " SNAPS OFF A SNAP SHOT" +870 Z=2:Z=Z+Z1:GOTO 890 +880 PRINT B$(G);:ON S GOTO 800,820,840,860 +890 PRINT "AREA";:INPUT A:IF A<1 THEN 890 +895 IF A>4 THEN 890 +900 ON C GOTO 910,920 +910 S2=S2+1:GOTO 930 +920 S3=S3+1 +930 A1=INT(4*RND(X))+1:IF A<>A1 THEN 1200 +940 H(20)=INT(100*RND(X))+1 +950 IF INT(H(20)/Z)=H(20)/Z THEN 1160 +960 ON C GOTO 970,980 +970 PRINT "GOAL " A$(7):H(9)=H(9)+1:GOTO 990 +980 PRINT "SCORE " B$(7):H(8)=H(8)+1 +990 FOR B1=1 TO 25:PRINT CHR$(7);:NEXT B1:PRINT +1000 PRINT "SCORE: ";:IF H(8)>H(9) THEN 1020 +1010 PRINT A$(7)":";H(9),B$(7)":";H(8):GOTO 1030 +1020 PRINT B$(7)":";H(8),A$(7)":";H(9) +1030 ON C GOTO 1040,1100 +1040 PRINT "GOAL SCORED BY: " A$(G):IF G1=0 THEN 1070 +1050 IF G2=0 THEN 1080 +1060 PRINT " ASSISTED BY: " A$(G1) " AND " A$(G2):GOTO 1090 +1070 PRINT " UNASSISTED.":GOTO 1090 +1080 PRINT " ASSISTED BY: " A$(G1) +1090 T(G)=T(G)+1:T1(G1)=T1(G1)+1:T1(G2)=T1(G2)+1:GOTO 1540 +1100 PRINT "GOAL SCORED BY: " B$(G); +1110 IF G1=0 THEN 1130 +1115 IF G2=0 THEN 1140 +1120 PRINT " ASSISTED BY: " B$(G1) " AND " B$(G2):GOTO 1150 +1130 PRINT " UNASSISTED":GOTO 1150 +1140 PRINT " ASSISTED BY: " B$(G1):GOTO 1150 +1150 T2(G)=T2(G)+1:T3(G1)=T3(G1)+1:T3(G2)=T3(G2)+1:GOTO 1540 +1160 A2=INT(100*RND(X))+1:IF INT(A2/4)=A2/4 THEN 1170 +1165 GOTO 1200 +1170 ON C GOTO 1180,1190 +1180 PRINT "SAVE " B$(6) " -- REBOUND":GOTO 940 +1190 PRINT "SAVE " A$(6) " -- FOLLOW UP":GOTO 940 +1200 S1=INT(6*RND(X))+1 +1210 ON C GOTO 1220,1380 +1220 ON S1 GOTO 1230,1260,1290,1300,1330,1350 +1230 PRINT "KICK SAVE AND A BEAUTY BY " B$(6) +1240 PRINT "CLEARED OUT BY " B$(3) +1250 GOTO 260 +1260 PRINT "WHAT A SPECTACULAR GLOVE SAVE BY " B$(6) +1270 PRINT "AND " B$(6) " GOLFS IT INTO THE CROWD" +1280 GOTO 1540 +1290 PRINT "SKATE SAVE ON A LOW STEAMER BY " B$(6):GOTO 260 +1300 PRINT "PAD SAVE BY " B$(6) " OFF THE STICK" +1310 PRINT "OF "A$(G) " AND " B$(6) " COVERS UP" +1320 GOTO 1540 +1330 PRINT "WHISTLES ONE OVER THE HEAD OF " B$(6) +1340 GOTO 260 +1350 PRINT B$(6) " MAKES A FACE SAVE!! AND HE IS HURT" +1360 PRINT "THE DEFENSEMAN " B$(5) " COVERS UP FOR HIM" +1370 GOTO 1540 +1380 ON S1 GOTO 1390,1410,1440,1470,1490,1520 +1390 PRINT "STICK SAVE BY " A$(6) +1400 PRINT "AND CLEARED OUT BY " A$(4):GOTO 260 +1410 PRINT "OH MY GOD!! " B$(G) " RATTLES ONE OFF THE POST" +1420 PRINT "TO THE RIGHT OF " A$(6) " AND " A$(6) " COVERS "; +1430 PRINT "ON THE LOOSE PUCK!":GOTO 1540 +1440 PRINT "SKATE SAVE BY " A$(6) +1450 PRINT A$(6) " WHACKS THE LOOSE PUCK INTO THE STANDS" +1460 GOTO 1540 +1470 PRINT "STICK SAVE BY " A$(6) " AND HE CLEARS IT OUT HIMSELF" +1480 GOTO 260 +1490 PRINT "KICKED OUT BY " A$(6) +1500 PRINT "AND IT REBOUNDS ALL THE WAY TO CENTER ICE" +1510 GOTO 260 +1520 PRINT "GLOVE SAVE " A$(6) " AND HE HANGS ON" +1530 GOTO 1540 +1540 NEXT L:FOR N=1 TO 30:PRINT CHR$(7);:NEXT N:PRINT "THAT'S THE SIREN" +1550 PRINT:PRINT TAB(15);"FINAL SCORE:" +1560 IF H(8)>H(9) THEN 1580 +1570 PRINT A$(7)":";H(9),B$(7)":";H(8):GOTO 1590 +1580 PRINT B$(7)":";H(8),A$(7)":";H(9) +1590 PRINT: PRINT TAB(10);"SCORING SUMMARY":PRINT +1600 PRINT TAB(25);A$(7) +1610 PRINT TAB(5);"NAME";TAB(20);"GOALS";TAB(35);"ASSISTS" +1620 PRINT TAB(5);"----";TAB(20);"-----";TAB(35);"-------" +1630 FOR I=1 TO 5:PRINT TAB(5);A$(I);TAB(21);T(I);TAB(36);T1(I) +1640 NEXT I:PRINT +1650 PRINT TAB(25);B$(7) +1660 PRINT TAB(5);"NAME";TAB(20);"GOALS";TAB(35);"ASSISTS" +1670 PRINT TAB(5);"----";TAB(20);"-----";TAB(35);"-------" +1680 FOR T=1 TO 5:PRINT TAB(5);B$(T);TAB(21);T2(T);TAB(36);T3(T) +1690 NEXT T:PRINT +1700 PRINT "SHOTS ON NET":PRINT A$(7)":";S2:PRINT B$(7)":";S3 +1710 END +1720 PRINT: PRINT "THIS IS A SIMULATED HOCKEY GAME." +1730 PRINT "QUESTION RESPONSE" +1740 PRINT "PASS TYPE IN THE NUMBER OF PASSES YOU WOULD" +1750 PRINT " LIKE TO MAKE, FROM 0 TO 3." +1760 PRINT "SHOT TYPE THE NUMBER CORRESPONDING TO THE SHOT" +1770 PRINT " YOU WANT TO MAKE. ENTER:" +1780 PRINT " 1 FOR A SLAPSHOT" +1790 PRINT " 2 FOR A WRISTSHOT" +1800 PRINT " 3 FOR A BACKHAND" +1810 PRINT " 4 FOR A SNAP SHOT" +1820 PRINT "AREA TYPE IN THE NUMBER CORRESPONDING TO" +1830 PRINT " THE AREA YOU ARE AIMING AT. ENTER:" +1840 PRINT " 1 FOR UPPER LEFT HAND CORNER" +1850 PRINT " 2 FOR UPPER RIGHT HAND CORNER" +1860 PRINT " 3 FOR LOWER LEFT HAND CORNER" +1870 PRINT " 4 FOR LOWER RIGHT HAND CORNER" +1880 PRINT +1890 PRINT "AT THE START OF THE GAME, YOU WILL BE ASKED FOR THE NAMES" +1900 PRINT "OF YOUR PLAYERS. THEY ARE ENTERED IN THE ORDER: " +1910 PRINT "LEFT WING, CENTER, RIGHT WING, LEFT DEFENSE," +1920 PRINT "RIGHT DEFENSE, GOALKEEPER. ANY OTHER INPUT REQUIRED WILL" +1930 PRINT "HAVE EXPLANATORY INSTRUCTIONS." +1940 GOTO 90 +1950 END diff --git a/50 Horserace/README.md b/50 Horserace/README.md new file mode 100644 index 00000000..ce781ffd --- /dev/null +++ b/50 Horserace/README.md @@ -0,0 +1,7 @@ +### Horserace + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=92 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/50 Horserace/horserace.bas b/50 Horserace/horserace.bas new file mode 100644 index 00000000..b777f883 --- /dev/null +++ b/50 Horserace/horserace.bas @@ -0,0 +1,130 @@ +100 PRINT TAB(31);"HORSERACE" +110 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +120 PRINT:PRINT:PRINT +210 DIM S(8) +220 PRINT "WELCOME TO SOUTH PORTLAND HIGH RACETRACK" +230 PRINT " ...OWNED BY LAURIE CHEVALIER" +240 PRINT "DO YOU WANT DIRECTIONS"; +250 INPUT X$ +260 IF X$="NO" THEN 320 +270 PRINT"UP TO 10 MAY PLAY. A TABLE OF ODDS WILL BE PRINTED. YOU" +280 PRINT"MAY BET ANY + AMOUNT UNDER 100000 ON ONE HORSE." +290 PRINT "DURING THE RACE, A HORSE WILL BE SHOWN BY ITS" +300 PRINT"NUMBER. THE HORSES RACE DOWN THE PAPER!" +310 PRINT +320 PRINT "HOW MANY WANT TO BET"; +330 INPUT C +340 PRINT "WHEN ? APPEARS,TYPE NAME" +350 FOR A=1 TO C +360 INPUT W$(A) +370 NEXT A +380 PRINT +390 PRINT"HORSE",,"NUMBER","ODDS" +400 PRINT +410 FOR I=1 TO 8: S(I)=0: NEXT I +420 LET R=0 +430 FOR A=1 TO 8 +440 LET D(A)=INT(10*RND(1)+1) +450 NEXT A +460 FOR A=1 TO 8 +470 LET R=R+D(A) +480 NEXT A +490 LET V$(1)="JOE MAW" +500 LET V$(2)="L.B.J." +510 LET V$(3)="MR.WASHBURN" +520 LET V$(4)="MISS KAREN" +530 LET V$(5)="JOLLY" +540 LET V$(6)="HORSE" +550 LET V$(7)="JELLY DO NOT" +560 LET V$(8)="MIDNIGHT" +570 FOR N=1 TO 8 +580 PRINT V$(N),,N,R/D(N);":1" +590 NEXT N +600 PRINT"--------------------------------------------------" +610 PRINT "PLACE YOUR BETS...HORSE # THEN AMOUNT" +620 FOR J=1 TO C +630 PRINT W$(J); +640 INPUT Q(J),P(J) +650 IF P(J)<1 THEN 670 +660 IF P(J)<100000 THEN 690 +670 PRINT" YOU CAN'T DO THAT!" +680 GOTO 630 +690 NEXT J +700 PRINT +710 PRINT"1 2 3 4 5 6 7 8" +720 PRINT"XXXXSTARTXXXX" +730 FOR I=1 TO 8 +740 LET M=I +750 LET M(I)=M +760 LET Y(M(I))=INT(100*RND(1)+1) +770 IF Y(M(I))<10 THEN 860 +780 LET S=INT(R/D(I)+.5) +790 IF Y(M(I))27 THEN 1240 +1180 NEXT A +1190 PRINT M(I); +1200 NEXT I +1210 FOR A=1 TO 28-T +1220 PRINT +1230 NEXT A +1240 PRINT "XXXXFINISHXXXX"; +1242 PRINT +1243 PRINT +1244 PRINT "---------------------------------------------" +1245 PRINT +1250 IF T<28 THEN 720 +1270 PRINT "THE RACE RESULTS ARE:" +1272 LET Z9=1 +1280 FOR I=8 TO 1 STEP-1 +1290 LET F=M(I) +1300 PRINT +1310 PRINT Z9;"PLACE HORSE NO.";F,"AT ";R/D(F);":1" +1312 LET Z9=Z9+1 +1320 NEXT I +1330 FOR J=1 TO C +1340 IF Q(J)<>M(8) THEN 1370 +1350 LET N=Q(J) +1355 PRINT +1360 PRINT W$(J);" WINS $";(R/D(N))*P(J) +1370 NEXT J +1372 PRINT "DO YOU WANT TO BET ON THE NEXT RACE ?" +1374 INPUT "YES OR NO"; O$ +1376 IF O$="YES" THEN 380 +1380 END diff --git a/51 Hurkle/README.md b/51 Hurkle/README.md new file mode 100644 index 00000000..1a13ac8e --- /dev/null +++ b/51 Hurkle/README.md @@ -0,0 +1,7 @@ +### Hurkle + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=94 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/51 Hurkle/hurkle.bas b/51 Hurkle/hurkle.bas new file mode 100644 index 00000000..c758091c --- /dev/null +++ b/51 Hurkle/hurkle.bas @@ -0,0 +1,51 @@ +10 PRINT TAB(33);"HURKLE" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +110 N=5 +120 G=10 +210 PRINT +220 PRINT "A HURKLE IS HIDING ON A";G;"BY";G;"GRID. HOMEBASE" +230 PRINT "ON THE GRID IS POINT 0,0 IN THE SOUTHWEST CORNER," +235 PRINT "AND ANY POINT ON THE GRID IS DESIGNATED BY A" +240 PRINT "PAIR OF WHOLE NUMBERS SEPERATED BY A COMMA. THE FIRST" +245 PRINT "NUMBER IS THE HORIZONTAL POSITION AND THE SECOND NUMBER" +246 PRINT "IS THE VERTICAL POSITION. YOU MUST TRY TO" +250 PRINT "GUESS THE HURKLE'S GRIDPOINT. YOU GET";N;"TRIES." +260 PRINT "AFTER EACH TRY, I WILL TELL YOU THE APPROXIMATE" +270 PRINT "DIRECTION TO GO TO LOOK FOR THE HURKLE." +280 PRINT +285 A=INT(G*RND(1)) +286 B=INT(G*RND(1)) +310 FOR K=1 TO N +320 PRINT "GUESS #";K; +330 INPUT X,Y +340 IF ABS(X-A)+ABS(Y-B)=0 THEN 500 +350 REM PRINT INFO +360 GOSUB 610 +370 PRINT +380 NEXT K +410 PRINT +420 PRINT "SORRY, THAT'S";N;"GUESSES." +430 PRINT "THE HURKLE IS AT ";A;",";B +440 PRINT +450 PRINT "LET'S PLAY AGAIN, HURKLE IS HIDING." +460 PRINT +470 GOTO 285 +500 REM +510 PRINT +520 PRINT "YOU FOUND HIM IN";K;"GUESSES!" +540 GOTO 440 +610 PRINT "GO "; +620 IF Y=B THEN 670 +630 IF Y0 THEN 200 +250 PRINT:PRINT "(FOREIGN INDUSTRY WILL ONLY BUY FARM LAND BECAUSE" +260 PRINT "FOREST LAND IS UNECONOMICAL TO STRIP MINE DUE TO TREES," +270 PRINT "THICKER TOP SOIL, ETC.)" +280 X=1 +299 GOTO 200 +300 D=INT(D-H) +310 A=INT(A+(H*W)) +320 PRINT "HOW MANY RALLODS WILL YOU DISTRIBUTE AMONG YOUR COUNTRYMEN"; +340 INPUT I +342 IF I<0 THEN 320 +350 IF I0 THEN 1002 +602 IF I<>0 THEN 1002 +604 IF J<>0 THEN 1002 +606 IF K<>0 THEN 1002 +609 PRINT +612 PRINT "GOODBYE." +614 PRINT "(IF YOU WISH TO CONTINUE THIS GAME AT A LATER DATE, ANSWER" +616 PRINT "'AGAIN' WHEN ASKED IF YOU WANT INSTRUCTIONS AT THE START" +617 PRINT "OF THE GAME)." +618 STOP +1000 GOTO 600 +1002 PRINT +1003 PRINT +1010 A=INT(A-K) +1020 A4=A +1100 IF INT(I/100-B)>=0 THEN 1120 +1105 IF I/100<50 THEN 1700 +1110 PRINT INT(B-(I/100));"COUNTRYMEN DIED OF STARVATION" +1120 F1=INT(RND(1)*(2000-D)) +1122 IF K<25 THEN 1130 +1125 F1=INT(F1/(K/25)) +1130 IF F1<=0 THEN 1150 +1140 PRINT F1;"COUNTRYMEN DIED OF CARBON-MONOXIDE AND DUST INHALATION" +1150 IF INT((I/100)-B)<0 THEN 1170 +1160 IF F1>0 THEN 1180 +1165 GOTO 1200 +1170 PRINT " YOU WERE FORCED TO SPEND";INT((F1+(B-(I/100)))*9); +1172 PRINT "RALLODS ON FUNERAL EXPENSES" +1174 B5=INT(F1+(B-(I/100))) +1175 A=INT(A-((F1+(B-(I/100)))*9)) +1176 GOTO 1185 +1180 PRINT " YOU WERE FORCED TO SPEND ";INT(F1*9);"RALLODS ON "; +1181 PRINT "FUNERAL EXPENSES." +1182 B5=F1 +1183 A=INT(A-(F1*9)) +1185 IF A>=0 THEN 1194 +1187 PRINT " INSUFFICIENT RESERVES TO COVER COST - LAND WAS SOLD" +1189 D=INT(D+(A/W)) +1190 A=0 +1194 B=INT(B-B5) +1200 IF H=0 THEN 1250 +1220 C1=INT(H+(RND(1)*10)-(RND(1)*20)) +1224 IF C>0 THEN 1230 +1226 C1=C1+20 +1230 PRINT C1;"WORKERS CAME TO THE COUNTRY AND"; +1250 P1=INT(((I/100-B)/10)+(K/25)-((2000-D)/50)-(F1/2)) +1255 PRINT ABS(P1);"COUNTRYMEN "; +1260 IF P1<0 THEN 1275 +1265 PRINT "CAME TO"; +1270 GOTO 1280 +1275 PRINT "LEFT"; +1280 PRINT " THE ISLAND." +1290 B=INT(B+P1) +1292 C=INT(C+C1) +1305 U2=INT(((2000-D)*((RND(1)+1.5)/2))) +1310 IF C=0 THEN 1324 +1320 PRINT "OF ";INT(J);"SQ. MILES PLANTED,"; +1324 IF J>U2 THEN 1330 +1326 U2=J +1330 PRINT " YOU HARVESTED ";INT(J-U2);"SQ. MILES OF CROPS." +1340 IF U2=0 THEN 1370 +1344 IF T1>=2 THEN 1370 +1350 PRINT " (DUE TO "; +1355 IF T1=0 THEN 1365 +1360 PRINT "INCREASED "; +1365 PRINT "AIR AND WATER POLLUTION FROM FOREIGN INDUSTRY.)" +1370 Q=INT((J-U2)*(W/2)) +1380 PRINT "MAKING";INT(Q);"RALLODS." +1390 A=INT(A+Q) +1400 V1=INT(((B-P1)*22)+(RND(1)*500)) +1405 V2=INT((2000-D)*15) +1410 PRINT " YOU MADE";ABS(INT(V1-V2));"RALLODS FROM TOURIST TRADE." +1420 IF V2=0 THEN 1450 +1425 IF V1-V2>=V3 THEN 1450 +1430 PRINT " DECREASE BECAUSE "; +1435 G1=10*RND(1) +1440 IF G1<=2 THEN 1460 +1442 IF G1<=4 THEN 1465 +1444 IF G1<=6 THEN 1470 +1446 IF G1<=8 THEN 1475 +1448 IF G1<=10 THEN 1480 +1450 V3=INT(A+V3) +1451 A=INT(A+V3) +1452 GOTO 1500 +1460 PRINT "FISH POPULATION HAS DWINDLED DUE TO WATER POLLUTION." +1462 GOTO 1450 +1465 PRINT "AIR POLLUTION IS KILLING GAME BIRD POPULATION." +1467 GOTO 1450 +1470 PRINT "MINERAL BATHS ARE BEING RUINED BY WATER POLLUTION." +1472 GOTO 1450 +1475 PRINT "UNPLEASANT SMOG IS DISCOURAGING SUN BATHERS." +1477 GOTO 1450 +1480 PRINT "HOTELS ARE LOOKING SHABBY DUE TO SMOG GRIT." +1482 GOTO 1450 +1500 IF B5>200 THEN 1600 +1505 IF B<343 THEN 1700 +1510 IF (A4/100)>5 THEN 1800 +1515 IF C>B THEN 1550 +1520 IF N5-1=X5 THEN 1900 +1545 GOTO 2000 +1550 PRINT +1552 PRINT +1560 PRINT "THE NUMBER OF FOREIGN WORKERS HAS EXCEEDED THE NUMBER" +1562 PRINT "OF COUNTRYMEN. AS A MINORITY, THEY HAVE REVOLTED AND" +1564 PRINT "TAKEN OVER THE COUNTRY." +1570 IF RND(1)<=.5 THEN 1580 +1574 PRINT "YOU HAVE BEEN THROWN OUT OF OFFICE AND ARE NOW" +1576 PRINT "RESIDING IN PRISON." +1578 GOTO 1590 +1580 PRINT "YOU HAVE BEEN ASSASSINATED." +1590 PRINT +1592 PRINT +1596 STOP +1600 PRINT +1602 PRINT +1610 PRINT B5;"COUNTRYMEN DIED IN ONE YEAR!!!!!" +1615 PRINT "DUE TO THIS EXTREME MISMANAGEMENT, YOU HAVE NOT ONLY" +1620 PRINT "BEEN IMPEACHED AND THROWN OUT OF OFFICE, BUT YOU" +1622 M6=INT(RND(1)*10) +1625 IF M6<=3 THEN 1670 +1630 IF M6<=6 THEN 1680 +1635 IF M6<=10 THEN 1690 +1670 PRINT "ALSO HAD YOUR LEFT EYE GOUGED OUT!" +1672 GOTO 1590 +1680 PRINT "HAVE ALSO GAINED A VERY BAD REPUTATION." +1682 GOTO 1590 +1690 PRINT "HAVE ALSO BEEN DECLARED NATIONAL FINK." +1692 GOTO 1590 +1700 PRINT +1702 PRINT +1710 PRINT "OVER ONE THIRD OF THE POPULTATION HAS DIED SINCE YOU" +1715 PRINT "WERE ELECTED TO OFFICE. THE PEOPLE (REMAINING)" +1720 PRINT "HATE YOUR GUTS." +1730 GOTO 1570 +1800 IF B5-F1<2 THEN 1515 +1807 PRINT +1815 PRINT "MONEY WAS LEFT OVER IN THE TREASURY WHICH YOU DID" +1820 PRINT "NOT SPEND. AS A RESULT, SOME OF YOUR COUNTRYMEN DIED" +1825 PRINT "OF STARVATION. THE PUBLIC IS ENRAGED AND YOU HAVE" +1830 PRINT "BEEN FORCED TO EITHER RESIGN OR COMMIT SUICIDE." +1835 PRINT "THE CHOICE IS YOURS." +1840 PRINT "IF YOU CHOOSE THE LATTER, PLEASE TURN OFF YOUR COMPUTER" +1845 PRINT "BEFORE PROCEEDING." +1850 GOTO 1590 +1900 PRINT +1902 PRINT +1920 PRINT "CONGRATULATIONS!!!!!!!!!!!!!!!!!!" +1925 PRINT "YOU HAVE SUCCESFULLY COMPLETED YOUR";N5;"YEAR TERM" +1930 PRINT "OF OFFICE. YOU WERE, OF COURSE, EXTREMELY LUCKY, BUT" +1935 PRINT "NEVERTHELESS, IT'S QUITE AN ACHIEVEMENT. GOODBYE AND GOOD" +1940 PRINT "LUCK - YOU'LL PROBABLY NEED IT IF YOU'RE THE TYPE THAT" +1945 PRINT "PLAYS THIS GAME." +1950 GOTO 1590 +1960 PRINT "HOW MANY YEARS HAD YOU BEEN IN OFFICE WHEN INTERRUPTED"; +1961 INPUT X5 +1962 IF X5<0 THEN 1590 +1963 IF X5<8 THEN 1969 +1965 PRINT " COME ON, YOUR TERM IN OFFICE IS ONLY";N5;"YEARS." +1967 GOTO 1960 +1969 PRINT "HOW MUCH DID YOU HAVE IN THE TREASURY"; +1970 INPUT A +1971 IF A<0 THEN 1590 +1975 PRINT "HOW MANY COUNTRYMEN"; +1976 INPUT B +1977 IF B<0 THEN 1590 +1980 PRINT "HOW MANY WORKERS"; +1981 INPUT C +1982 IF C<0 THEN 1590 +1990 PRINT "HOW MANY SQUARE MILES OF LAND"; +1991 INPUT D +1992 IF D<0 THEN 1590 +1993 IF D>2000 THEN 1996 +1994 IF D>1000 THEN 100 +1996 PRINT " COME ON, YOU STARTED WITH 1000 SQ. MILES OF FARM LAND" +1997 PRINT " AND 10,000 SQ. MILES OF FOREST LAND." +1998 GOTO 1990 +2000 X5=X5+1 +2020 B5=0 +2040 GOTO 100 +2046 END diff --git a/54 Letter/README.md b/54 Letter/README.md new file mode 100644 index 00000000..eef18d38 --- /dev/null +++ b/54 Letter/README.md @@ -0,0 +1,7 @@ +### Letter + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=99 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/54 Letter/letter.bas b/54 Letter/letter.bas new file mode 100644 index 00000000..3064dbb6 --- /dev/null +++ b/54 Letter/letter.bas @@ -0,0 +1,26 @@ +10 PRINT TAB(33);"LETTER" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +100 PRINT "LETTER GUESSING GAME": PRINT +210 PRINT "I'LL THINK OF A LETTER OF THE ALPHABET, A TO Z." +220 PRINT "TRY TO GUESS MY LETTER AND I'LL GIVE YOU CLUES" +230 PRINT "AS TO HOW CLOSE YOU'RE GETTING TO MY LETTER." +310 L=65+INT(RND(1)*26) +320 G=0 +340 PRINT: PRINT "O.K., I HAVE A LETTER. START GUESSING." +410 PRINT: PRINT "WHAT IS YOUR GUESS"; +420 G=G+1 +430 INPUT A$: A=ASC(A$): PRINT +440 IF A=L THEN 500 +450 IF A>L THEN 480 +460 PRINT "TOO LOW. TRY A HIGHER LETTER.": GOTO 410 +480 PRINT "TOO HIGH. TRY A LOWER LETTER.": GOTO 410 +500 PRINT: PRINT "YOU GOT IT IN";G;"GUESSES!!" +504 IF G<=5 THEN 508 +506 PRINT "BUT IT SHOULDN'T TAKE MORE THAN 5 GUESSES!": GOTO 515 +508 PRINT "GOOD JOB !!!!!" +510 FOR N=1 TO 15: PRINT CHR$(7);: NEXT N +515 PRINT +520 PRINT "LET'S PLAN AGAIN....." +530 GOTO 310 +999 END diff --git a/55 Life/README.md b/55 Life/README.md new file mode 100644 index 00000000..e6a2b702 --- /dev/null +++ b/55 Life/README.md @@ -0,0 +1,7 @@ +### Life + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=100 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/55 Life/life.bas b/55 Life/life.bas new file mode 100644 index 00000000..71313579 --- /dev/null +++ b/55 Life/life.bas @@ -0,0 +1,66 @@ +2 PRINT TAB(34);"LIFE" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT: PRINT: PRINT +8 PRINT "ENTER YOUR PATTERN:" +9 X1=1: Y1=1: X2=24: Y2=70 +10 DIM A(24,70),B$(24) +20 C=1 +30 INPUT B$(C) +40 IF B$(C)="DONE" THEN B$(C)="": GOTO 80 +50 IF LEFT$(B$(C),1)="." THEN B$(C)=" "+RIGHT$(B$(C),LEN(B$(C))-1) +60 C=C+1 +70 GOTO 30 +80 C=C-1: L=0 +90 FOR X=1 TO C-1 +100 IF LEN(B$(X))>L THEN L=LEN(B$(X)) +110 NEXT X +120 X1=11-C/2 +130 Y1=33-L/2 +140 FOR X=1 TO C +150 FOR Y=1 TO LEN(B$(X)) +160 IF MID$(B$(X),Y,1)<>" " THEN A(X1+X,Y1+Y)=1:P=P+1 +170 NEXT Y +180 NEXT X +200 PRINT:PRINT:PRINT +210 PRINT "GENERATION:";G,"POPULATION:";P;: IF I9 THEN PRINT "INVALID!"; +215 X3=24:Y3=70:X4=1: Y4=1: P=0 +220 G=G+1 +225 FOR X=1 TO X1-1: PRINT: NEXT X +230 FOR X=X1 TO X2 +240 PRINT +250 FOR Y=Y1 TO Y2 +253 IF A(X,Y)=2 THEN A(X,Y)=0:GOTO 270 +256 IF A(X,Y)=3 THEN A(X,Y)=1:GOTO 261 +260 IF A(X,Y)<>1 THEN 270 +261 PRINT TAB(Y);"*"; +262 IF XX4 THEN X4=X +266 IF YY4 THEN Y4=Y +270 NEXT Y +290 NEXT X +295 FOR X=X2+1 TO 24: PRINT: NEXT X +299 X1=X3: X2=X4: Y1=Y3: Y2=Y4 +301 IF X1<3 THEN X1=3:I9=-1 +303 IF X2>22 THEN X2=22:I9=-1 +305 IF Y1<3 THEN Y1=3:I9=-1 +307 IF Y2>68 THEN Y2=68:I9=-1 +309 P=0 +500 FOR X=X1-1 TO X2+1 +510 FOR Y=Y1-1 TO Y2+1 +520 C=0 +530 FOR I=X-1 TO X+1 +540 FOR J=Y-1 TO Y+1 +550 IF A(I,J)=1 OR A(I,J)=2 THEN C=C+1 +560 NEXT J +570 NEXT I +580 IF A(X,Y)=0 THEN 610 +590 IF C<3 OR C>4 THEN A(X,Y)=2: GOTO 600 +595 P=P+1 +600 GOTO 620 +610 IF C=3 THEN A(X,Y)=3:P=P+1 +620 NEXT Y +630 NEXT X +635 X1=X1-1:Y1=Y1-1:X2=X2+1:Y2=Y2+1 +640 GOTO 210 +650 END diff --git a/56 Life for Two/README.md b/56 Life for Two/README.md new file mode 100644 index 00000000..34030043 --- /dev/null +++ b/56 Life for Two/README.md @@ -0,0 +1,7 @@ +### Life for Two + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=102 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/56 Life for Two/lifefortwo.bas b/56 Life for Two/lifefortwo.bas new file mode 100644 index 00000000..e970ef6d --- /dev/null +++ b/56 Life for Two/lifefortwo.bas @@ -0,0 +1,83 @@ +2 PRINT TAB(33);"LIFE2" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT: PRINT: PRINT +7 DIM N(6,6),K(18),A(16),X(2),Y(2) +8 DATA 3,102,103,120,130,121,112,111,12 +9 DATA 21,30,1020,1030,1011,1021,1003,1002,1012 +10 FOR M=1 TO 18: READ K(M): NEXT M +13 DATA -1,0,1,0,0,-1,0,1,-1,-1,1,-1,-1,1,1,1 +14 FOR O1= 1 TO 16: READ A(O1): NEXT O1 +20 GOTO 500 +50 FOR J=1 TO 5 +51 FOR K=1 TO 5 +55 IF N(J,K)>99 THEN GOSUB 200 +60 NEXT K +65 NEXT J +90 K=0: M2=0: M3=0 +99 FOR J=0 TO 6: PRINT +100 FOR K=0 TO 6 +101 IF J<>0 THEN IF J<>6 THEN 105 +102 IF K=6 THEN PRINT 0;: GOTO 125 +103 PRINT K;: GOTO 120 +105 IF K<>0 THEN IF K<>6 THEN 110 +106 IF J=6 THEN PRINT 0: GOTO 126 +107 PRINT J;: GOTO 120 +110 GOSUB 300 +120 NEXT K +125 NEXT J +126 RETURN +200 B=1: IF N(J,K)>999 THEN B=10 +220 FOR O1= 1 TO 15 STEP 2 +230 N(J+A(O1),K+A(O1+1))=N(J+A(O1),K+A(O1+1))+B +231 NEXT O1 +239 RETURN +300 IF N(J,K)<3 THEN 399 +305 FOR O1=1 TO 18 +310 IF N(J,K)=K(O1) THEN 350 +315 NEXT O1 +320 GOTO 399 +350 IF O1>9 THEN 360 +351 N(J,K)=100: M2=M2+1: PRINT " * "; +355 RETURN +360 N(J,K)=1000: M3=M3+1: PRINT " # "; +365 RETURN +399 N(J,K)=0: PRINT " ";: RETURN +500 PRINT TAB(10);"U.B. LIFE GAME" +505 M2=0: M3=0 +510 FOR J=1 TO 5 +511 FOR K=1 TO 5 +515 N(J,K)=0 +516 NEXT K +517 NEXT J +519 FOR B=1 TO 2: P1=3: IF B=2 THEN P1=30 +520 PRINT:PRINT "PLAYER";B;" - 3 LIVE PIECES." +535 FOR K1=1 TO 3: GOSUB 700 +540 N(X(B),Y(B))=P1: NEXT K1 +542 NEXT B +559 GOSUB 90 +560 PRINT: GOSUB 50 +570 IF M2=0 THEN IF M3=0 THEN 574 +571 IF M3=0 THEN B=1: GOTO 575 +572 IF M2=0 THEN B=2: GOTO 575 +573 GOTO 580 +574 PRINT: PRINT "A DRAW":GOTO 800 +575 PRINT: PRINT "PLAYER";B;"IS THE WINNER":GOTO 800 +580 FOR B=1 TO 2: PRINT: PRINT: PRINT "PLAYER";B;: GOSUB 700 +581 IF B=99 THEN 560 +582 NEXT B +586 N(X(1),Y(1))=100: N(X(2),Y(2))=1000 +596 GOTO 560 +700 PRINT "X,Y":PRINT"XXXXXX";CHR$(13);"$$$$$$";CHR$(13);"&&&&&&"; +701 PRINT CHR$(13);: INPUT Y(B),X(B) +705 IF X(B)<=5 THEN IF X(B)>0 THEN 708 +706 GOTO 750 +708 IF Y(B)<=5 THEN IF Y(B)>0 THEN 715 +710 GOTO 750 +715 IF N(X(B),Y(B))<>0 THEN 750 +720 IF B=1 THEN RETURN +725 IF X(1)=X(2) THEN IF Y(1)=Y(2) THEN 740 +730 RETURN +740 PRINT "SAME COORD. SET TO 0" +741 N(X(B)+1,Y(B)+1)=0: B=99: RETURN +750 PRINT "ILLEGAL COORDS. RETYPE": GOTO 700 +999 END diff --git a/57 Literature Quiz/README.md b/57 Literature Quiz/README.md new file mode 100644 index 00000000..54605904 --- /dev/null +++ b/57 Literature Quiz/README.md @@ -0,0 +1,7 @@ +### Literature Quiz + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=104 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/57 Literature Quiz/litquiz.bas b/57 Literature Quiz/litquiz.bas new file mode 100644 index 00000000..fe731b2c --- /dev/null +++ b/57 Literature Quiz/litquiz.bas @@ -0,0 +1,49 @@ +1 PRINT TAB(25);"LITERATURE QUIZ" +2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +3 PRINT:PRINT:PRINT +5 R=0 +10 PRINT "TEST YOUR KNOWLEDGE OF CHILDREN'S LITERATURE." +12 PRINT: PRINT "THIS IS A MULTIPLE-CHOICE QUIZ." +13 PRINT "TYPE A 1, 2, 3, OR 4 AFTER THE QUESTION MARK." +15 PRINT: PRINT "GOOD LUCK!": PRINT: PRINT +40 PRINT "IN PINOCCHIO, WHAT WAS THE NAME OF THE CAT" +42 PRINT "1)TIGGER, 2)CICERO, 3)FIGARO, 4)GUIPETTO"; +43 INPUT A: IF A=3 THEN 46 +44 PRINT "SORRY...FIGARO WAS HIS NAME.": GOTO 50 +46 PRINT "VERY GOOD! HERE'S ANOTHER." +47 R=R+1 +50 PRINT: PRINT +51 PRINT "FROM WHOSE GARDEN DID BUGS BUNNY STEAL THE CARROTS?" +52 PRINT "1)MR. NIXON'S, 2)ELMER FUDD'S, 3)CLEM JUDD'S, 4)STROMBOLI'S"; +53 INPUT A: IF A=2 THEN 56 +54 PRINT "TOO BAD...IT WAS ELMER FUDD'S GARDEN.": GOTO 60 +56 PRINT "PRETTY GOOD!" +57 R=R+1 +60 PRINT: PRINT +61 PRINT "IN THE WIZARD OF OS, DOROTHY'S DOG WAS NAMED" +62 PRINT "1)CICERO, 2)TRIXIA, 3)KING, 4)TOTO"; +63 INPUT A: IF A=4 THEN 66 +64 PRINT "BACK TO THE BOOKS,...TOTO WAS HIS NAME.": GOTO 70 +66 PRINT "YEA! YOU'RE A REAL LITERATURE GIANT." +67 R=R+1 +70 PRINT:PRINT +71 PRINT "WHO WAS THE FAIR MAIDEN WHO ATE THE POISON APPLE" +72 PRINT "1)SLEEPING BEAUTY, 2)CINDERELLA, 3)SNOW WHITE, 4)WENDY"; +73 INPUT A: IF A=3 THEN 76 +74 PRINT "OH, COME ON NOW...IT WAS SNOW WHITE." +75 GOTO 80 +76 PRINT "GOOD MEMORY!" +77 R=R+1 +80 PRINT:PRINT +85 IF R=4 THEN 100 +90 IF R<2 THEN 200 +92 PRINT "NOT BAD, BUT YOU MIGHT SPEND A LITTLE MORE TIME" +94 PRINT "READING THE NURSERY GREATS." +96 STOP +100 PRINT "WOW! THAT'S SUPER! YOU REALLY KNOW YOUR NURSERY" +110 PRINT "YOUR NEXT QUIZ WILL BE ON 2ND CENTURY CHINESE" +120 PRINT "LITERATURE (HA, HA, HA)" +130 STOP +200 PRINT "UGH. THAT WAS DEFINITELY NOT TOO SWIFT. BACK TO" +205 PRINT "NURSERY SCHOOL FOR YOU, MY FRIEND." +999 END diff --git a/58 Love/README.md b/58 Love/README.md new file mode 100644 index 00000000..35fb6f7d --- /dev/null +++ b/58 Love/README.md @@ -0,0 +1,7 @@ +### Love + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=105 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/58 Love/love.bas b/58 Love/love.bas new file mode 100644 index 00000000..c53d2ae3 --- /dev/null +++ b/58 Love/love.bas @@ -0,0 +1,34 @@ +2 PRINT TAB(33);"LOVE" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT: PRINT: PRINT +20 PRINT "A TRIBUTE TO THE GREAT AMERICAN ARTIST, ROBERT INDIANA." +30 PRINT "HIS GREATEST WORK WILL BE REPRODUCED WITH A MESSAGE OF" +40 PRINT "YOUR CHOICE UP TO 60 CHARACTERS. IF YOU CAN'T THINK OF" +50 PRINT "A MESSAGE, SIMPLE TYPE THE WORD 'LOVE'": PRINT +60 INPUT "YOUR MESSAGE, PLEASE";A$: L=LEN(A$) +70 DIM T$(120): FOR I=1 TO 10: PRINT: NEXT I +100 FOR J=0 TO INT(60/L) +110 FOR I=1 TO L +120 T$(J*L+I)=MID$(A$,I,1) +130 NEXT I: NEXT J +140 C=0 +200 A1=1: P=1: C=C+1: IF C=37 THEN 999 +205 PRINT +210 READ A: A1=A1+A: IF P=1 THEN 300 +240 FOR I=1 TO A: PRINT " ";: NEXT I: P=1: GOTO 400 +300 FOR I=A1-A TO A1-1: PRINT T$(I);: NEXT I: P=0 +400 IF A1>60 THEN 200 +410 GOTO 210 +600 DATA 60,1,12,26,9,12,3,8,24,17,8,4,6,23,21,6,4,6,22,12,5,6,5 +610 DATA 4,6,21,11,8,6,4,4,6,21,10,10,5,4,4,6,21,9,11,5,4 +620 DATA 4,6,21,8,11,6,4,4,6,21,7,11,7,4,4,6,21,6,11,8,4 +630 DATA 4,6,19,1,1,5,11,9,4,4,6,19,1,1,5,10,10,4,4,6,18,2,1,6,8,11,4 +640 DATA 4,6,17,3,1,7,5,13,4,4,6,15,5,2,23,5,1,29,5,17,8 +650 DATA 1,29,9,9,12,1,13,5,40,1,1,13,5,40,1,4,6,13,3,10,6,12,5,1 +660 DATA 5,6,11,3,11,6,14,3,1,5,6,11,3,11,6,15,2,1 +670 DATA 6,6,9,3,12,6,16,1,1,6,6,9,3,12,6,7,1,10 +680 DATA 7,6,7,3,13,6,6,2,10,7,6,7,3,13,14,10,8,6,5,3,14,6,6,2,10 +690 DATA 8,6,5,3,14,6,7,1,10,9,6,3,3,15,6,16,1,1 +700 DATA 9,6,3,3,15,6,15,2,1,10,6,1,3,16,6,14,3,1,10,10,16,6,12,5,1 +710 DATA 11,8,13,27,1,11,8,13,27,1,60 +999 FOR I=1 TO 10: PRINT: NEXT I: END diff --git a/59 Lunar LEM Rocket/README.md b/59 Lunar LEM Rocket/README.md new file mode 100644 index 00000000..eced07e0 --- /dev/null +++ b/59 Lunar LEM Rocket/README.md @@ -0,0 +1,7 @@ +### Lunar LEM Rocket + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=106 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/59 Lunar LEM Rocket/lem.bas b/59 Lunar LEM Rocket/lem.bas new file mode 100644 index 00000000..aa46895f --- /dev/null +++ b/59 Lunar LEM Rocket/lem.bas @@ -0,0 +1,246 @@ +2 PRINT TAB(34);"LEM" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +7 REM ROCKT2 IS AN INTERACTIVE GAME THAT SIMULATES A LUNAR +8 REM LANDING IS SIMILAR TO THAT OF THE APOLLO PROGRAM. +9 REM THERE IS ABSOLUTELY NO CHANCE INVOLVED +10 Z$="GO" +15 B1=1 +20 M=17.95 +25 F1=5.25 +30 N=7.5 +35 R0=926 +40 V0=1.29 +45 T=0 +50 H0=60 +55 R=R0+H0 +60 A=-3.425 +65 R1=0 +70 A1=8.84361E-04 +75 R3=0 +80 A3=0 +85 M1=7.45 +90 M0=M1 +95 B=750 +100 T1=0 +105 F=0 +110 P=0 +115 N=1 +120 M2=0 +125 S=0 +130 C=0 +135 IF Z$="YES" THEN 1150 +140 PRINT +145 PRINT "LUNAR LANDING SIMULATION" +150 PRINT +155 PRINT "HAVE YOU FLOWN AN APOLLO/LEM MISSION BEFORE"; +160 PRINT " (YES OR NO)"; +165 INPUT Q$ +170 IF Q$="YES" THEN 190 +175 IF Q$="NO" THEN 205 +180 PRINT "JUST ANSWER THE QUESTION, PLEASE, "; +185 GOTO 160 +190 PRINT +195 PRINT "INPUT MEASUREMENT OPTION NUMBER"; +200 GOTO 225 +205 PRINT +210 PRINT "WHICH SYSTEM OF MEASUREMENT DO YOU PREFER?" +215 PRINT " 1=METRIC 0=ENGLISH" +220 PRINT "ENTER THE APPROPRIATE NUMBER"; +225 INPUT K +230 PRINT +235 IF K=0 THEN 280 +240 IF K=1 THEN 250 +245 GOTO 220 +250 Z=1852.8 +255 M$="METERS" +260 G3=3.6 +265 N$=" KILOMETERS" +270 G5=1000 +275 GOTO 305 +280 Z=6080 +285 M$="FEET" +290 G3=.592 +295 N$="N.MILES" +300 G5=Z +305 IF B1=3 THEN 670 +310 IF Q$="YES" THEN 485 +315 PRINT +320 PRINT " YOU ARE ON A LUNAR LANDING MISSION. AS THE PILOT OF" +325 PRINT "THE LUNAR EXCURSION MODULE, YOU WILL BE EXPECTED TO" +330 PRINT "GIVE CERTAIN COMMANDS TO THE MODULE NAVIGATION SYSTEM." +335 PRINT "THE ON-BOARD COMPUTER WILL GIVE A RUNNING ACCOUNT" +340 PRINT "OF INFORMATION NEEDED TO NAVIGATE THE SHIP." +345 PRINT +350 PRINT +355 PRINT "THE ATTITUDE ANGLE CALLED FOR IS DESCRIBED AS FOLLOWS." +360 PRINT "+ OR -180 DEGREES IS DIRECTLY AWAY FROM THE MOON" +365 PRINT "-90 DEGREES IS ON A TANGENT IN THE DIRECTION OF ORBIT" +370 PRINT "+90 DEGREES IS ON A TANGENT FROM THE DIRECTION OF ORBIT" +375 PRINT "0 (ZERO) DEGREES IS DIRECTLY TOWARD THE MOON" +380 PRINT +385 PRINT TAB(30);"-180|+180" +390 PRINT TAB(34);"^" +395 PRINT TAB(27);"-90 < -+- > +90" +400 PRINT TAB(34);"!" +405 PRINT TAB(34);"0" +410 PRINT TAB(21);"<<<< DIRECTION OF ORBIT <<<<" +415 PRINT +420 PRINT TAB(20);"------ SURFACE OF MOON ------" +425 PRINT +430 PRINT +435 PRINT "ALL ANGLES BETWEEN -180 AND +180 DEGREES ARE ACCEPTED." +440 PRINT +445 PRINT "1 FUEL UNIT = 1 SEC. AT MAX THRUST" +450 PRINT "ANY DISCREPANCIES ARE ACCOUNTED FOR IN THE USE OF FUEL" +455 PRINT "FOR AN ATTITUDE CHANGE." +460 PRINT "AVAILABLE ENGINE POWER: 0 (ZERO) AND ANY VALUE BETWEEN" +465 PRINT "10 AND 100 PERCENT." +470 PRINT +475 PRINT"NEGATIVE THRUST OR TIME IS PROHIBITED." +480 PRINT +485 PRINT +490 PRINT "INPUT: TIME INTERVAL IN SECONDS ------ (T)" +495 PRINT " PERCENTAGE OF THRUST ---------- (P)" +500 PRINT " ATTITUDE ANGLE IN DEGREES ----- (A)" +505 PRINT +510 IF Q$="YES" THEN 535 +515 PRINT "FOR EXAMPLE:" +520 PRINT "T,P,A? 10,65,-60" +525 PRINT "TO ABORT THE MISSION AT ANY TIME, ENTER 0,0,0" +530 PRINT +535 PRINT "OUTPUT: TOTAL TIME IN ELAPSED SECONDS" +540 PRINT " HEIGHT IN ";M$ +545 PRINT " DISTANCE FROM LANDING SITE IN ";M$ +550 PRINT " VERTICAL VELOCITY IN ";M$;"/SECOND" +555 PRINT " HORIZONTAL VELOCITY IN ";M$;"/SECOND" +560 PRINT " FUEL UNITS REMAINING" +565 PRINT +570 GOTO 670 +575 PRINT +580 PRINT "T,P,A"; +585 INPUT T1,F,P +590 F=F/100 +595 IF T1<0 THEN 905 +600 IF T1=0 THEN 1090 +605 IF ABS(F-.05)>1 THEN 945 +610 IF ABS(F-.05)<.05 THEN 945 +615 IF ABS(P)>180 THEN 925 +620 N=20 +625 IF T1<400 THEN 635 +630 N=T1/20 +635 T1=T1/N +640 P=P*3.14159/180 +645 S=SIN(P) +650 C=COS(P) +655 M2=M0*T1*F/B +660 R3=-.5*R0*((V0/R)^2)+R*A1*A1 +665 A3=-2*R1*A1/R +670 FOR I=1 TO N +675 IF M1=0 THEN 715 +680 M1=M1-M2 +685 IF M1>0 THEN 725 +690 F=F*(1+M1/M2) +695 M2=M1+M2 +700 PRINT "YOU ARE OUT OF FUEL." +705 M1=0 +710 GOTO 725 +715 F=0 +720 M2=0 +725 M=M-.5*M2 +730 R4=R3 +735 R3=-.5*R0*((V0/R)^2)+R*A1*A1 +740 R2=(3*R3-R4)/2+.00526*F1*F*C/M +745 A4=A3 +750 A3=-2*R1*A1/R +755 A2=(3*A3-A4)/2+.0056*F1*F*S/(M*R) +760 X=R1*T1+.5*R2*T1*T1 +765 R=R+X +770 H0=H0+X +775 R1=R1+R2*T1 +780 A=A+A1*T1+.5*A2*T1*T1 +785 A1=A1+A2*T1 +790 M=M-.5*M2 +795 T=T+T1 +800 IF H0<3.287828E-04 THEN 810 +805 NEXT I +810 H=H0*Z +815 H1=R1*Z +820 D=R0*A*Z +825 D1=R*A1*Z +830 T2=M1*B/M0 +835 PRINT " ";T;TAB(10);H;TAB(23);D; +840 PRINT TAB(37);H1;TAB(49);D1;TAB(60);T2 +845 IF H0<3.287828E-04 THEN 880 +850 IF R0*A>164.474 THEN 1050 +855 IF M1>0 THEN 580 +860 T1=20 +865 F=0 +870 P=0 +875 GOTO 620 +880 IF R1<-8.21957E-04 THEN 1020 +885 IF ABS(R*A1)>4.93174E-04 THEN 1020 +890 IF H0<-3.287828E-04 THEN 1020 +895 IF ABS(D)>10*Z THEN 1065 +900 GOTO 995 +905 PRINT +910 PRINT "THIS SPACECRAFT IS NOT ABLE TO VIOLATE THE SPACE-"; +915 PRINT "TIME CONTINUUM." +920 GOTO 575 +925 PRINT +930 PRINT "IF YOU WANT TO SPIN AROUND, GO OUTSIDE THE MODULE" +935 PRINT "FOR AN E.V.A." +940 GOTO 575 +945 PRINT +950 PRINT "IMPOSSIBLE THRUST VALUE "; +955 IF F<0 THEN 985 +960 IF F-.05<.05 THEN 975 +965 PRINT "TOO LARGE" +970 GOTO 575 +975 PRINT "TOO SMALL" +980 GOTO 575 +985 PRINT "NEGATIVE" +990 GOTO 575 +995 PRINT +1000 PRINT "TRANQUILITY BASE HERE -- THE EAGLE HAS LANDED." +1005 PRINT "CONGRATULATIONS -- THERE WAS NO SPACECRAFT DAMAGE." +1010 PRINT "YOU MAY NOW PROCEED WITH SURFACE EXPLORATION." +1015 GOTO 1100 +1020 PRINT +1025 PRINT "CRASH !!!!!!!!!!!!!!!!" +1030 PRINT "YOUR IMPACT CREATED A CRATER";ABS(H);M$;" DEEP." +1035 X1=SQR(D1*D1+H1*H1)*G3 +1040 PRINT "AT CONTACT YOU WERE TRAVELING";X1;N$;"/HR" +1045 GOTO 1100 +1050 PRINT +1055 PRINT "YOU HAVE BEEN LOST IN SPACE WITH NO HOPE OF RECOVERY." +1060 GOTO 1100 +1065 PRINT "YOU ARE DOWN SAFELY - " +1075 PRINT +1080 PRINT "BUT MISSED THE LANDING SITE BY";ABS(D/G5);N$;"." +1085 GOTO 1100 +1090 PRINT +1095 PRINT "MISSION ABENDED" +1100 PRINT +1105 PRINT "DO YOU WANT TO TRY IT AGAIN (YES/NO)?" +1110 INPUT Z$ +1115 IF Z$="YES" THEN 20 +1120 IF Z$="NO" THEN 1130 +1125 GOTO 1105 +1130 PRINT +1135 PRINT "TOO BAD, THE SPACE PROGRAM HATES TO LOSE EXPERIENCED" +1140 PRINT "ASTRONAUTS." +1145 STOP +1150 PRINT +1155 PRINT "OK, DO YOU WANT THE COMPLETE INSTRUCTIONS OR THE INPUT -" +1160 PRINT "OUTPUT STATEMENTS?" +1165 PRINT "1=COMPLETE INSTRUCTIONS" +1170 PRINT "2=INPUT-OUTPUT STATEMENTS" +1175 PRINT "3=NEITHER" +1180 INPUT B1 +1185 Q$="NO" +1190 IF B1=1 THEN 205 +1195 Q$="YES" +1200 IF B1=2 THEN 190 +1205 IF B1=3 THEN 190 +1210 GOTO 1165 +1215 END diff --git a/59 Lunar LEM Rocket/lunar.bas b/59 Lunar LEM Rocket/lunar.bas new file mode 100644 index 00000000..17b8ed11 --- /dev/null +++ b/59 Lunar LEM Rocket/lunar.bas @@ -0,0 +1,48 @@ +10 PRINT TAB(33);"LUNAR" +20 PRINT TAB(l5);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +25 PRINT:PRINT:PRINT +30 PRINT "THIS IS A COMPUTER SIMULATION OF AN APOLLO LUNAR" +40 PRINT "LANDING CAPSULE.": PRINT: PRINT +50 PRINT "THE ON-BOARD COMPUTER HAS FAILED (IT WAS MADE BY" +60 PRINT "XEROX) SO YOU HAVE TO LAND THE CAPSULE MANUALLY." +70 PRINT: PRINT "SET BURN RATE OF RETRO ROCKETS TO ANY VALUE BETWEEN" +80 PRINT "0 (FREE FALL) AND 200 (MAXIMUM BURN) POUNDS PER SECOND." +90 PRINT "SET NEW BURN RATE EVERY 10 SECONDS.": PRINT +100 PRINT "CAPSULE WEIGHT 32,500 LBS; FUEL WEIGHT 16,500 LBS." +110 PRINT: PRINT: PRINT: PRINT "GOOD LUCK" +120 L=0 +130 PRINT: PRINT "SEC","MI + FT","MPH","LB FUEL","BURN RATE":PRINT +140 A=120:V=1:M=33000:N=16500:G=1E-03:Z=1.8 +150 PRINT L,INT(A);INT(5280*(A-INT(A))),3600*V,M-N,:INPUT K:T=10 +160 IF M-N<1E-03 THEN 240 +170 IF T<1E-03 THEN 150 +180 S=T: IF M>=N+S*K THEN 200 +190 S=(M-N)/K +200 GOSUB 420: IF I<=O THEN 340 +210 IF V<=0 THEN 230 +220 IF J<0 THEN 370 +230 GOSUB 330: GOTO 160 +240 PRINT "FUEL OUT AT";L;"SECONDS":S=(-V+SQR(V*V+2*A*G))/G +250 V=V+G*S: L=L+S +260 W=3600*V: PRINT "ON MOON AT";L;"SECONDS - IMPACT VELOCITY";W;"MPH" +274 IF W<=1.2 THEN PRINT "PERFECT LANDING!": GOTO 440 +280 IF W<=10 THEN PRINT "GOOD LANDING (COULD RE BETTER)":GOTO 440 +282 IF W>60 THEN 300 +284 PRINT "CRAFT DAMAGE... YOU'RE STRANDED HERE UNTIL A RESCUE" +286 PRINT "PARTY ARRIVES. HOPE YOU HAVE ENOUGH OXYGEN!" +288 GOTO 440 +300 PRINT "SORRY THERE NERE NO SURVIVORS. YOU BLOW IT!" +310 PRINT "IN FACT, YOU BLASTED A NEW LUNAR CRATER";W*.227;"FEET DEEP!" +320 GOTO 440 +330 L=L+S: T=T-S: M=M-S*K: A=I: V=J: RETURN +340 IF S<5E-03 THEN 260 +350 D=V+SQR(V*V+2*A*(G-Z*K/M)):S=2*A/D +360 GOSUB 420: GOSUB 330: GOTO 340 +370 W=(1-M*G/(Z*K))/2: S=M*V/(Z*K*(W+SQR(W*W+V/Z)))+.05:GOSUB 420 +380 IF I<=0 THEN 340 +390 GOSUB 330: IF J>0 THEN 160 +400 IF V>0 THEN 370 +410 GOTO 160 +420 Q=S*K/M: J=V+G*S+Z*(-Q-Q*Q/2-Q^3/3-Q^4/4-Q^5/5) +430 I=A-G*S*S/2-V*S+Z*S*(Q/2+Q^2/6+Q^3/12+Q^4/20+Q^5/30):RETURN +440 PRINT:PRINT:PRINT:PRINT "TRY AGAIN??": GOTO 70 diff --git a/59 Lunar LEM Rocket/rocket.bas b/59 Lunar LEM Rocket/rocket.bas new file mode 100644 index 00000000..efcd22fb --- /dev/null +++ b/59 Lunar LEM Rocket/rocket.bas @@ -0,0 +1,71 @@ +10 PRINT TAB(30); "ROCKET" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +70 PRINT "LUNAR LANDING SIMULATION" +80 PRINT "----- ------- ----------": PRINT +100 INPUT "DO YOU WANT INSTRUCTIONS (YES OR NO)";A$ +110 IF A$="NO" THEN 390 +160 PRINT +200 PRINT"YOU ARE LANDING ON THE MOON AND AND HAVE TAKEN OVER MANUAL" +210 PRINT"CONTROL 1000 FEET ABOVE A GOOD LANDING SPOT. YOU HAVE A DOWN-" +220 PRINT"WARD VELOCITY OF 50 FEET/SEC. 150 UNITS OF FUEL REMAIN." +225 PRINT +230 PRINT"HERE ARE THE RULES THAT GOVERN YOUR APOLLO SPACE-CRAFT:": PRINT +240 PRINT"(1) AFTER EACH SECOND THE HEIGHT, VELOCITY, AND REMAINING FUEL" +250 PRINT" WILL BE REPORTED VIA DIGBY YOUR ON-BOARD COMPUTER." +260 PRINT"(2) AFTER THE REPORT A '?' WILL APPEAR. ENTER THE NUMBER" +270 PRINT" OF UNITS OF FUEL YOU WISH TO BURN DURING THE NEXT" +280 PRINT" SECOND. EACH UNIT OF FUEL WILL SLOW YOUR DESCENT BY" +290 PRINT" 1 FOOT/SEC." +310 PRINT"(3) THE MAXIMUM THRUST OF YOUR ENGINE IS 30 FEET/SEC/SEC" +320 PRINT" OR 30 UNITS OF FUEL PER SECOND." +330 PRINT"(4) WHEN YOU CONTACT THE LUNAR SURFACE. YOUR DESCENT ENGINE" +340 PRINT" WILL AUTOMATICALLY SHUT DOWN AND YOU WILL BE GIVEN A" +350 PRINT" REPORT OF YOUR LANDING SPEED AND REMAINING FUEL." +360 PRINT"(5) IF YOU RUN OUT OF FUEL THE '?' WILL NO LONGER APPEAR" +370 PRINT" BUT YOUR SECOND BY SECOND REPORT WILL CONTINUE UNTIL" +380 PRINT" YOU CONTACT THE LUNAR SURFACE.":PRINT +390 PRINT"BEGINNING LANDING PROCEDURE..........":PRINT +400 PRINT"G O O D L U C K ! ! !" +420 PRINT:PRINT +430 PRINT"SEC FEET SPEED FUEL PLOT OF DISTANCE" +450 PRINT +455 T=0:H=1000:V=50:F=150 +490 PRINT T;TAB(6);H;TAB(16);V;TAB(26);F;TAB(35);"I";TAB(H/15);"*" +500 INPUT B +510 IF B<0 THEN 650 +520 IF B>30 THEN B=30 +530 IF B>F THEN B=F +540 V1=V-B+5 +560 F=F-B +570 H=H- .5*(V+V1) +580 IF H<=0 THEN 670 +590 T=T+1 +600 V=V1 +610 IF F>0 THEN 490 +615 IF B=0 THEN 640 +620 PRINT"**** OUT OF FUEL ****" +640 PRINT T;TAB(4);H;TAB(12);V;TAB(20);F;TAB(29);"I";TAB(H/12+29);"*" +650 B=0 +660 GOTO 540 +670 PRINT"***** CONTACT *****" +680 H=H+ .5*(V1+V) +690 IF B=5 THEN 720 +700 D=(-V+SQR(V*V+H*(10-2*B)))/(5-B) +710 GOTO 730 +720 D=H/V +730 V1=V+(5-B)*D +760 PRINT"TOUCHDOWN AT";T+D;"SECONDS." +770 PRINT"LANDING VELOCITY=";V1;"FEET/SEC." +780 PRINT F;"UNITS OF FUEL REMAINING." +790 IF V1<>0 THEN 810 +800 PRINT"CONGRATULATIONS! A PERFECT LANDING!!" +805 PRINT"YOUR LICENSE WILL BE RENEWED.......LATER." +810 IF ABS(V1)<2 THEN 840 +820 PRINT"***** SORRY, BUT YOU BLEW IT!!!!" +830 PRINT"APPROPRIATE CONDOLENCES WILL BE SENT TO YOUR NEXT OF KIN." +840 PRINT:PRINT:PRINT +850 INPUT "ANOTHER MISSION";A$ +860 IF A$="YES" THEN 390 +870 PRINT: PRINT "CONTROL OUT.": PRINT +999 END diff --git a/60 Mastermind/README.md b/60 Mastermind/README.md new file mode 100644 index 00000000..d78cf527 --- /dev/null +++ b/60 Mastermind/README.md @@ -0,0 +1,7 @@ +### MasterMind + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=110 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/60 Mastermind/mastermind.bas b/60 Mastermind/mastermind.bas new file mode 100644 index 00000000..774c062c --- /dev/null +++ b/60 Mastermind/mastermind.bas @@ -0,0 +1,232 @@ +2 PRINT TAB(30);"MASTERMIND" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT: PRINT: PRINT +10 REM +20 REM MASTERMIND II +30 REM STEVE NORTH +40 REM CREATIVE COMPUTING +50 REM PO BOX 789-M MORRISTOWN NEW JERSEY 07960 +60 REM +70 REM +80 INPUT "NUMBER OF COLORS";C9 +90 IF C9>8 THEN PRINT "NO MORE THAN 8, PLEASE!":GOTO 80 +100 INPUT "NUMBER OF POSITIONS";P9 +110 INPUT "NUMBER OF ROUNDS";R9 +120 P=C9^P9 +130 PRINT "TOTAL POSSIBILITIES =";P +140 H=0:C=0 +150 DIM Q(P9),S(10,2),S$(10),A$(P9),G$(P9),I(P),H$(P9) +160 L$="BWRGOYPT" +170 PRINT +180 PRINT +190 PRINT "COLOR LETTER" +200 PRINT "===== ======" +210 FOR X=1 TO C9 +220 READ X$ +230 PRINT X$;TAB(13);MID$(L$,X,1) +240 NEXT X +250 PRINT +260 FOR R=1 TO R9 +270 PRINT +280 PRINT "ROUND NUMBER";R;"----" +290 PRINT +300 PRINT "GUESS MY COMBINATION.":PRINT +310 REM GET A COMBINATION +320 A=INT(P*RND(1)+1) +330 GOSUB 3000 +340 FOR X=1 TO A +350 GOSUB 3500 +360 NEXT X +370 FOR M=1 TO 10 +380 PRINT "MOVE # ";M;" GUESS ";:INPUT X$ +390 IF X$="BOARD" THEN 2000 +400 IF X$="QUIT" THEN 2500 +410 IF LEN(X$)<>P9 THEN PRINT "BAD NUMBER OF POSITIONS.":GOTO 380 +420 REM UNPACK X$ INTO G$(1-P9) +430 FOR X=1 TO P9 +440 FOR Y=1 TO C9 +450 IF MID$(X$,X,1)=MID$(L$,Y,1) THEN 480 +460 NEXT Y +470 PRINT "'"; MID$(X$,X,1); "' IS UNRECOGNIZED.":GOTO 380 +480 G$(X)=MID$(X$,X,1) +490 NEXT X +500 REM NOW WE CONVERT Q(1-P9) INTO A$(1-P9) [ACTUAL GUESS] +510 GOSUB 4000 +520 REM AND GET NUMBER OF BLACKS AND WHITES +530 GOSUB 4500 +540 IF B=P9 THEN 630 +550 REM TELL HUMAN RESULTS +560 PRINT "YOU HAVE ";B;" BLACKS AND ";W;" WHITES." +570 REM SAVE ALL THIS STUFF FOR BOARD PRINTOUT LATER +580 S$(M)=X$ +590 S(M,1)=B +600 S(M,2)=W +610 NEXT M +620 PRINT "YOU RAN OUT OF MOVES! THAT'S ALL YOU GET!":GOTO 640 +622 GOSUB 4000 +623 PRINT "THE ACTUAL COMBINATION WAS: "; +624 FOR X=1 TO P9 +625 PRINT A$(X); +626 NEXT X +627 PRINT +630 PRINT "YOU GUESSED IT IN ";M;" MOVES!" +640 H=H+M +650 GOSUB 5000 +660 REM +670 REM NOW COMPUTER GUESSES +680 REM +690 FOR X=1 TO P +700 I(X)=1 +710 NEXT X +720 PRINT "NOW I GUESS. THINK OF A COMBINATION." +730 INPUT "HIT RETURN WHEN READY:";X$ +740 FOR M=1 TO 10 +750 GOSUB 3000 +760 REM FIND A GUESS +770 G=INT(P*RND(1)+1) +780 IF I(G)=1 THEN 890 +790 FOR X=G TO P +800 IF I(X)=1 THEN 880 +810 NEXT X +820 FOR X=1 TO G +830 IF I(X)=1 THEN 880 +840 NEXT X +850 PRINT "YOU HAVE GIVEN ME INCONSISTENT INFORMATION." +860 PRINT "TRY AGAIN, AND THIS TIME PLEASE BE MORE CAREFUL." +870 GOTO 660 +880 G=X +890 REM NOW WE CONVERT GUESS #G INTO G$ +900 FOR X=1 TO G +910 GOSUB 3500 +920 NEXT X +930 GOSUB 6000 +940 PRINT "MY GUESS IS: "; +950 FOR X=1 TO P9 +960 PRINT H$(X); +970 NEXT X +980 INPUT " BLACKS, WHITES ";B1,W1 +990 IF B1=P9 THEN 1120 +1000 GOSUB 3000 +1010 FOR X=1 TO P +1020 GOSUB 3500 +1030 IF I(X)=0 THEN 1070 +1035 GOSUB 6500 +1040 GOSUB 4000 +1050 GOSUB 4500 +1060 IF B1<>B OR W1<>W THEN I(X)=0 +1070 NEXT X +1080 NEXT M +1090 PRINT "I USED UP ALL MY MOVES!" +1100 PRINT "I GUESS MY CPU IS JUST HAVING AN OFF DAY." +1110 GOTO 1130 +1120 PRINT "I GOT IT IN ";M;" MOVES!" +1130 C=C+M +1140 GOSUB 5000 +1150 NEXT R +1160 PRINT "GAME OVER" +1170 PRINT "FINAL SCORE:" +1180 GOSUB 5040 +1190 STOP +2000 REM +2010 REM BOARD PRINTOUT ROUTINE +2020 REM +2025 PRINT +2030 PRINT "BOARD" +2040 PRINT "MOVE GUESS BLACK WHITE" +2050 FOR Z=1 TO M-1 +2060 PRINT Z;TAB(9);S$(Z);TAB(25);S(Z,1);TAB(35);S(Z,2) +2070 NEXT Z +2075 PRINT +2080 GOTO 380 +2500 REM +2510 REM QUIT ROUTINE +2520 REM +2530 PRINT "QUITTER! MY COMBINATION WAS: "; +2535 GOSUB 4000 +2540 FOR X=1 TO P9 +2550 PRINT A$(X); +2560 NEXT X +2565 PRINT +2570 PRINT "GOOD BYE" +2580 STOP +3000 REM +3010 REM INITIALIZE Q(1-P9) TO ZEROS +3020 REM +3030 FOR S=1 TO P9 +3040 Q(S)=0 +3050 NEXT S +3060 RETURN +3500 REM +3510 REM INCREMENT Q(1-P9) +3520 REM +3522 IF Q(1)>0 THEN 3530 +3524 REM IF ZERO, THIS IS OUR FIRST INCREMENT: MAKE ALL ONES +3526 FOR S=1 TO P9 +3527 Q(S)=1 +3528 NEXT S +3529 RETURN +3530 Q=1 +3540 Q(Q)=Q(Q)+1 +3550 IF Q(Q)<=C9 THEN RETURN +3560 Q(Q)=1 +3570 Q=Q+1 +3580 GOTO 3540 +4000 REM +4010 REM CONVERT Q(1-P9) TO A$(1-P9) +4020 REM +4030 FOR S=1 TO P9 +4040 A$(S)=MID$(L$,Q(S),1) +4050 NEXT S +4060 RETURN +4500 REM +4510 REM GET NUMBER OF BLACKS (B) AND WHITES (W) +4520 REM MASHES G$ AND A$ IN THE PROCESS +4530 REM +4540 B=0:W=0:F=0 +4550 FOR S=1 TO P9 +4560 IF G$(S)<>A$(S) THEN 4620 +4570 B=B+1 +4580 G$(S)=CHR$(F) +4590 A$(S)=CHR$(F+1) +4600 F=F+2 +4610 GOTO 4660 +4620 FOR T=1 TO P9 +4630 IF G$(S)<>A$(T) THEN 4650 +4640 IF G$(T)=A$(T) THEN 4650 +4645 W=W+1:A$(T)=CHR$(F):G$(S)=CHR$(F+1):F=F+2:GOTO 4660 +4650 NEXT T +4660 NEXT S +4670 RETURN +5000 REM +5010 REM PRINT SCORE +5020 REM +5030 PRINT "SCORE:" +5040 PRINT " COMPUTER ";C +5050 PRINT " HUMAN ";H +5060 PRINT +5070 RETURN +5500 REM +5510 REM CONVERT Q(1-P9) INTO G$(1-P9) +5520 REM +5530 FOR S=1 TO P9 +5540 G$(S)=MID$(L$,Q(S),1) +5550 NEXT S +5560 RETURN +6000 REM +6010 REM CONVERT Q(1-P9) TO H$(1-P9) +6020 REM +6030 FOR S=1 TO P9 +6040 H$(S)=MID$(L$,Q(S),1) +6050 NEXT S +6060 RETURN +6500 REM +6510 REM COPY H$ INTO G$ +6520 REM +6530 FOR S=1 TO P9 +6540 G$(S)=H$(S) +6550 NEXT S +6560 RETURN +8000 REM PROGRAM DATA FOR COLOR NAMES +8010 DATA BLACK,WHITE,RED,GREEN,ORANGE,YELLOW,PURPLE,TAN +9998 REM ...WE'RE SORRY BUT IT'S TIME TO GO... +9999 END diff --git a/61 Math Dice/README.md b/61 Math Dice/README.md new file mode 100644 index 00000000..f6285a11 --- /dev/null +++ b/61 Math Dice/README.md @@ -0,0 +1,7 @@ +### Math Dice + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=113 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/61 Math Dice/mathdice.bas b/61 Math Dice/mathdice.bas new file mode 100644 index 00000000..d61b060d --- /dev/null +++ b/61 Math Dice/mathdice.bas @@ -0,0 +1,60 @@ +10 PRINT TAB(31);"MATH DICE" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +40 PRINT "THIS PROGRAM GENERATES SUCCESIVE PICTURES OF TWO DICE." +50 PRINT "WHEN TWO DICE AND AN EQUAL SIGN FOLLOWED BY A QUESTION" +60 PRINT "MARK HAVE BEEN PRINTED, TYPE YOUR ANSWER AND THE RETURN KEY." +70 PRINT "TO CONCLUDE THE LESSON, TYPE CONTROL-C AS YOUR ANSWER." +80 PRINT +90 PRINT +100 N=N+1 +110 D=INT(6*RND(1)+1) +120 PRINT" ----- " +130 IF D=1 THEN 200 +140 IF D=2 THEN 180 +150 IF D=3 THEN 180 +160 PRINT "I * * I" +170 GOTO 210 +180 PRINT "I * I" +190 GOTO 210 +200 PRINT "I I" +210 IF D=2 THEN 260 +220 IF D=4 THEN 260 +230 IF D=6 THEN 270 +240 PRINT "I * I" +250 GOTO 280 +260 PRINT "I I" +265 GOTO 280 +270 PRINT "I * * I" +280 IF D=1 THEN 350 +290 IF D=2 THEN 330 +300 IF D=3 THEN 330 +310 PRINT "I * * I" +320 GOTO 360 +330 PRINT "I * I" +340 GOTO 360 +350 PRINT "I I" +360 PRINT " ----- " +370 PRINT +375 IF N=2 THEN 500 +380 PRINT " +" +381 PRINT +400 A=D +410 GOTO 100 +500 T=D+A +510 PRINT " ="; +520 INPUT T1 +530 IF T1=T THEN 590 +540 PRINT "NO, COUNT THE SPOTS AND GIVE ANOTHER ANSWER." +541 PRINT " ="; +550 INPUT T2 +560 IF T2=T THEN 590 +570 PRINT "NO, THE ANSWER IS";T +580 GOTO 600 +590 PRINT "RIGHT!" +600 PRINT +601 PRINT "THE DICE ROLL AGAIN..." +610 PRINT +615 N=0 +620 GOTO 100 +999 END diff --git a/62 Mugwump/README.md b/62 Mugwump/README.md new file mode 100644 index 00000000..421f0112 --- /dev/null +++ b/62 Mugwump/README.md @@ -0,0 +1,7 @@ +### Mugwump + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=114 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/62 Mugwump/mugwump.bas b/62 Mugwump/mugwump.bas new file mode 100644 index 00000000..e238486d --- /dev/null +++ b/62 Mugwump/mugwump.bas @@ -0,0 +1,56 @@ +1 PRINT TAB(33);"MUGWUMP" +2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +3 PRINT:PRINT:PRINT +4 REM COURTESY PEOPLE'S COMPUTER COMPANY +10 DIM P(4,2) +20 PRINT "THE OBJECT OF THIS GAME IS TO FIND FOUR MUGWUMPS" +30 PRINT "HIDDEN ON A 10 BY 10 GRID. HOMEBASE IS POSITION 0,0." +40 PRINT "ANY GUESS YOU MAKE MUST BE TWO NUMBERS WITH EACH" +50 PRINT "NUMBER BETWEEN 0 AND 9, INCLUSIVE. FIRST NUMBER" +60 PRINT "IS DISTANCE TO RIGHT OF HOMEBASE AND SECOND NUMBER" +70 PRINT "IS DISTANCE ABOVE HOMEBASE." +80 PRINT +90 PRINT "YOU GET 10 TRIES. AFTER EACH TRY, I WILL TELL" +100 PRINT "YOU HOW FAR YOU ARE FROM EACH MUGWUMP." +110 PRINT +240 GOSUB 1000 +250 T=0 +260 T=T+1 +270 PRINT +275 PRINT +290 PRINT "TURN NO.";T;"-- WHAT IS YOUR GUESS"; +300 INPUT M,N +310 FOR I=1 TO 4 +320 IF P(I,1)=-1 THEN 400 +330 IF P(I,1)<>M THEN 380 +340 IF P(I,2)<>N THEN 380 +350 P(I,1)=-1 +360 PRINT "YOU HAVE FOUND MUGWUMP";I +370 GOTO 400 +380 D=SQR((P(I,1)-M)^2+(P(I,2)-N)^2) +390 PRINT "YOU ARE";(INT(D*10))/10;"UNITS FROM MUGWUMP";I +400 NEXT I +410 FOR J=1 TO 4 +420 IF P(J,1)<>-1 THEN 470 +430 NEXT J +440 PRINT +450 PRINT "YOU GOT THEM ALL IN";T;"TURNS!" +460 GOTO 580 +470 IF T<10 THEN 260 +480 PRINT +490 PRINT "SORRY, THAT'S 10 TRIES. HERE IS WHERE THEY'RE HIDING:" +540 FOR I=1 TO 4 +550 IF P(I,1)=-1 THEN 570 +560 PRINT "MUGWUMP";I;"IS AT (";P(I,1);",";P(I,2);")" +570 NEXT I +580 PRINT +600 PRINT "THAT WAS FUN! LET'S PLAY AGAIN......." +610 PRINT "FOUR MORE MUGWUMPS ARE NOW IN HIDING." +630 GOTO 240 +1000 FOR J=1 TO 2 +1010 FOR I=1 TO 4 +1020 P(I,J)=INT(10*RND(1)) +1030 NEXT I +1040 NEXT J +1050 RETURN +1099 END diff --git a/63 Name/README.md b/63 Name/README.md new file mode 100644 index 00000000..daa110c1 --- /dev/null +++ b/63 Name/README.md @@ -0,0 +1,7 @@ +### Name + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=116 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/63 Name/name.bas b/63 Name/name.bas new file mode 100644 index 00000000..6cdf3f91 --- /dev/null +++ b/63 Name/name.bas @@ -0,0 +1,25 @@ +1 PRINT TAB(34);"NAME" +2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +3 PRINT: PRINT: PRINT +5 DIM B$(40) +10 PRINT "HELLO.": PRINT "MY NAME IS CREATIVE COMPUTER." +20 PRINT "WHAT'S YOUR NAME (FIRST AND LAST";: INPUT A$: L=LEN(A$) +30 PRINT: PRINT "THANK YOU, "; +40 FOR I=1 TO L: B$(I)=MID$(A$,I,1): NEXT I +50 FOR I=L TO 1 STEP -1: PRINT B$(I);: NEXT I +60 PRINT ".": PRINT "OOPS! I GUESS I GOT IT BACKWARDS. A SMART" +70 PRINT "COMPUTER LIKE ME SHOULDN'T MAKE A MISTAKE LIKE THAT!": PRINT +80 PRINT "BUT I JUST NOTICED YOUR LETTERS ARE OUT OF ORDER." +90 PRINT "LET'S PUT THEM IN ORDER LIKE THIS: "; +100 FOR J=2 TO L: I=J-1: T$=B$(J) +110 IF T$>B$(I) THEN 130 +120 B$(I+1)=B$(I): I=I-1: IF I>0 THEN 110 +130 B$(I+1)=T$: NEXT J +140 FOR I=1 TO L: PRINT B$(I);: NEXT I: PRINT: PRINT +150 PRINT "DON'T YOU LIKE THAT BETTER";: INPUT D$ +160 IF D$="YES" THEN 180 +170 PRINT: PRINT "I'M SORRY YOU DON'T LIKE IT THAT WAY.": GOTO 200 +180 PRINT: PRINT "I KNEW YOU'D AGREE!!" +200 PRINT: PRINT "I REALLY ENJOYED MEETING YOU ";A$;"." +210 PRINT "HAVE A NICE DAY!" +999 END diff --git a/64 Nicomachus/README.md b/64 Nicomachus/README.md new file mode 100644 index 00000000..f54f600e --- /dev/null +++ b/64 Nicomachus/README.md @@ -0,0 +1,7 @@ +### Nicomachus + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=117 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/64 Nicomachus/nicomachus.bas b/64 Nicomachus/nicomachus.bas new file mode 100644 index 00000000..d478bc3c --- /dev/null +++ b/64 Nicomachus/nicomachus.bas @@ -0,0 +1,34 @@ +2 PRINT TAB(33);"NICOMA" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT: PRINT: PRINT +10 PRINT "BOOMERANG PUZZLE FROM ARITHMETICA OF NICOMACHUS -- A.D. 90!" +20 PRINT +30 PRINT "PLEASE THINK OF A NUMBER BETWEEN 1 AND 100." +40 PRINT "YOUR NUMBER DIVIDED BY 3 HAS A REMAINDER OF"; +45 INPUT A +50 PRINT "YOUR NUMBER DIVIDED BY 5 HAS A REMAINDER OF"; +55 INPUT B +60 PRINT "YOUR NUMBER DIVIDED BY 7 HAS A REMAINDER OF"; +65 INPUT C +70 PRINT +80 PRINT "LET ME THINK A MOMENT..." +85 PRINT +90 FOR I=1 TO 1500: NEXT I +100 D=70*A+21*B+15*C +110 IF D<=105 THEN 140 +120 D=D-105 +130 GOTO 110 +140 PRINT "YOUR NUMBER WAS";D;", RIGHT"; +160 INPUT A$ +165 PRINT +170 IF A$="YES" THEN 220 +180 IF A$="NO" THEN 240 +190 PRINT "EH? I DON'T UNDERSTAND '";A$;"' TRY 'YES' OR 'NO'." +200 GOTO 160 +220 PRINT "HOW ABOUT THAT!!" +230 GOTO 250 +240 PRINT "I FEEL YOUR ARITHMETIC IS IN ERROR." +250 PRINT +260 PRINT "LET'S TRY ANOTHER." +270 GOTO 20 +999 END diff --git a/65 Nim/README.md b/65 Nim/README.md new file mode 100644 index 00000000..a47d44e4 --- /dev/null +++ b/65 Nim/README.md @@ -0,0 +1,7 @@ +### Nim + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=118 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/65 Nim/nim.bas b/65 Nim/nim.bas new file mode 100644 index 00000000..cda67e30 --- /dev/null +++ b/65 Nim/nim.bas @@ -0,0 +1,156 @@ +100 PRINT TAB(33);"NIM" +110 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +120 PRINT:PRINT:PRINT +210 DIM A(100),B(100,10),D(2) +220 PRINT "THIS IS THE GAME OF NIM." +230 PRINT "DO YOU WANT INSTRUCTIONS"; +240 INPUT Z$ +250 IF Z$="NO" THEN 440 +260 IF Z$="no" THEN 440 +270 IF Z$="YES" THEN 310 +280 IF Z$="yes" THEN 310 +290 PRINT "PLEASE ANSWER YES OR NO" +300 GOTO 240 +310 PRINT "THE GAME IS PLAYED WITH A NUMBER OF PILES OF OBJECTS." +320 PRINT "ANY NUMBER OF OBJECTS ARE REMOVED FROM ONE PILE BY YOU AND" +330 PRINT "THE MACHINE ALTERNATELY. ON YOUR TURN, YOU MAY TAKE" +340 PRINT "ALL THE OBJECTS THAT REMAIN IN ANY PILE, BUT YOU MUST" +350 PRINT "TAKE AT LEAST ONE OBJECT, AND YOU MAY TAKE OBJECTS FROM" +360 PRINT "ONLY ONE PILE ON A SINGLE TURN. YOU MUST SPECIFY WHETHER" +370 PRINT "WINNING IS DEFINED AS TAKING OR NOT TAKING THE LAST OBJECT," +380 PRINT "THE NUMBER OF PILES IN THE GAME, AND HOW MANY OBJECTS ARE" +390 PRINT "ORIGINALLY IN EACH PILE. EACH PILE MAY CONTAIN A" +400 PRINT "DIFFERENT NUMBER OF OBJECTS." +410 PRINT "THE MACHINE WILL SHOW ITS MOVE BY LISTING EACH PILE AND THE" +420 PRINT "NUMBER OF OBJECTS REMAINING IN THE PILES AFTER EACH OF ITS" +430 PRINT "MOVES." +440 PRINT +450 PRINT "ENTER WIN OPTION - 1 TO TAKE LAST, 2 TO AVOID LAST"; +460 INPUT W +470 IF W=1 THEN 490 +480 IF W<>2 THEN 450 +490 PRINT "ENTER NUMBER OF PILES"; +500 INPUT N +510 IF N>100 THEN 490 +520 IF N<1 THEN 490 +530 IF N<>INT(N) THEN 490 +540 PRINT "ENTER PILE SIZES" +550 FOR I=1 TO N +560 PRINT I; +570 INPUT A(I) +580 IF A(I)>2000 THEN 560 +590 IF A(I)<1 THEN 560 +600 IF A(I)<>INT(A(I)) THEN 560 +610 NEXT I +620 PRINT "DO YOU WANT TO MOVE FIRST"; +630 INPUT Q9$ +640 IF Q9$="YES" THEN 1450 +650 IF Q9$="yes" THEN 1450 +660 IF Q9$="NO" THEN 700 +670 IF Q9$="no" THEN 700 +680 PRINT "PLEASE ANSWER YES OR NO." +690 GOTO 630 +700 IF W=1 THEN 940 +710 LET C=0 +720 FOR I=1 TO N +730 IF A(I)=0 THEN 770 +740 LET C=C+1 +750 IF C=3 THEN 840 +760 LET D(C)=I +770 NEXT I +780 IF C=2 THEN 920 +790 IF A(D(1))>1 THEN 820 +800 PRINT "MACHINE LOSES" +810 GOTO 1640 +820 PRINT "MACHINE WINS" +830 GOTO 1640 +840 LET C=0 +850 FOR I=1 TO N +860 IF A(I)>1 THEN 940 +870 IF A(I)=0 THEN 890 +880 LET C=C+1 +890 NEXT I +900 IF C/2<>INT(C/2) THEN 800 +910 GOTO 940 +920 IF A(D(1))=1 THEN 820 +930 IF A(D(2))=1 THEN 820 +940 FOR I=1 TO N +950 LET E=A(I) +960 FOR J=0 TO 10 +970 LET F=E/2 +980 LET B(I,J)=2*(F-INT(F)) +990 LET E=INT(F) +1000 NEXT J +1010 NEXT I +1020 FOR J=10 TO 0 STEP -1 +1030 LET C=0 +1040 LET H=0 +1050 FOR I=1 TO N +1060 IF B(I,J)=0 THEN 1110 +1070 LET C=C+1 +1080 IF A(I)<=H THEN 1110 +1090 LET H=A(I) +1100 LET G=I +1110 NEXT I +1120 IF C/2<>INT(C/2) THEN 1190 +1130 NEXT J +1140 LET E=INT(N*RND(1)+1) +1150 IF A(E)=0 THEN 1140 +1160 LET F=INT(A(E)*RND(1)+1) +1170 LET A(E)=A(E)-F +1180 GOTO 1380 +1190 LET A(G)=0 +1200 FOR J=0 TO 10 +1210 LET B(G,J)=0 +1220 LET C=0 +1230 FOR I=1 TO N +1240 IF B(I,J)=0 THEN 1260 +1250 LET C=C+1 +1260 NEXT I +1270 LET A(G)=A(G)+2*(C/2-INT(C/2))*2^J +1280 NEXT J +1290 IF W=1 THEN 1380 +1300 LET C=0 +1310 FOR I=1 TO N +1320 IF A(I)>1 THEN 1380 +1330 IF A(I)=0 THEN 1350 +1340 LET C=C+1 +1350 NEXT I +1360 IF C/2<>INT(C/2) THEN 1380 +1370 LET A(G)=1-A(G) +1380 PRINT "PILE SIZE" +1390 FOR I=1 TO N +1400 PRINT I;A(I) +1410 NEXT I +1420 IF W=2 THEN 1450 +1430 GOSUB 1570 +1440 IF Z=1 THEN 820 +1450 PRINT "YOUR MOVE - PILE, NUMBER TO BE REMOVED"; +1460 INPUT X,Y +1470 IF X>N THEN 1450 +1480 IF X<1 THEN 1450 +1490 IF X<>INT(X) THEN 1450 +1500 IF Y>A(X) THEN 1450 +1510 IF Y<1 THEN 1450 +1520 IF Y<>INT(Y) THEN 1450 +1530 LET A(X)=A(X)-Y +1540 GOSUB 1570 +1550 IF Z=1 THEN 800 +1560 GOTO 700 +1570 LET Z=0 +1580 FOR I=1 TO N +1590 IF A(I)=0 THEN 1610 +1600 RETURN +1610 NEXT I +1620 LET Z=1 +1630 RETURN +1640 PRINT "do you want to play another game"; +1650 INPUT Q9$ +1660 IF Q9$="YES" THEN 1720 +1670 IF Q9$="yes" THEN 1720 +1680 IF Q9$="NO" THEN 1730 +1690 IF Q9$="no" THEN 1730 +1700 PRINT "PLEASE. YES OR NO." +1710 GOTO 1650 +1720 GOTO 440 +1730 END diff --git a/66 Number/README.md b/66 Number/README.md new file mode 100644 index 00000000..8eb2e9b5 --- /dev/null +++ b/66 Number/README.md @@ -0,0 +1,7 @@ +### Number + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=121 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/66 Number/number.bas b/66 Number/number.bas new file mode 100644 index 00000000..c5b9ff7c --- /dev/null +++ b/66 Number/number.bas @@ -0,0 +1,37 @@ +1 PRINT TAB(33);"NUMBER" +2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +3 PRINT:PRINT:PRINT +4 PRINT "YOU HAVE 100 POINTS. BY GUESSING NUMBERS FROM 1 TO 5, YOU" +5 PRINT "CAN GAIN OR LOSE POINTS DEPENDING UPON HOW CLOSE YOU GET TO" +6 PRINT "A RANDOM NUMBER SELECTED BY THE COMPUTER.": PRINT +7 PRINT "YOU OCCASIONALLY WILL GET A JACKPOT WHICH WILL DOUBLE(!)" +8 PRINT "YOUR POINT COUNT. YOU WIN WHEN YOU GET 500 POINTS." +9 PRINT: P=100 +10 DEF FNR(X)=INT(5*RND(1)+1) +12 INPUT "GUESS A NUMBER FROM 1 TO 5";G +15 R=FNR(1) +16 S=FNR(1) +17 T=FNR(1) +18 U=FNR(1) +19 V=FNR(1) +20 IF G=R THEN 30 +21 IF G=S THEN 40 +22 IF G=T THEN 50 +23 IF G=U THEN 60 +24 IF G=V THEN 70 +25 IF G>5 THEN 12 +30 P=P-5 +35 GOTO 80 +40 P=P+5 +45 GOTO 80 +50 P=P+P +53 PRINT "YOU HIT THE JACKPOT!!!" +55 GOTO 80 +60 P=P+1 +65 GOTO 80 +70 P=P-(P*.5) +80 IF P>500 THEN 90 +82 PRINT "YOU HAVE";P;"POINTS.":PRINT +85 GOTO 12 +90 PRINT "!!!!YOU WIN!!!! WITH ";P;"POINTS." +99 END diff --git a/67 One Check/README.md b/67 One Check/README.md new file mode 100644 index 00000000..0e703692 --- /dev/null +++ b/67 One Check/README.md @@ -0,0 +1,7 @@ +### One Check + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=122 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/67 One Check/onecheck.bas b/67 One Check/onecheck.bas new file mode 100644 index 00000000..2161a743 --- /dev/null +++ b/67 One Check/onecheck.bas @@ -0,0 +1,86 @@ +2 PRINT TAB(30);"ONE CHECK" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT: PRINT: PRINT +8 DIM A(64) +10 PRINT "SOLITAIRE CHECKER PUZZLE BY DAVID AHL" +15 PRINT +20 PRINT "48 CHECKERS ARE PLACED ON THE 2 OUTSIDE SPACES OF A" +25 PRINT "STANDARD 64-SQUARE CHECKERBOARD. THE OBJECT IS TO" +30 PRINT "REMOVE AS MANY CHECKERS AS POSSIBLE BY DIAGONAL JUMPS" +35 PRINT "(AS IN STANDARD CHECKERS). USE THE NUMBERED BOARD TO" +40 PRINT "INDICATE THE SQUARE YOU WISH TO JUMP FROM AND TO. ON" +45 PRINT "THE BOARD PRINTED OUT ON EACH TURN '1' INDICATES A" +50 PRINT "CHECKER AND '0' AN EMPTY SQUARE. WHEN YOU HAVE NO" +55 PRINT "POSSIBLE JUMPS REMAINING, INPUT A '0' IN RESPONSE TO" +60 PRINT "QUESTION 'JUMP FROM ?'" +62 PRINT +63 PRINT "HERE IS THE NUMERICAL BOARD:" +66 PRINT +70 FOR J=1 TO 57 STEP 8 +74 PRINT J;TAB(4);J+1;TAB(8);J+2;TAB(12);J+3;TAB(16);J+4;TAB(20);J+5; +75 PRINT TAB(24);J+6;TAB(28);J+7 +76 NEXT J +77 PRINT +78 PRINT "AND HERE IS THE OPENING POSITION OF THE CHECKERS." +79 PRINT +80 FOR J=1 TO 64 +82 A(J)=1 +84 NEXT J +86 FOR J=19 TO 43 STEP 8 +88 FOR I=J TO J+3 +90 A(I)=0 +92 NEXT I +94 NEXT J +96 M=0 +98 GOTO 340 +100 INPUT "JUMP FROM";F +105 IF F=0 THEN 500 +110 INPUT "TO";T +112 PRINT +118 REM *** CHECK LEGALITY OF MOVE +120 F1=INT((F-1)/8) +130 F2=F-8*F1 +140 T1=INT((T-1)/8) +150 T2=T-8*T1 +160 IF F1>7 THEN 230 +170 IF T1>7 THEN 230 +180 IF F2>8 THEN 230 +190 IF T2>8 THEN 230 +200 IF ABS(F1-T1)<>2 THEN 230 +210 IF ABS(F2-T2)<>2 THEN 230 +212 IF A((T+F)/2)=0 THEN 230 +215 IF A(F)=0 THEN 230 +220 IF A(T)=1 THEN 230 +225 GOTO 250 +230 PRINT "ILLEGAL MOVE. TRY AGAIN..." +240 GOTO 100 +245 REM *** UPDATE BOARD +250 A(T)=1 +260 A(F)=0 +270 A((T+F)/2)=0 +290 M=M+1 +310 REM *** PRINT BOARD +340 FOR J=1 TO 57 STEP 8 +350 FOR I=J TO J+7 +360 PRINT A(I); +370 NEXT I +380 PRINT +390 NEXT J +400 PRINT +410 GOTO 100 +490 REM *** END GAME SUMMARY +500 S=0 +510 FOR I=1 TO 64 +520 S=S+A(I) +530 NEXT I +540 PRINT:PRINT "YOU MADE";M;"JUMPS AND HAD";S;"PIECES" +550 PRINT "REMAINING ON THE BOARD." +560 PRINT +562 INPUT "TRY AGAIN";A$ +570 IF A$="YES" THEN 70 +575 IF A$="NO" THEN 600 +580 PRINT "PLEASE ANSWER 'YES' OR 'NO'." +590 GOTO 562 +600 PRINT +610 PRINT "O.K. HOPE YOU HAD FUN!!" +999 END diff --git a/68 Orbit/README.md b/68 Orbit/README.md new file mode 100644 index 00000000..3d7a04cb --- /dev/null +++ b/68 Orbit/README.md @@ -0,0 +1,7 @@ +### Orbit + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=124 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/68 Orbit/orbit.bas b/68 Orbit/orbit.bas new file mode 100644 index 00000000..12302887 --- /dev/null +++ b/68 Orbit/orbit.bas @@ -0,0 +1,96 @@ +2 PRINT TAB(33);"ORBIT" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT:PRINT:PRINT +10 PRINT "SOMEWHERE ABOVE YOUR PLANET IS A ROMULAN SHIP." +15 PRINT +20 PRINT "THE SHIP IS IN A CONSTANT POLAR ORBIT. ITS" +25 PRINT "DISTANCE FROM THE CENTER OF YOUR PLANET IS FROM" +30 PRINT "10,000 TO 30,000 MILES AND AT ITS PRESENT VELOCITY CAN" +31 PRINT "CIRCLE YOUR PLANET ONCE EVERY 12 TO 36 HOURS." +35 PRINT +40 PRINT "UNFORTUNATELY, THEY ARE USING A CLOAKING DEVICE SO" +45 PRINT "YOU ARE UNABLE TO SEE THEM, BUT WITH A SPECIAL" +50 PRINT "INSTRUMENT YOU CAN TELL HOW NEAR THEIR SHIP YOUR" +55 PRINT "PHOTON BOMB EXPLODED. YOU HAVE SEVEN HOURS UNTIL THEY" +60 PRINT "HAVE BUILT UP SUFFICIENT POWER IN ORDER TO ESCAPE" +65 PRINT "YOUR PLANET'S GRAVITY." +70 PRINT +75 PRINT "YOUR PLANET HAS ENOUGH POWER TO FIRE ONE BOMB AN HOUR." +80 PRINT +85 PRINT "AT THE BEGINNING OF EACH HOUR YOU WILL BE ASKED TO GIVE AN" +90 PRINT "ANGLE (BETWEEN 0 AND 360) AND A DISTANCE IN UNITS OF" +95 PRINT "100 MILES (BETWEEN 100 AND 300), AFTER WHICH YOUR BOMB'S" +100 PRINT "DISTANCE FROM THE ENEMY SHIP WILL BE GIVEN." +105 PRINT +110 PRINT "AN EXPLOSION WITHIN 5,000 MILES OF THE ROMULAN SHIP" +111 PRINT "WILL DESTROY IT." +114 PRINT +115 PRINT "BELOW IS A DIAGRAM TO HELP YOU VISUALIZE YOUR PLIGHT." +116 PRINT +117 PRINT +168 PRINT " 90" +170 PRINT " 0000000000000" +171 PRINT " 0000000000000000000" +172 PRINT " 000000 000000" +173 PRINT " 00000 00000" +174 PRINT " 00000 XXXXXXXXXXX 00000" +175 PRINT " 00000 XXXXXXXXXXXXX 00000" +176 PRINT " 0000 XXXXXXXXXXXXXXX 0000" +177 PRINT " 0000 XXXXXXXXXXXXXXXXX 0000" +178 PRINT " 0000 XXXXXXXXXXXXXXXXXXX 0000" +179 PRINT "180<== 00000 XXXXXXXXXXXXXXXXXXX 00000 ==>0" +180 PRINT " 0000 XXXXXXXXXXXXXXXXXXX 0000" +181 PRINT " 0000 XXXXXXXXXXXXXXXXX 0000" +182 PRINT " 0000 XXXXXXXXXXXXXXX 0000" +183 PRINT " 00000 XXXXXXXXXXXXX 00000" +184 PRINT " 00000 XXXXXXXXXXX 00000" +185 PRINT " 00000 00000" +186 PRINT " 000000 000000" +187 PRINT " 0000000000000000000" +188 PRINT " 0000000000000" +190 PRINT " 270" +192 PRINT +195 PRINT "X - YOUR PLANET" +196 PRINT "O - THE ORBIT OF THE ROMULAN SHIP" +197 PRINT +198 PRINT "ON THE ABOVE DIAGRAM, THE ROMULAN SHIP IS CIRCLING" +199 PRINT "COUNTERCLOCKWISE AROUND YOUR PLANET. DON'T FORGET THAT" +200 PRINT "WITHOUT SUFFICIENT POWER THE ROMULAN SHIP'S ALTITUDE" +210 PRINT "AND ORBITAL RATE WILL REMAIN CONSTANT." +220 PRINT +230 PRINT "GOOD LUCK. THE FEDERATION IS COUNTING ON YOU." +270 A=INT(360*RND(1)) +280 D=INT(200*RND(1)+200) +290 R=INT(20*RND(1)+10) +300 H=0 +310 IF H=7 THEN 490 +320 H=H+1 +325 PRINT +326 PRINT +330 PRINT "THIS IS HOUR";H;", AT WHAT ANGLE DO YOU WISH TO SEND" +335 PRINT "YOUR PHOTON BOMB"; +340 INPUT A1 +350 PRINT "HOW FAR OUT DO YOU WISH TO DETONATE IT"; +360 INPUT D1 +365 PRINT +366 PRINT +370 A=A+R +380 IF A<360 THEN 400 +390 A=A-360 +400 T=ABS(A-A1) +410 IF T<180 THEN 430 +420 T=360-T +430 C=SQR(D*D+D1*D1-2*D*D1*COS(T*3.14159/180)) +440 PRINT "YOUR PHOTON BOMB EXPLODED";C;"*10^2 MILES FROM THE" +445 PRINT "ROMULAN SHIP." +450 IF C<=50 THEN 470 +460 GOTO 310 +470 PRINT "YOU HAVE SUCCESFULLY COMPLETED YOUR MISSION." +480 GOTO 500 +490 PRINT "YOU HAVE ALLOWED THE ROMULANS TO ESCAPE." +500 PRINT "ANOTHER ROMULAN SHIP HAS GONE INTO ORBIT." +510 PRINT "DO YOU WISH TO TRY TO DESTROY IT"; +520 INPUT C$ +530 IF C$="YES" THEN 270 +540 PRINT "GOOD BYE." +999 END diff --git a/69 Pizza/README.md b/69 Pizza/README.md new file mode 100644 index 00000000..fc83503a --- /dev/null +++ b/69 Pizza/README.md @@ -0,0 +1,7 @@ +### Pizza + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=126 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/69 Pizza/pizza.bas b/69 Pizza/pizza.bas new file mode 100644 index 00000000..a3d4e4f1 --- /dev/null +++ b/69 Pizza/pizza.bas @@ -0,0 +1,68 @@ +5 PRINT TAB(33);"PIZZA" +10 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +15 PRINT: PRINT: PRINT +20 DIM S$(16),M$(4) +30 PRINT "PIZZA DELIVERY GAME": PRINT +50 INPUT "WHAT IS YOUR FIRST NAME";N$: PRINT +80 PRINT "HI, ";N$;". IN THIS GAME YOU ARE TO TAKE ORDERS" +90 PRINT "FOR PIZZAS. THEN YOU ARE TO TELL A DELIVERY BOY" +100 PRINT "WHERE TO DELIVER THE ORDERED PIZZAS.": PRINT: PRINT +140 FOR I=1 TO 16 +150 READ S$(I) +160 NEXT I +170 FOR I=1 TO 4 +180 READ M$(I) +190 NEXT I +200 DATA "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O" +210 DATA "P","1","2","3","4" +230 PRINT "MAP OF THE CITY OF HYATTSVILLE": PRINT +250 PRINT " -----1-----2-----3-----4-----" +260 K=4 +270 FOR I=1 TO 4 +280 PRINT "-": PRINT "-": PRINT"-": PRINT "-" +320 PRINT M$(K); +330 S1=16-4*I+1 +340 PRINT " ";S$(S1);" ";S$(S1+1);" ";S$(S1+2);" "; +350 PRINT S$(S1+3);" ";M$(K) +380 K=K-1 +390 NEXT I +400 PRINT "-": PRINT "-": PRINT "-": PRINT "-" +440 PRINT " -----1-----2-----3-----4-----": PRINT +460 PRINT "THE OUTPUT IS A MAP OF THE HOMES WHERE" +470 PRINT "YOU ARE TO SEND PIZZAS.": PRINT +490 PRINT "YOUR JOB IS TO GIVE A TRUCK DRIVER" +500 PRINT "THE LOCATION OR COORDINATES OF THE" +510 PRINT "HOME ORDERING THE PIZZA.": PRINT +520 INPUT "DO YOU NEED MORE DIRECTIONS";A$ +530 IF A$="YES" THEN 590 +540 IF A$="NO" THEN 750 +550 PRINT "'YES' OR 'NO' PLEASE, NOW THEN,": GOTO 520 +590 PRINT: PRINT "SOMEBODY WILL ASK FOR A PIZZA TO BE" +600 PRINT "DELIVERED. THEN A DELIVERY BOY WILL" +610 PRINT "ASK YOU FOR THE LOCATION.":PRINT " EXAMPLE:" +620 PRINT "THIS IS J. PLEASE SEND A PIZZA." +640 PRINT "DRIVER TO ";N$;". WHERE DOES J LIVE?" +650 PRINT "YOUR ANSWER WOULD BE 2,3": PRINT +660 INPUT "UNDERSTAND";A$ +670 IF A$="YES" THEN 690 +680 PRINT "THIS JOB IS DEFINITELY TOO DIFFICULT FOR YOU. THANKS ANYWAY" +685 GOTO 999 +690 PRINT "GOOD. YOU ARE NOW READY TO START TAKING ORDERS.": PRINT +700 PRINT "GOOD LUCK!!": PRINT +750 FOR I=1 TO 5 +760 S=INT(RND(1)*16+1): PRINT +770 PRINT "HELLO ";N$;"'S PIZZA. THIS IS ";S$(S);"."; +775 PRINT " PLEASE SEND A PIZZA." +780 PRINT " DRIVER TO ";N$;": WHERE DOES ";S$(S);" LIVE"; +790 INPUT A(1),A(2) +870 T=A(1)+(A(2)-1)*4 +880 IF T=S THEN 920 +890 PRINT "THIS IS ";S$(T);". I DID NOT ORDER A PIZZA." +900 PRINT "I LIVE AT ";A(1);",";A(2) +910 GOTO 780 +920 PRINT "HELLO "N$;". THIS IS ";S$(S);", THANKS FOR THE PIZZA." +930 NEXT I +940 PRINT: INPUT "DO YOU WANT TO DELIVER MORE PIZZAS";A$ +960 IF A$="YES" THEN 750 +970 PRINT: PRINT "O.K. ";N$;", SEE YOU LATER!":PRINT +999 END diff --git a/70 Poetry/README.md b/70 Poetry/README.md new file mode 100644 index 00000000..fe3c0ea8 --- /dev/null +++ b/70 Poetry/README.md @@ -0,0 +1,7 @@ +### Poetry + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=128 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/70 Poetry/poetry.bas b/70 Poetry/poetry.bas new file mode 100644 index 00000000..3661287d --- /dev/null +++ b/70 Poetry/poetry.bas @@ -0,0 +1,42 @@ +10 PRINT TAB(30);"POETRY" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +90 ON I GOTO 100,101,102,103,104 +100 PRINT "MIDNIGHT DREARY";:GOTO 210 +101 PRINT "FIERY EYES";:GOTO 210 +102 PRINT "BIRD OR FIEND";:GOTO 210 +103 PRINT "THING OF EVIL";:GOTO 210 +104 PRINT "PROPHET";:GOTO 210 +110 ON I GOTO 111,112,113,114,115 +111 PRINT "BEGUILING ME";:U=2:GOTO 210 +112 PRINT "THRILLED ME";:GOTO 210 +113 PRINT "STILL SITTING....";:GOTO 212 +114 PRINT "NEVER FLITTING";:U=2:GOTO 210 +115 PRINT "BURNED";:GOTO 210 +120 ON I GOTO 121,122,123,124,125 +121 PRINT "AND MY SOUL";:GOTO 210 +122 PRINT "DARKNESS THERE";:GOTO 210 +123 PRINT "SHALL BE LIFTED";:GOTO 210 +124 PRINT "QUOTH THE RAVEN";:GOTO 210 +125 IF U=0 THEN 210 +126 PRINT "SIGN OF PARTING";:GOTO 210 +130 ON I GOTO 131,132,133,134,135 +131 PRINT "NOTHING MORE";:GOTO 210 +132 PRINT "YET AGAIN";:GOTO 210 +133 PRINT "SLOWLY CREEPING";:GOTO 210 +134 PRINT "...EVERMORE";:GOTO 210 +135 PRINT "NEVERMORE"; +210 IF U=0 OR RND(1)>.19 THEN 212 +211 PRINT ",";:U=2 +212 IF RND(1)>.65 THEN 214 +213 PRINT " ";:U=U+1:GOTO 215 +214 PRINT : U=0 +215 I=INT(INT(10*RND(1))/2)+1 +220 J=J+1 : K=K+1 +230 IF U>0 OR INT(J/2)<>J/2 THEN 240 +235 PRINT " "; +240 ON J GOTO 90,110,120,130,250 +250 J=0 : PRINT : IF K>20 THEN 270 +260 GOTO 215 +270 PRINT : U=0 : K=0 : GOTO 110 +999 END diff --git a/71 Poker/README.md b/71 Poker/README.md new file mode 100644 index 00000000..b5f7bc83 --- /dev/null +++ b/71 Poker/README.md @@ -0,0 +1,7 @@ +### Poker + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=129 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/71 Poker/poker.bas b/71 Poker/poker.bas new file mode 100644 index 00000000..82bfe862 --- /dev/null +++ b/71 Poker/poker.bas @@ -0,0 +1,416 @@ +2 PRINT TAB(33);"POKER" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT: PRINT: PRINT +10 DIM A(50),B(15) +20 DEF FNA(X)=INT(10*RND(1)) +30 DEF FNB(X)=X-100*INT(X/100) +40 PRINT "WELCOME TO THE CASINO. WE EACH HAVE $200." +50 PRINT "I WILL OPEN THE BETTING BEFORE THE DRAW; YOU OPEN AFTER." +60 PRINT "TO FOLD BET 0; TO CHECK BET .5." +70 PRINT "ENOUGH TALK -- LET'S GET DOWN TO BUSINESS." +80 PRINT +90 LET O=1 +100 LET C=200 +110 LET S=200 +120 LET P=0 +130 REM +140 PRINT +150 IF C<=5 THEN 3670 +160 PRINT "THE ANTE IS $5. I WILL DEAL:" +170 PRINT +180 IF S>5 THEN 200 +190 GOSUB 3830 +200 LET P=P+10 +210 LET S=S-5 +220 LET C=C-5 +230 FOR Z=1 TO 10 +240 GOSUB 1740 +250 NEXT Z +260 PRINT "YOUR HAND:" +270 N=1 +280 GOSUB 1850 +290 N=6 +300 I=2 +310 GOSUB 2170 +320 PRINT +330 IF I<>6 THEN 470 +340 IF FNA(0)<=7 THEN 370 +350 LET X=11100 +360 GOTO 420 +370 IF FNA(0)<=7 THEN 400 +380 LET X=11110 +390 GOTO 420 +400 IF FNA(0)>=1 THEN 450 +410 X=11111 +420 I=7 +430 Z=23 +440 GOTO 580 +450 Z=1 +460 GOTO 510 +470 IF U>=13 THEN 540 +480 IF FNA(0)>=2 THEN 500 +490 GOTO 420 +500 Z=0 +510 K=0 +520 PRINT "I CHECK." +530 GOTO 620 +540 IF U<=16 THEN 570 +550 Z=2 +560 IF FNA(0)>=1 THEN 580 +570 Z=35 +580 V=Z+FNA(0) +590 GOSUB 3480 +600 PRINT "I'LL OPEN WITH $"V +610 K=V +620 GOSUB 3050 +630 GOSUB 650 +640 GOTO 820 +650 IF I<>3 THEN 760 +660 PRINT +670 PRINT "I WIN." +680 C=C+P +690 PRINT "NOW I HAVE $"C"AND YOU HAVE $"S +700 PRINT "DO YOU WISH TO CONTINUE"; +710 INPUT H$ +720 IF H$="YES" THEN 120 +730 IF H$="NO" THEN 4100 +740 PRINT "ANSWER YES OR NO, PLEASE." +750 GOTO 700 +760 IF I<>4 THEN 810 +770 PRINT +780 PRINT "YOU WIN." +790 S=S+P +800 GOTO 690 +810 RETURN +820 PRINT +830 PRINT "NOW WE DRAW -- HOW MANY CARDS DO YOU WANT"; +840 INPUT T +850 IF T=0 THEN 980 +860 Z=10 +870 IF T<4 THEN 900 +880 PRINT "YOU CAN'T DRAW MORE THAN THREE CARDS." +890 GOTO 840 +900 PRINT "WHAT ARE THEIR NUMBERS:" +910 FOR Q=1 TO T +920 INPUT U +930 GOSUB 1730 +940 NEXT Q +950 PRINT "YOUR NEW HAND:" +960 N=1 +970 GOSUB 1850 +980 Z=10+T +990 FOR U=6 TO 10 +1000 IF INT(X/10^(U-6))<>10*INT(X/10^(U-5)) THEN 1020 +1010 GOSUB 1730 +1020 NEXT U +1030 PRINT +1040 PRINT "I AM TAKING"Z-10-T"CARD"; +1050 IF Z=11+T THEN 1090 +1060 PRINT "S" +1070 PRINT +1080 GOTO 1100 +1090 PRINT +1100 N=6 +1110 V=I +1120 I=1 +1130 GOSUB 2170 +1140 B=U +1150 M=D +1160 IF V<>7 THEN 1190 +1170 Z=28 +1180 GOTO 1330 +1190 IF I<>6 THEN 1220 +1200 Z=1 +1210 GOTO 1330 +1220 IF U>=13 THEN 1270 +1230 Z=2 +1240 IF FNA(0)<>6 THEN 1260 +1250 Z=19 +1260 GOTO 1330 +1270 IF U>=16 THEN 1320 +1280 Z=19 +1290 IF FNA(0)<>8 THEN 1310 +1300 Z=11 +1310 GOTO 1330 +1320 Z=2 +1330 K=0 +1340 GOSUB 3050 +1350 IF T<>.5 THEN 1450 +1360 IF V=7 THEN 1400 +1370 IF I<>6 THEN 1400 +1380 PRINT "I'LL CHECK" +1390 GOTO 1460 +1400 V=Z+FNA(0) +1410 GOSUB 3480 +1420 PRINT "I'LL BET $"V +1430 K=V +1440 GOSUB 3060 +1450 GOSUB 650 +1460 PRINT +1470 PRINT "NOW WE COMPARE HANDS:" +1480 J$=H$ +1490 K$=I$ +1500 PRINT "MY HAND:" +1510 N=6 +1520 GOSUB 1850 +1530 N=1 +1540 GOSUB 2170 +1550 PRINT +1560 PRINT "YOU HAVE "; +1570 K=D +1580 GOSUB 3690 +1590 H$=J$ +1600 I$=K$ +1610 K=M +1620 PRINT "AND I HAVE "; +1630 GOSUB 3690 +1640 IF B>U THEN 670 +1650 IF U>B THEN 780 +1660 IF H$="A FLUS" THEN 1700 +1662 IF FNB(M)FNB(D) THEN 670 +1670 PRINT "THE HAND IS DRAWN." +1680 PRINT "ALL $"P"REMAINS IN THE POT." +1690 GOTO 140 +1700 IF FNB(M)>FNB(D) THEN 670 +1710 IF FNB(D)>FNB(M) THEN 780 +1720 GOTO 1670 +1730 Z=Z+1 +1740 A(Z)=100*INT(4*RND(1))+INT(100*RND(1)) +1750 IF INT(A(Z)/100)>3 THEN 1740 +1760 IF A(Z)-100*INT(A(Z)/100)>12 THEN 1740 +1765 IF Z=1 THEN 1840 +1770 FOR K=1 TO Z-1 +1780 IF A(Z)=A(K) THEN 1740 +1790 NEXT K +1800 IF Z<=10 THEN 1840 +1810 N=A(U) +1820 A(U)=A(Z) +1830 A(Z)=N +1840 RETURN +1850 FOR Z=N TO N+4 +1860 PRINT Z"-- "; +1870 GOSUB 1950 +1880 PRINT " OF"; +1890 GOSUB 2070 +1900 IF Z/2<>INT(Z/2) THEN 1920 +1910 PRINT +1920 NEXT Z +1930 PRINT +1940 RETURN +1950 K=FNB(A(Z)) +1960 IF K<>9 THEN 1980 +1970 PRINT "JACK"; +1980 IF K<>10 THEN 2000 +1990 PRINT "QUEEN"; +2000 IF K<>11 THEN 2020 +2010 PRINT "KING"; +2020 IF K<>12 THEN 2040 +2030 PRINT "ACE"; +2040 IF K>=9 THEN 2060 +2050 PRINT K+2; +2060 RETURN +2070 K=INT(A(Z)/100) +2080 IF K<>0 THEN 2100 +2090 PRINT " CLUBS", +2100 IF K<>1 THEN 2120 +2110 PRINT " DIAMONDS", +2120 IF K<>2 THEN 2140 +2130 PRINT " HEARTS", +2140 IF K<>3 THEN 2160 +2150 PRINT " SPADES", +2160 RETURN +2170 U=0 +2180 FOR Z=N TO N+4 +2190 B(Z)=FNB(A(Z)) +2200 IF Z=N+4 THEN 2230 +2210 IF INT(A(Z)/100)<>INT(A(Z+1)/100) THEN 2230 +2220 U=U+1 +2230 NEXT Z +2240 IF U<>4 THEN 2310 +2250 X=11111 +2260 D=A(N) +2270 H$="A FLUS" +2280 I$="H IN" +2290 U=15 +2300 RETURN +2310 FOR Z=N TO N+3 +2320 FOR K=Z+1 TO N+4 +2330 IF B(Z)<=B(K) THEN 2390 +2340 X=A(Z) +2350 A(Z)=A(K) +2360 B(Z)=B(K) +2370 A(K)=X +2380 B(K)=A(K)-100*INT(A(K)/100) +2390 NEXT K +2400 NEXT Z +2410 X=0 +2420 FOR Z=N TO N+3 +2430 IF B(Z)<>B(Z+1) THEN 2470 +2440 X=X+11*10^(Z-N) +2450 D=A(Z) +2460 GOSUB 2760 +2470 NEXT Z +2480 IF X<>0 THEN 2620 +2490 IF B(N)+3<>B(N+3) THEN 2520 +2500 X=1111 +2510 U=10 +2520 IF B(N+1)+3<>B(N+4) THEN 2620 +2530 IF U<>10 THEN 2600 +2540 U=14 +2550 H$="STRAIG" +2560 I$="HT" +2570 X=11111 +2580 D=A(N+4) +2590 RETURN +2600 U=10 +2610 X=11110 +2620 IF U>=10 THEN 2690 +2630 D=A(N+4) +2640 H$="SCHMAL" +2650 I$="TZ, " +2660 U=9 +2670 X=11000 +2680 GOTO 2740 +2690 IF U<>10 THEN 2720 +2700 IF I=1 THEN 2740 +2710 GOTO 2750 +2720 IF U>12 THEN 2750 +2730 IF FNB(D)>6 THEN 2750 +2740 I=6 +2750 RETURN +2760 IF U>=11 THEN 2810 +2770 U=11 +2780 H$="A PAIR" +2790 I$=" OF " +2800 RETURN +2810 IF U<>11 THEN 2910 +2820 IF B(Z)<>B(Z-1) THEN 2870 +2830 H$="THREE" +2840 I$=" " +2850 U=13 +2860 RETURN +2870 H$="TWO P" +2880 I$="AIR, " +2890 U=12 +2900 RETURN +2910 IF U>12 THEN 2960 +2920 U=16 +2930 H$="FULL H" +2940 I$="OUSE, " +2950 RETURN +2960 IF B(Z)<>B(Z-1) THEN 3010 +2970 U=17 +2980 H$="FOUR" +2990 I$=" " +3000 RETURN +3010 U=16 +3020 H$="FULL H" +3030 I$="OUSE, " +3040 RETURN +3050 G=0 +3060 PRINT:PRINT "WHAT IS YOUR BET"; +3070 INPUT T +3080 IF T-INT(T)=0 THEN 3140 +3090 IF K<>0 THEN 3120 +3100 IF G<>0 THEN 3120 +3110 IF T=.5 THEN 3410 +3120 PRINT "NO SMALL CHANGE, PLEASE." +3130 GOTO 3060 +3140 IF S-G-T>=0 THEN 3170 +3150 GOSUB 3830 +3160 GOTO 3060 +3170 IF T<>0 THEN 3200 +3180 I=3 +3190 GOTO 3380 +3200 IF G+T>=K THEN 3230 +3210 PRINT "IF YOU CAN'T SEE MY BET, THEN FOLD." +3220 GOTO 3060 +3230 G=G+T +3240 IF G=K THEN 3380 +3250 IF Z<>1 THEN 3420 +3260 IF G>5 THEN 3300 +3270 IF Z>=2 THEN 3350 +3280 V=5 +3290 GOTO 3420 +3300 IF Z=1 THEN 3320 +3310 IF T<=25 THEN 3350 +3320 I=4 +3330 PRINT "I FOLD." +3340 RETURN +3350 IF Z=2 THEN 3430 +3360 PRINT "I'LL SEE YOU." +3370 K=G +3380 S=S-G +3390 C=C-K +3400 P=P+G+K +3410 RETURN +3420 IF G>3*Z THEN 3350 +3430 V=G-K+FNA(0) +3440 GOSUB 3480 +3450 PRINT "I'LL SEE YOU, AND RAISE YOU"V +3460 K=G+V +3470 GOTO 3060 +3480 IF C-G-V>=0 THEN 3660 +3490 IF G<>0 THEN 3520 +3500 V=C +3510 RETURN +3520 IF C-G>=0 THEN 3360 +3530 IF (O/2)<>INT(O/2) THEN 3600 +3540 PRINT "WOULD YOU LIKE TO BUY BACK YOUR WATCH FOR $50"; +3550 INPUT J$ +3560 IF LEFT$(J$,1)="N" THEN 3600 +3570 C=C+50 +3580 O=O/2 +3590 RETURN +3600 IF O/3<>INT(O/3) THEN 3670 +3610 PRINT "WOULD YOU LIKE TO BUY BACK YOUR TIE TACK FOR $50"; +3620 INPUT J$ +3630 IF LEFT$(J$,1)="N" THEN 3670 +3640 C=C+50 +3650 O=O/3 +3660 RETURN +3670 PRINT "I'M BUSTED. CONGRATULATIONS!" +3680 STOP +3690 PRINT H$;I$; +3700 IF H$<>"A FLUS" THEN 3750 +3710 K=INT(K/100) +3720 GOSUB 2080 +3730 PRINT +3740 RETURN +3750 K=FNB(K) +3760 GOSUB 1960 +3770 IF H$="SCHMAL" THEN 3790 +3780 IF H$<>"STRAIG" THEN 3810 +3790 PRINT " HIGH" +3800 RETURN +3810 PRINT "'S" +3820 RETURN +3830 PRINT +3840 PRINT "YOU CAN'T BET WITH WHAT YOU HAVEN'T GOT." +3850 IF O/2=INT(O/2) THEN 3970 +3860 PRINT "WOULD YOU LIKE TO SELL YOUR WATCH"; +3870 INPUT J$ +3880 IF LEFT$(J$,1)="N" THEN 3970 +3890 IF FNA(0)>=7 THEN 3930 +3900 PRINT "I'LL GIVE YOU $75 FOR IT." +3910 S=S+75 +3920 GOTO 3950 +3930 PRINT "THAT'S A PRETTY CRUMMY WATCH - I'LL GIVE YOU $25." +3940 S=S+25 +3950 O=O*2 +3960 RETURN +3970 IF O/3<>INT(O/3) THEN 4090 +3980 PRINT "WILL YOU PART WITH THAT DIAMOND TIE TACK": +3990 INPUT J$ +4000 IF LEFT$(J$,1)="N" THEN 4080 +4010 IF FNA(0)>=6 THEN 4050 +4020 PRINT "YOU ARE NOW $100 RICHER." +4030 S=S+100 +4040 GOTO 4070 +4050 PRINT "IT'S PASTE. $25." +4060 S=S+25 +4070 O=O*3 +4080 RETURN +4090 PRINT "YOUR WAD IS SHOT. SO LONG, SUCKER!" +4100 END diff --git a/72 Queen/README.md b/72 Queen/README.md new file mode 100644 index 00000000..44ec90bb --- /dev/null +++ b/72 Queen/README.md @@ -0,0 +1,7 @@ +### Queen + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=133 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/72 Queen/queen.bas b/72 Queen/queen.bas new file mode 100644 index 00000000..9672338c --- /dev/null +++ b/72 Queen/queen.bas @@ -0,0 +1,168 @@ +1 PRINT TAB(33);"QUEEN" +2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +3 PRINT:PRINT:PRINT +10 DIM S(64) +11 FOR I=1 TO 64 +12 READ S(I) +13 NEXT I +14 DATA 81, 71, 61, 51, 41, 31, 21, 11 +15 DATA 92, 82, 72, 62, 52, 42, 32, 22 +16 DATA 103, 93, 83, 73, 63, 53, 43, 33 +17 DATA 114, 104, 94, 84, 74, 64, 54, 44 +18 DATA 125, 115, 105, 95, 85, 75, 65, 55 +19 DATA 136, 126, 116, 106, 96, 86, 76, 66 +20 DATA 147, 137, 127, 117, 107, 97, 87, 77 +21 DATA 158, 148, 138, 128, 118, 108, 98, 88 +22 INPUT "DO YOU WANT INSTRUCTIONS";W$ +23 IF W$="NO" THEN 30 +24 IF W$="YES" THEN 28 +25 PRINT "PLEASE ANSWER 'YES' OR 'NO'." +26 GOTO 22 +28 GOSUB 5000 +29 GOTO 100 +30 GOSUB 5160 +90 REM ERROR CHECKS +100 PRINT "WHERE WOULD YOU LIKE TO START"; +110 INPUT M1 +115 IF M1=0 THEN 232 +120 T1=INT(M1/10) +130 U1=M1-10*T1 +140 IF U1=1 THEN 200 +150 IF U1=T1 THEN 200 +160 PRINT "PLEASE READ THE DIRECTIONS AGAIN." +170 PRINT "YOU HAVE BEGUN ILLEGALLY." +175 PRINT +180 GOTO 100 +200 GOSUB 2000 +210 PRINT "COMPUTER MOVES TO SQUARE";M +215 IF M=158 THEN 3400 +220 PRINT "WHAT IS YOUR MOVE"; +230 INPUT M1 +231 IF M1<>0 THEN 239 +232 PRINT +233 PRINT "IT LOOKS LIKE I HAVE WON BY FORFEIT." +234 PRINT +235 GOTO 4000 +239 IF M1<=M THEN 3200 +240 T1=INT(M1/10) +250 U1=M1-10*T1 +260 P=U1-U +270 IF P<>0 THEN 300 +280 L=T1-T +290 IF L<=0 THEN 3200 +295 GOTO 200 +300 IF T1-T <>P THEN 320 +310 GOTO 200 +320 IF T1-T <>2*P THEN 3200 +330 GOTO 200 +1990 REM LOCATE MOVE FOR COMPUTER +2000 IF M1=41 THEN 2180 +2010 IF M1=44 THEN 2180 +2020 IF M1=73 THEN 2180 +2030 IF M1=75 THEN 2180 +2040 IF M1=126 THEN 2180 +2050 IF M1=127 THEN 2180 +2060 IF M1=158 THEN 3300 +2065 C=0 +2070 FOR K=7 TO 1 STEP -1 +2080 U=U1 +2090 T=T1+K +2100 GOSUB 3500 +2105 IF C=1 THEN 2160 +2110 U=U+K +2120 GOSUB 3500 +2125 IF C=1 THEN 2160 +2130 T=T+K +2140 GOSUB 3500 +2145 IF C=1 THEN 2160 +2150 NEXT K +2155 GOTO 2180 +2160 C=0 +2170 RETURN +2180 GOSUB 3000 +2190 RETURN +2990 REM RANDOM MOVE +3000 Z=RND(1) +3010 IF Z>.6 THEN 3110 +3020 IF Z>.3 THEN 3070 +3030 U=U1 +3040 T=T1+1 +3050 M=10*T+U +3060 RETURN +3070 U=U1+1 +3080 T=T1+2 +3090 M=10*T+U +3100 RETURN +3110 U=U1+1 +3120 T=T1+1 +3130 M=10*T+U +3140 RETURN +3190 REM ILLEGAL MOVE MESSAGE +3200 PRINT +3210 PRINT "Y O U C H E A T . . . TRY AGAIN"; +3220 GOTO 230 +3290 REM PLAYER WINS +3300 PRINT +3310 PRINT "C O N G R A T U L A T I O N S . . ." +3320 PRINT +3330 PRINT "YOU HAVE WON--VERY WELL PLAYED." +3340 PRINT "IT LOOKS LIKE I HAVE MET MY MATCH." +3350 PRINT "THANKS FOR PLAYING---I CAN'T WIN ALL THE TIME." +3360 PRINT +3370 GOTO 4000 +3390 REM COMPUTER WINS +3400 PRINT +3410 PRINT "NICE TRY, BUT IT LOOKS LIKE I HAVE WON." +3420 PRINT "THANKS FOR PLAYING." +3430 PRINT +3440 GOTO 4000 +3490 REM TEST FOR COMPUTER MOVE +3500 M=10*T+U +3510 IF M=158 THEN 3570 +3520 IF M=127 THEN 3570 +3530 IF M=126 THEN 3570 +3540 IF M=75 THEN 3570 +3550 IF M=73 THEN 3570 +3560 RETURN +3570 C=1 +3580 GOTO 3560 +3990 REM ANOTHER GAME??? +4000 PRINT "ANYONE ELSE CARE TO TRY"; +4010 INPUT Q$ +4020 PRINT +4030 IF Q$="YES" THEN 30 +4040 IF Q$="NO" THEN 4050 +4042 PRINT "PLEASE ANSWER 'YES' OR 'NO'." +4045 GOTO 4000 +4050 PRINT:PRINT "OK --- THANKS AGAIN." +4060 STOP +4990 REM DIRECTIONS +5000 PRINT "WE ARE GOING TO PLAY A GAME BASED ON ONE OF THE CHESS" +5010 PRINT "MOVES. OUR QUEEN WILL BE ABLE TO MOVE ONLY TO THE LEFT," +5020 PRINT "DOWN, OR DIAGONALLY DOWN AND TO THE LEFT." +5030 PRINT +5040 PRINT "THE OBJECT OF THE GAME IS TO PLACE THE QUEEN IN THE LOWER" +5050 PRINT "LEFT HAND SQUARE BY ALTERNATING MOVES BETWEEN YOU AND THE" +5060 PRINT "COMPUTER. THE FIRST ONE TO PLACE THE QUEEN THERE WINS." +5070 PRINT +5080 PRINT "YOU GO FIRST AND PLACE THE QUEEN IN ANY ONE OF THE SQUARES" +5090 PRINT "ON THE TOP ROW OR RIGHT HAND COLUMN." +5100 PRINT "THAT WILL BE YOUR FIRST MOVE." +5110 PRINT "WE ALTERNATE MOVES." +5120 PRINT "YOU MAY FORFEIT BY TYPING '0' AS YOUR MOVE." +5130 PRINT "BE SURE TO PRESS THE RETURN KEY AFTER EACH RESPONSE." +5140 PRINT +5150 PRINT +5160 PRINT +5170 FOR A=0 TO 7 +5180 FOR B=1 TO 8 +5185 I=8*A+B +5190 PRINT S(I); +5200 NEXT B +5210 PRINT +5220 PRINT +5230 PRINT +5240 NEXT A +5250 PRINT +5260 RETURN +9999 END diff --git a/73 Reverse/README.md b/73 Reverse/README.md new file mode 100644 index 00000000..68d83b47 --- /dev/null +++ b/73 Reverse/README.md @@ -0,0 +1,7 @@ +### Reverse + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=135 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/73 Reverse/reverse.bas b/73 Reverse/reverse.bas new file mode 100644 index 00000000..37d48676 --- /dev/null +++ b/73 Reverse/reverse.bas @@ -0,0 +1,62 @@ +10 PRINT TAB(32);"REVERSE" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +100 PRINT "REVERSE -- A GAME OF SKILL": PRINT +130 DIM A(20) +140 REM *** N=NUMBER OF NUMBERS +150 N=9 +160 PRINT "DO YOU WANT THE RULES"; +170 INPUT A$ +180 IF A$="NO" THEN 210 +190 GOSUB 710 +200 REM *** MAKE A RANDOM LIST A(1) TO A(N) +210 A(1)=INT((N-1)*RND(1)+2) +220 FOR K=2 TO N +230 A(K)=INT(N*RND(1)+1) +240 FOR J=1 TO K-1 +250 IF A(K)=A(J) THEN 230 +260 NEXT J:NEXT K +280 REM *** PRINT ORIGINAL LIST AND START GAME +290 PRINT: PRINT "HERE WE GO ... THE LIST IS:" +310 T=0 +320 GOSUB 610 +330 PRINT "HOW MANY SHALL I REVERSE"; +340 INPUT R +350 IF R=0 THEN 520 +360 IF R<=N THEN 390 +370 PRINT "OOPS! TOO MANY! I CAN REVERSE AT MOST";N:GOTO 330 +390 T=T+1 +400 REM *** REVERSE R NUMBERS AND PRINT NEW LIST +410 FOR K=1 TO INT(R/2) +420 Z=A(K) +430 A(K)=A(R-K+1) +440 A(R-K+1)=Z +450 NEXT K +460 GOSUB 610 +470 REM *** CHECK FOR A WIN +480 FOR K=1 TO N +490 IF A(K)<>K THEN 330 +500 NEXT K +510 PRINT "YOU WON IT IN";T;"MOVES!!!":PRINT +520 PRINT +530 PRINT "TRY AGAIN (YES OR NO)"; +540 INPUT A$ +550 IF A$="YES" THEN 210 +560 PRINT: PRINT "O.K. HOPE YOU HAD FUN!!":GOTO 999 +600 REM *** SUBROUTINE TO PRINT LIST +610 PRINT:FOR K=1 TO N:PRINT A(K);:NEXT K +650 PRINT:PRINT:RETURN +700 REM *** SUBROUTINE TO PRINT THE RULES +710 PRINT:PRINT "THIS IS THE GAME OF 'REVERSE'. TO WIN, ALL YOU HAVE" +720 PRINT "TO DO IS ARRANGE A LIST OF NUMBERS (1 THROUGH";N;")" +730 PRINT "IN NUMERICAL ORDER FROM LEFT TO RIGHT. TO MOVE, YOU" +740 PRINT "TELL ME HOW MANY NUMBERS (COUNTING FROM THE LEFT) TO" +750 PRINT "REVERSE. FOR EXAMPLE, IF THE CURRENT LIST IS:" +760 PRINT:PRINT "2 3 4 5 1 6 7 8 9" +770 PRINT:PRINT "AND YOU REVERSE 4, THE RESULT WILL BE:" +780 PRINT:PRINT "5 4 3 2 1 6 7 8 9" +790 PRINT:PRINT "NOW IF YOU REVERSE 5, YOU WIN!" +800 PRINT:PRINT "1 2 3 4 5 6 7 8 9":PRINT +810 PRINT "NO DOUBT YOU WILL LIKE THIS GAME, BUT" +820 PRINT "IF YOU WANT TO QUIT, REVERSE 0 (ZERO).":PRINT: RETURN +999 END diff --git a/74 Rock Scissors Paper/README.md b/74 Rock Scissors Paper/README.md new file mode 100644 index 00000000..602dd15b --- /dev/null +++ b/74 Rock Scissors Paper/README.md @@ -0,0 +1,7 @@ +### Rock, Scissors, Paper + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=137 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/74 Rock Scissors Paper/rockscissors.bas b/74 Rock Scissors Paper/rockscissors.bas new file mode 100644 index 00000000..8c364b63 --- /dev/null +++ b/74 Rock Scissors Paper/rockscissors.bas @@ -0,0 +1,33 @@ +10 PRINT TAB(21);"GAME OF ROCK, SCISSORS, PAPER" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +25 PRINT:PRINT:PRINT +30 INPUT "HOW MANY GAMES";Q +40 IF Q<11 THEN 60 +50 PRINT "SORRY, BUT WE AREN'T ALLOWED TO PLAY THAT MANY.": GOTO 30 +60 FOR G=1 TO Q +70 PRINT: PRINT "GAME NUMBER";G +80 X=INT(RND(1)*3+1) +90 PRINT "3=ROCK...2=SCISSORS...1=PAPER" +100 INPUT "1...2...3...WHAT'S YOUR CHOICE";K +110 IF (K-1)*(K-2)*(K-3)<>0 THEN PRINT "INVALID.": GOTO 90 +120 PRINT "THIS IS MY CHOICE..." +130 ON X GOTO 140,150,160 +140 PRINT "...PAPER": GOTO 170 +150 PRINT "...SCISSORS": GOTO 170 +160 PRINT "...ROCK" +170 IF X=K THEN 250 +180 IF X>K THEN 230 +190 IF X=1 THEN 210 +200 PRINT "YOU WIN!!!":H=H+1: GOTO 260 +210 IF K<>3 THEN 200 +220 PRINT "WOW! I WIN!!!":C=C+1:GOTO 260 +230 IF K<>1 OR X<>3 THEN 220 +240 GOTO 200 +250 PRINT "TIE GAME. NO WINNER." +260 NEXT G +270 PRINT: PRINT "HERE IS THE FINAL GAME SCORE:" +280 PRINT "I HAVE WON";C;"GAME(S)." +290 PRINT "YOU HAVE WON";H;"GAME(S)." +300 PRINT "AND";Q-(C+H);"GAME(S) ENDED IN A TIE." +310 PRINT: PRINT "THANKS FOR PLAYING!!" +320 END diff --git a/75 Roulette/README.md b/75 Roulette/README.md new file mode 100644 index 00000000..f652ee9e --- /dev/null +++ b/75 Roulette/README.md @@ -0,0 +1,7 @@ +### Roulette + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=138 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/75 Roulette/roulette.bas b/75 Roulette/roulette.bas new file mode 100644 index 00000000..50b7134f --- /dev/null +++ b/75 Roulette/roulette.bas @@ -0,0 +1,239 @@ +10 PRINT TAB(32);"ROULETTE" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +40 PRINT "ENTER THE CURRENT DATE (AS IN 'JANUARY 23, 1979') -"; +50 INPUT D$,E$ +1000 REM-ROULETTE +1010 REM-DAVID JOSLIN +1020 PRINT "WELCOME TO THE ROULETTE TABLE" +1030 PRINT +1040 PRINT "DO YOU WANT INSTRUCTIONS"; +1050 INPUT Y$ +1060 IF LEFT$(Y$,1)="N" THEN 1550 +1070 PRINT +1080 PRINT "THIS IS THE BETTING LAYOUT" +1090 PRINT " (*=RED)" +1100 PRINT +1110 PRINT " 1* 2 3*" +1120 PRINT " 4 5* 6 " +1130 PRINT " 7* 8 9*" +1140 PRINT "10 11 12*" +1150 PRINT "---------------" +1160 PRINT "13 14* 15 " +1170 PRINT "16* 17 18*" +1180 PRINT "19* 20 21*" +1190 PRINT "22 23* 24 " +1200 PRINT "---------------" +1210 PRINT "25* 26 27*" +1220 PRINT "28 29 30*" +1230 PRINT "31 32* 33 " +1240 PRINT "34* 35 36*" +1250 PRINT "---------------" +1260 PRINT " 00 0 " +1270 PRINT +1280 PRINT "TYPES OF BETS" +1290 PRINT +1300 PRINT "THE NUMBERS 1 TO 36 SIGNIFY A STRAIGHT BET" +1310 PRINT "ON THAT NUMBER." +1320 PRINT "THESE PAY OFF 35:1" +1330 PRINT +1340 PRINT "THE 2:1 BETS ARE:" +1350 PRINT " 37) 1-12 40) FIRST COLUMN" +1360 PRINT " 38) 13-24 41) SECOND COLUMN" +1370 PRINT " 39) 25-36 42) THIRD COLUMN" +1380 PRINT +1390 PRINT "THE EVEN MONEY BETS ARE:" +1400 PRINT " 43) 1-18 46) ODD" +1410 PRINT " 44) 19-36 47) RED" +1420 PRINT " 45) EVEN 48) BLACK" +1430 PRINT +1440 PRINT " 49)0 AND 50)00 PAY OFF 35:1" +1450 PRINT " NOTE: 0 AND 00 DO NOT COUNT UNDER ANY" +1460 PRINT " BETS EXCEPT THEIR OWN." +1470 PRINT +1480 PRINT "WHEN I ASK FOR EACH BET, TYPE THE NUMBER" +1490 PRINT "AND THE AMOUNT, SEPARATED BY A COMMA." +1500 PRINT "FOR EXAMPLE: TO BET $500 ON BLACK, TYPE 48,500" +1510 PRINT "WHEN I ASK FOR A BET." +1520 PRINT +1530 PRINT "THE MINIMUM BET IS $5, THE MAXIMUM IS $500." +1540 PRINT +1550 REM-PROGRAM BEGINS HERE +1560 REM-TYPE OF BET(NUMBER) ODDS +1570 REM DON'T NEED TO DIMENSION STRINGS +1580 DIM B(100),C(100),T(100),X(38) +1590 DIM A(50) +1600 FOR I=1 TO 38: X(I)=0: NEXT I: REM MAT X=ZER +1610 P=1000 +1620 D=100000. +1630 PRINT "HOW MANY BETS"; +1640 INPUT Y +1650 IF Y<1 OR Y<>INT(Y) THEN 1630 +1660 FOR I=1 TO 50: A(I)=0: NEXT I: REM MAT A=ZER +1670 FOR C=1 TO Y +1680 PRINT "NUMBER";C; +1690 INPUT X,Z +1700 B(C)=Z +1710 T(C)=X +1720 IF X<1 OR X>50 OR X<>INT(X) THEN 1680 +1730 IF Z<1 OR Z<>INT(Z) THEN 1680 +1740 IF Z<5 OR Z>500 THEN 1680 +1750 IF A(X)=0 THEN 1780 +1760 PRINT "YOU MADE THAT BET ONCE ALREADY,DUM-DUM" +1770 GOTO 1680 +1780 A(X)=1 +1790 NEXT C +1800 PRINT "SPINNING" +1810 PRINT +1820 PRINT +1830 S=INT(RND(1)*100) +1840 IF S=0 OR S>38 THEN 1830 +1850 X(S)=X(S)+1 +1860 IF S<37 THEN 1920 +1870 IF S=37 THEN 1900 +1880 PRINT "00" +1890 GOTO 2020 +1900 PRINT "0" +1910 GOTO 2020 +1920 RESTORE +1930 FOR I1=1 TO 18 +1940 READ R +1950 IF R=S THEN 2000 +1960 NEXT I1 +1970 A$="BLACK" +1980 PRINT S;A$ +1990 GOTO 2020 +2000 A$="RED" +2010 GOTO 1980 +2020 PRINT +2030 FOR C=1 TO Y +2040 IF T(C)<37 THEN 2710 +2050 ON T(C)-36 GOTO 2090,2190,2220,2250,2300,2350,2400,2470,2500 +2060 ON T(C)-45 GOTO 2530,2560,2630 +2070 GOTO 2710 +2080 STOP +2090 REM 1-12(37) 2:1 +2100 IF S <= 12 THEN 2150 +2110 PRINT "YOU LOSE";B(C);"DOLLARS ON BET";C +2120 D=D+B(C) +2130 P=P-B(C) +2140 GOTO 2180 +2150 PRINT "YOU WIN";B(C)*2;"DOLLARS ON BET"C +2160 D=D-B(C)*2 +2170 P=P+B(C)*2 +2180 GOTO 2810 +2190 REM 13-24(38) 2:1 +2200 IF S>12 AND S<25 THEN 2150 +2210 GOTO 2110 +2220 REM 25-36(39) 2:1 +2230 IF S>24 AND S<37 THEN 2150 +2240 GOTO 2110 +2250 REM FIRST COLUMN(40) 2:1 +2260 FOR I=1 TO 34 STEP 3 +2270 IF S=I THEN 2150 +2280 NEXT I +2290 GOTO 2110 +2300 REM SECOND COLUMN(41) 2:1 +2310 FOR I=2 TO 35 STEP 3 +2320 IF S=I THEN 2150 +2330 NEXT I +2340 GOTO 2110 +2350 REM THIRD COLUMN(42) 2:1 +2360 FOR I=3 TO 36 STEP 3 +2370 IF S=I THEN 2150 +2380 NEXT I +2390 GOTO 2110 +2400 REM 1-18(43) 1:1 +2410 IF S<19 THEN 2430 +2420 GOTO 2110 +2430 PRINT "YOU WIN";B(C);"DOLLARS ON BET";C +2440 D=D-B(C) +2450 P=P+B(C) +2460 GOTO 2810 +2470 REM 19-36(44) 1:1 +2480 IF S<37 AND S>18 THEN 2430 +2490 GOTO 2110 +2500 REM EVEN(45) 1:1 +2510 IF S/2=INT(S/2) AND S<37 THEN 2430 +2520 GOTO 2110 +2530 REM ODD(46) 1:1 +2540 IF S/2<>INT(S/2) AND S<37 THEN 2430 +2550 GOTO 2110 +2560 REM RED(47) 1:1 +2570 RESTORE +2580 FOR I=1 TO 18 +2590 READ R +2600 IF S=R THEN 2430 +2610 NEXT I +2620 GOTO 2110 +2630 REM BLACK(48) 1:1 +2640 RESTORE +2650 FOR I=1 TO 18 +2660 READ R +2670 IF S=R THEN 2110 +2680 NEXT I +2690 IF S>36 THEN 2110 +2700 GOTO 2430 +2710 REM--1TO36,0,00(1-36,49,50)35:1 +2720 IF T(C)<49 THEN 2760 +2730 IF T(C)=49 AND S=37 THEN 2780 +2740 IF T(C)=50 AND S=38 THEN 2780 +2750 GOTO 2110 +2760 IF T(C)=S THEN 2780 +2770 GOTO 2110 +2780 PRINT "YOU WIN";B(C)*35;"DOLLARS ON BET";C +2790 D=D-B(C)*35 +2800 P=P+B(C)*35 +2810 NEXT C +2820 PRINT +2830 PRINT "TOTALS:","ME","YOU" +2840 PRINT " ",D,P +2850 IF P>0 THEN 2880 +2860 PRINT "OOPS! YOU JUST SPENT YOUR LAST DOLLAR!" +2870 GOTO 3190 +2880 IF D>0 THEN 2920 +2890 PRINT "YOU BROKE THE HOUSE!" +2900 P=101000. +2910 GOTO 2960 +2920 PRINT "AGAIN"; +2930 INPUT Y$ +2940 IF LEFT$(Y$,1)="Y" THEN 1630 +2950 DATA 1,3,5,7,9,12,14,16,18,19,21,23,25,27,30,32,34,36 +2960 IF P<1 THEN 3190 +2970 PRINT "TO WHOM SHALL I MAKE THE CHECK"; +2980 INPUT B$ +2990 PRINT +3000 FOR I=1 TO 72: PRINT "-";: NEXT I: REM PRINT 72 DASHES +3010 PRINT TAB(50);"CHECK NO. ";INT(RND(1)*100) +3020 PRINT +3030 GOSUB 3230 +3040 PRINT TAB(40);M$ +3050 PRINT +3060 PRINT +3070 PRINT "PAY TO THE ORDER OF-----";B$;"-----$ "; +3080 PRINT P +3090 PRINT +3100 PRINT +3110 PRINT TAB(10),"THE MEMORY BANK OF NEW YORK" +3120 PRINT +3130 PRINT TAB(40),"THE COMPUTER" +3140 PRINT TAB(40)"----------X-----" +3150 PRINT +3160 FOR I=1 TO 62: PRINT "-";: NEXT I +3170 PRINT "COME BACK SOON!" +3180 GOTO 3210 +3190 PRINT "THANKS FOR YOUR MONEY." +3200 PRINT "I'LL USE IT TO BUY A SOLID GOLD ROULETTE WHEEL" +3210 PRINT +3220 GOTO 3420 +3230 REM +3240 REM THIS ROUTINE RETURNS THE CURRENT DATE IN M$ +3250 REM IF YOU HAVE SYSTEM FUNCTIONS TO HANDLE THIS +3260 REM THEY CAN BE USED HERE. HOWEVER IN THIS +3270 REM PROGRAM, WE JUST INPUT THE DATE AT THE START +3280 REM THE GAME +3290 REM +3300 REM THE DATE IS RETURNED IN VARIABLE M$ +3310 M$=D$+", "+E$ +3320 RETURN +3420 END diff --git a/76 Russian Roulette/README.md b/76 Russian Roulette/README.md new file mode 100644 index 00000000..3385adc8 --- /dev/null +++ b/76 Russian Roulette/README.md @@ -0,0 +1,7 @@ +### Russian Roulette + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=141 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/76 Russian Roulette/russianroulette.bas b/76 Russian Roulette/russianroulette.bas new file mode 100644 index 00000000..437e53c1 --- /dev/null +++ b/76 Russian Roulette/russianroulette.bas @@ -0,0 +1,26 @@ +1 PRINT TAB(28);"RUSSIAN ROULETTE" +2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +3 PRINT:PRINT:PRINT +5 PRINT "THIS IS A GAME OF >>>>>>>>>>RUSSIAN ROULETTE." +10 PRINT:PRINT "HERE IS A REVOLVER." +20 PRINT "TYPE '1' TO SPIN CHAMBER AND PULL TRIGGER." +22 PRINT "TYPE '2' TO GIVE UP." +23 PRINT "GO"; +25 N=0 +30 INPUT I +31 IF I<>2 THEN 35 +32 PRINT " CHICKEN!!!!!" +33 GOTO 72 +35 N=N+1 +40 IF RND(1)>.833333 THEN 70 +45 IF N>10 THEN 80 +50 PRINT "- CLICK -" +60 PRINT: GOTO 30 +70 PRINT " BANG!!!!! YOU'RE DEAD!" +71 PRINT "CONDOLENCES WILL BE SENT TO YOUR RELATIVES." +72 PRINT:PRINT:PRINT +75 PRINT "...NEXT VICTIM...":GOTO 20 +80 PRINT "YOU WIN!!!!!" +85 PRINT "LET SOMEONE ELSE BLOW HIS BRAINS OUT." +90 GOTO 10 +99 END diff --git a/77 Salvo/README.md b/77 Salvo/README.md new file mode 100644 index 00000000..82f8a5e2 --- /dev/null +++ b/77 Salvo/README.md @@ -0,0 +1,7 @@ +### Salvo + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=142 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/77 Salvo/salvo.bas b/77 Salvo/salvo.bas new file mode 100644 index 00000000..6a85d715 --- /dev/null +++ b/77 Salvo/salvo.bas @@ -0,0 +1,329 @@ +1000 PRINT TAB(33);"SALVO" +1010 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +1020 PRINT:PRINT:PRINT +1030 REM +1040 DIM A(10,10),B(10,10),C(7),D(7),E(12),F(12),G(12),H(12),K(10,10) +1050 Z8=0 +1060 FOR W=1 TO 12 +1070 E(W)=-1 +1080 H(W)=-1 +1090 NEXT W +1100 FOR X=1 TO 10 +1110 FOR Y=1 TO 10 +1120 B(X,Y)=0 +1130 NEXT Y +1140 NEXT X +1150 FOR X=1 TO 12 +1160 F(X)=0 +1170 G(X)=0 +1180 NEXT X +1190 FOR X=1 TO 10 +1200 FOR Y=1 TO 10 +1210 A(X,Y)=0 +1220 NEXT Y +1230 NEXT X +1240 FOR K=4 TO 1 STEP -1 +1250 U6=0 +1260 GOSUB 2910 +1270 DEF FNA(K)=(5-K)*3-2*INT(K/4)+SGN(K-1)-1 +1280 DEF FNB(K)=K+INT(K/4)-SGN(K-1) +1290 IF V+V2+V*V2=0 THEN 1260 +1300 IF Y+V*FNB(K)>10 THEN 1260 +1310 IF Y+V*FNB(K)<1 THEN 1260 +1320 IF X+V2*FNB(K)>10 THEN 1260 +1330 IF X+V2*FNB(K)<1 THEN 1260 +1340 U6=U6+1 +1350 IF U6>25 THEN 1190 +1360 FOR Z=0 TO FNB(K) +1370 F(Z+FNA(K))=X+V2*Z +1380 G(Z+FNA(K))=Y+V*Z +1390 NEXT Z +1400 U8=FNA(K) +1405 IF U8>U8+FNB(K) THEN 1460 +1410 FOR Z2= U8 TO U8+FNB(K) +1415 IF U8<2 THEN 1450 +1420 FOR Z3=1 TO U8-1 +1430 IF SQR((F(Z3)-F(Z2))^2 + (G(Z3)-G(Z2))^2) < 3.59 THEN 1260 +1440 NEXT Z3 +1450 NEXT Z2 +1460 FOR Z=0 TO FNB(K) +1470 A(F(Z+U8),G(Z+U8))=.5+SGN(K-1)*(K-1.5) +1480 NEXT Z +1490 NEXT K +1500 PRINT "ENTER COORDINATES FOR..." +1510 PRINT "BATTLESHIP" +1520 FOR X=1 TO 5 +1530 INPUT Y,Z +1540 B(Y,Z)=3 +1550 NEXT X +1560 PRINT "CRUISER" +1570 FOR X=1 TO 3 +1580 INPUT Y,Z +1590 B(Y,Z)=2 +1600 NEXT X +1610 PRINT "DESTROYER" +1620 FOR X=1 TO 2 +1630 INPUT Y,Z +1640 B(Y,Z)=1 +1650 NEXT X +1660 PRINT "DESTROYER" +1670 FOR X=1 TO 2 +1680 INPUT Y,Z +1690 B(Y,Z)=.5 +1700 NEXT X +1710 PRINT "DO YOU WANT TO START"; +1720 INPUT J$ +1730 IF J$<>"WHERE ARE YOUR SHIPS?" THEN 1890 +1740 PRINT "BATTLESHIP" +1750 FOR Z=1 TO 5 +1760 PRINT F(Z);G(Z) +1770 NEXT Z +1780 PRINT "CRUISER" +1790 PRINT F(6);G(6) +1800 PRINT F(7);G(7) +1810 PRINT F(8);G(8) +1820 PRINT "DESTROYER" +1830 PRINT F(9);G(9) +1840 PRINT F(10);G(10) +1850 PRINT "DESTROYER" +1860 PRINT F(11);G(11) +1870 PRINT F(12);G(12) +1880 GOTO 1710 +1890 C=0 +1900 PRINT "DO YOU WANT TO SEE MY SHOTS"; +1910 INPUT K$ +1920 PRINT +1930 IF J$<>"YES" THEN 2620 +1940 REM*******************START +1950 IF J$<>"YES" THEN 1990 +1960 C=C+1 +1970 PRINT +1980 PRINT "TURN";C +1990 A=0 +2000 FOR W=.5 TO 3 STEP .5 +2010 FOR X=1 TO 10 +2020 FOR Y=1 TO 10 +2030 IF B(X,Y)=W THEN 2070 +2040 NEXT Y +2050 NEXT X +2060 GOTO 2080 +2070 A=A+INT(W+.5) +2080 NEXT W +2090 FOR W=1 TO 7 +2100 C(W)=0 +2110 D(W)=0 +2120 F(W)=0 +2130 G(W)=0 +2140 NEXT W +2150 P3=0 +2160 FOR X=1 TO 10 +2170 FOR Y=1 TO 10 +2180 IF A(X,Y)>10 THEN 2200 +2190 P3=P3+1 +2200 NEXT Y +2210 NEXT X +2220 PRINT "YOU HAVE";A;"SHOTS." +2230 IF P3>=A THEN 2260 +2240 PRINT "YOU HAVE MORE SHOTS THAN THERE ARE BLANK SQUARES." +2250 GOTO 2890 +2260 IF A<>0 THEN 2290 +2270 PRINT "I HAVE WON." +2280 STOP +2290 FOR W=1 TO A +2300 INPUT X,Y +2310 IF X<>INT(X) THEN 2370 +2320 IF X>10 THEN 2370 +2330 IF X<1 THEN 2370 +2340 IF Y<>INT(Y) THEN 2370 +2350 IF Y>10 THEN 2370 +2360 IF Y>=1 THEN 2390 +2370 PRINT "ILLEGAL, ENTER AGAIN." +2380 GOTO 2300 +2390 IF A(X,Y)>10 THEN 2440 +2400 C(W)=X +2410 D(W)=Y +2420 NEXT W +2430 GOTO 2460 +2440 PRINT "YOU SHOT THERE BEFORE ON TURN";A(X,Y)-10 +2450 GOTO 2300 +2460 FOR W=1 TO A +2470 IF A(C(W),D(W))=3 THEN 2540 +2480 IF A(C(W),D(W))=2 THEN 2560 +2490 IF A(C(W),D(W))=1 THEN 2580 +2500 IF A(C(W),D(W))=.5 THEN 2600 +2510 A(C(W),D(W))=10+C +2520 NEXT W +2530 GOTO 2620 +2540 PRINT "YOU HIT MY BATTLESHIP." +2550 GOTO 2510 +2560 PRINT "YOU HIT MY CRUISER." +2570 GOTO 2510 +2580 PRINT "YOU HIT MY DESTROYER." +2590 GOTO 2510 +2600 PRINT "YOU HIT MY DESTROYER." +2610 GOTO 2510 +2620 A=0 +2630 IF J$="YES" THEN 2670 +2640 C=C+1 +2650 PRINT +2660 PRINT "TURN";C +2670 A=0 +2680 FOR W=.5 TO 3 STEP .5 +2690 FOR X=1 TO 10 +2700 FOR Y=1 TO 10 +2710 IF A(X,Y)=W THEN 2750 +2720 NEXT Y +2730 NEXT X +2740 GOTO 2760 +2750 A=A+INT(W+.5) +2760 NEXT W +2770 P3=0 +2780 FOR X=1 TO 10 +2790 FOR Y=1 TO 10 +2800 IF A(X,Y)>10 THEN 2820 +2810 P3=P3+1 +2820 NEXT Y +2830 NEXT X +2840 PRINT "I HAVE";A;"SHOTS." +2850 IF P3>A THEN 2880 +2860 PRINT "I HAVE MORE SHOTS THAN BLANK SQUARES." +2870 GOTO 2270 +2880 IF A<>0 THEN 2960 +2890 PRINT "YOU HAVE WON." +2900 STOP +2910 X=INT(RND(1)*10+1) +2920 Y=INT(RND(1)*10+1) +2930 V=INT(3*RND(1)-1) +2940 V2=INT(3*RND(1)-1) +2950 RETURN +2960 FOR W=1 TO 12 +2970 IF H(W)>0 THEN 3800 +2980 NEXT W +2990 REM*******************RANDOM +3000 W=0 +3010 R3=0 +3020 GOSUB 2910 +3030 RESTORE +3040 R2=0 +3050 R3=R3+1 +3060 IF R3>100 THEN 3010 +3070 IF X>10 THEN 3110 +3080 IF X>0 THEN 3120 +3090 X=1+INT(RND(1)*2.5) +3100 GOTO 3120 +3110 X=10-INT(RND(1)*2.5) +3120 IF Y>10 THEN 3160 +3130 IF Y>0 THEN 3270 +3140 Y=1+INT(RND(1)*2.5) +3150 GOTO 3270 +3160 Y=10-INT(RND(1)*2.5) +3170 GOTO 3270 +3180 F(W)=X +3190 G(W)=Y +3200 IF W=A THEN 3380 +3210 IF R2=6 THEN 3030 +3220 READ X1,Y1 +3230 R2=R2+1 +3240 DATA 1,1,-1,1,1,-3,1,1,0,2,-1,1 +3250 X=X+X1 +3260 Y=Y+Y1 +3270 IF X>10 THEN 3210 +3280 IF X<1 THEN 3210 +3290 IF Y>10 THEN 3210 +3300 IF Y<1 THEN 3210 +3310 IF B(X,Y)>10 THEN 3210 +3320 FOR Q9=1 TO W +3330 IF F(Q9)<>X THEN 3350 +3340 IF G(Q9)=Y THEN 3210 +3350 NEXT Q9 +3360 W=W+1 +3370 GOTO 3180 +3380 IF K$<>"YES" THEN 3420 +3390 FOR Z5=1 TO A +3400 PRINT F(Z5);G(Z5) +3410 NEXT Z5 +3420 FOR W=1 TO A +3430 IF B(F(W),G(W))=3 THEN 3500 +3440 IF B(F(W),G(W))=2 THEN 3520 +3450 IF B(F(W),G(W))=1 THEN 3560 +3460 IF B(F(W),G(W))=.5 THEN 3540 +3470 B(F(W),G(W))=10+C +3480 NEXT W +3490 GOTO 1950 +3500 PRINT "I HIT YOUR BATTLESHIP" +3510 GOTO 3570 +3520 PRINT "I HIT YOUR CRUISER" +3530 GOTO 3570 +3540 PRINT "I HIT YOUR DESTROYER" +3550 GOTO 3570 +3560 PRINT "I HIT YOUR DESTROYER" +3570 FOR Q=1 TO 12 +3580 IF E(Q)<>-1 THEN 3730 +3590 E(Q)=10+C +3600 H(Q)=B(F(W),G(W)) +3610 M3=0 +3620 FOR M2=1 TO 12 +3630 IF H(M2)<>H(Q) THEN 3650 +3640 M3=M3+1 +3650 NEXT M2 +3660 IF M3<>INT(H(Q)+.5)+1+INT(INT(H(Q)+.5)/3) THEN 3470 +3670 FOR M2=1 TO 12 +3680 IF H(M2)<>H(Q) THEN 3710 +3690 E(M2)=-1 +3700 H(M2)=-1 +3710 NEXT M2 +3720 GOTO 3470 +3730 NEXT Q +3740 PRINT "PROGRAM ABORT:" +3750 FOR Q=1 TO 12 +3760 PRINT "E(";Q;") =";E(Q) +3770 PRINT "H(";Q;") =";H(Q) +3780 NEXT Q +3790 STOP +3800 REM************************USINGEARRAY +3810 FOR R=1 TO 10 +3820 FOR S=1 TO 10 +3830 K(R,S)=0 +3840 NEXT S +3850 NEXT R +3860 FOR U=1 TO 12 +3870 IF E(U)<10 THEN 4020 +3880 FOR R=1 TO 10 +3890 FOR S=1 TO 10 +3900 IF B(R,S)<10 THEN 3930 +3910 K(R,S)=-10000000 +3920 GOTO 4000 +3930 FOR M=SGN(1-R) TO SGN(10-R) +3940 FOR N=SGN(1-S) TO SGN(10-S) +3950 IF N+M+N*M=0 THEN 3980 +3960 IF B(R+M,S+N)<>E(U) THEN 3980 +3970 K(R,S)=K(R,S)+E(U)-S*INT(H(U)+.5) +3980 NEXT N +3990 NEXT M +4000 NEXT S +4010 NEXT R +4020 NEXT U +4030 FOR R=1 TO A +4040 F(R)=R +4050 G(R)=R +4060 NEXT R +4070 FOR R=1 TO 10 +4080 FOR S=1 TO 10 +4090 Q9=1 +4100 FOR M=1 TO A +4110 IF K(F(M),G(M))>=K(F(Q9),G(Q9)) THEN 4130 +4120 Q9=M +4130 NEXT M +4131 IF R>A THEN 4140 +4132 IF R=S THEN 4210 +4140 IF K(R,S)R THEN 4190 +4170 IF G(M)=S THEN 4210 +4180 NEXT M +4190 F(Q9)=R +4200 G(Q9)=S +4210 NEXT S +4220 NEXT R +4230 GOTO 3380 +4240 END diff --git a/78 Sine Wave/README.md b/78 Sine Wave/README.md new file mode 100644 index 00000000..f78ccccf --- /dev/null +++ b/78 Sine Wave/README.md @@ -0,0 +1,7 @@ +### Sine Wave + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=146 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/78 Sine Wave/sinewave.bas b/78 Sine Wave/sinewave.bas new file mode 100644 index 00000000..0e362acd --- /dev/null +++ b/78 Sine Wave/sinewave.bas @@ -0,0 +1,17 @@ +10 PRINT TAB(30);"SINE WAVE" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT: PRINT: PRINT: PRINT: PRINT +40 REMARKABLE PROGRAM BY DAVID AHL +50 B=0 +100 REM START LONG LOOP +110 FOR T=0 TO 40 STEP .25 +120 A=INT(26+25*SIN(T)) +130 PRINT TAB(A); +140 IF B=1 THEN 180 +150 PRINT "CREATIVE" +160 B=1 +170 GOTO 200 +180 PRINT "COMPUTING" +190 B=0 +200 NEXT T +999 END diff --git a/79 Slalom/README.md b/79 Slalom/README.md new file mode 100644 index 00000000..49935ea1 --- /dev/null +++ b/79 Slalom/README.md @@ -0,0 +1,7 @@ +### Slalom + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=147 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/79 Slalom/slalom.bas b/79 Slalom/slalom.bas new file mode 100644 index 00000000..b46cc39b --- /dev/null +++ b/79 Slalom/slalom.bas @@ -0,0 +1,165 @@ +10 PRINT TAB(33);"SLALOM" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +310 PRINT "HOW MANY GATES DOES THIS COURSE HAVE (1 TO 25)"; +320 INPUT V +330 IF V>25 THEN 360 +340 IF V<1 THEN 390 +350 GOTO 1440 +360 PRINT "25 IS THE LIMIT." +370 LET V=25 +380 GOTO 1440 +390 PRINT "TRY AGAIN," +400 GOTO 310 +410 PRINT "RATE YOURSELF AS A SKIER, (1=WORST, 3=BEST)"; +420 INPUT A +430 IF A<1 THEN 460 +440 IF A>3 THEN 460 +450 GOTO 480 +460 PRINT "THE BOUNDS ARE 1-3" +470 GOTO 410 +480 PRINT"THE STARTER COUNTS DOWN...5...4...3...2...1...GO!"; +490 REM +500 LET T=0 +510 LET S=INT(RND(1)*(18-9)+9) +520 PRINT +525 PRINT "YOU'RE OFF!" +530 FOR O=1 TO V +540 READ Q +550 PRINT +555 PRINT "HERE COMES GATE #";STR$(O);":" +560 PRINT S;"M.P.H." +570 LET S1=S +580 PRINT "OPTION"; +590 INPUT O1 +600 IF O1=0 THEN 970 +610 IF O1>8 THEN 1420 +620 IF O1<1 THEN 1420 +630 GOSUB 990 +640 IF S<7 THEN 1390 +650 LET T=T+(Q-S+1) +660 IF S>Q THEN 1630 +670 NEXT O +680 PRINT:PRINT "YOU TOOK";(T+RND(1));"SECONDS." +690 LET M=T +700 LET M=M/V +710 IF M<1.5-(A*.1) THEN 1650 +720 IF M<2.9-(A*.1) THEN 1680 +730 IF M<4.4-(A*.01) THEN 1710 +740 PRINT:PRINT "DO YOU WANT TO RACE AGAIN"; +750 INPUT B$ +760 REM +770 IF B$="NO" THEN 1740 +780 IF B$="YES" THEN 480 +790 PRINT "PLEASE TYPE 'YES' OR 'NO'" +800 GOTO 740 +810 STOP +820 PRINT +825 PRINT "*** SLALOM: THIS IS THE 1976 WINTER OLYMPIC GIANT SLALOM. YOU ARE" +830 PRINT " THE AMERICAN TEAM'S ONLY HOPE OF A GOLD MEDAL." +840 PRINT +845 PRINT " 0 -- TYPE THIS IS YOU WANT TO SEE HOW LONG YOU'VE TAKEN." +850 PRINT " 1 -- TYPE THIS IF YOU WANT TO SPEED UP A LOT." +860 PRINT " 2 -- TYPE THIS IF YOU WANT TO SPEED UP A LITTLE." +870 PRINT " 3 -- TYPE THIS IF YOU WANT TO SPEED UP A TEENSY." +880 PRINT " 4 -- TYPE THIS IF YOU WANT TO KEEP GOING THE SAME SPEED." +890 PRINT " 5 -- TYPE THIS IF YOU WANT TO CHECK A TEENSY." +900 PRINT " 6 -- TYPE THIS IF YOU WANT TO CHECK A LITTLE." +910 PRINT " 7 -- TYPE THIS IF YOU WANT TO CHECK A LOT." +920 PRINT " 8 -- TYPE THIS IF YOU WANT TO CHEAT AND TRY TO SKIP A GATE." +930 PRINT +935 PRINT " THE PLACE TO USE THESE OPTIONS IS WHEN THE COMPUTER ASKS:" +940 PRINT +945 PRINT "OPTION?" +950 PRINT +955 PRINT " GOOD LUCK!" +957 PRINT +960 GOTO 1470 +970 PRINT "YOU'VE TAKEN";(T+RND(1));"SECONDS." +980 GOTO 580 +990 ON O1 GOTO 1130,1010,1170,1080,1190,1100,1150,1210 +1000 STOP +1010 LET S=S+INT(RND(1)*(5-3)+3) +1020 PRINT S;"M.P.H." +1030 IF S>Q THEN 1290 +1040 IF S>Q-1 THEN 1060 +1050 RETURN +1060 PRINT "CLOSE ONE!" +1070 RETURN +1080 PRINT S;"M.P.H." +1090 GOTO 1030 +1100 LET S=S-INT(RND(1)*(5-3)+3) +1110 PRINT S;"M.P.H." +1120 GOTO 1030 +1130 LET S=S+INT(RND(1)*(10-5)+5) +1140 GOTO 1080 +1150 LET S=S-INT(RND(1)*(10-5)+5) +1160 GOTO 1110 +1170 LET S=S+INT(RND(1)*(4-1)+1) +1180 GOTO 1110 +1190 LET S=S-INT(RND(1)*(4-1)+1) +1200 GOTO 1110 +1210 PRINT "***CHEAT" +1220 IF RND(1)<.7 THEN 1260 +1230 PRINT "YOU MADE IT!" +1240 LET T=T+1.5 +1250 RETURN +1260 PRINT "AN OFFICIAL CAUGHT YOU!" +1270 PRINT "YOU TOOK";(T+RND(1));"SECONDS." +1280 GOTO 740 +1290 IF RND(1)<((S-Q)*.1)+.2 THEN 1320 +1300 PRINT "YOU WENT OVER THE NAXIMUM SPEED AND MADE IT!" +1310 RETURN +1320 PRINT "YOU WENT OVER THE MAXIMUM SPEED AND "; +1330 IF RND(1)<.5 THEN 1370 +1340 PRINT "WIPED OUT!" +1350 PRINT "YOU TOOK";(T+RND(1));"SECONDS" +1360 GOTO 740 +1370 PRINT "SNAGGED A FLAG!" +1380 GOTO 1350 +1390 PRINT "LET'S BE REALISTIC, OK? LET'S GO BACK AND TRY AGAIN..." +1400 LET S=S1 +1410 GOTO 550 +1420 PRINT "WHAT?" +1430 GOTO 580 +1440 PRINT +1445 PRINT "TYPE ";CHR$(34);"INS";CHR$(34);" FOR INSTRUCTIONS" +1450 PRINT "TYPE ";CHR$(34);"MAX";CHR$(34);" FOR APPROXIMATE MAXIMUM SPEEDS" +1460 PRINT "TYPE ";CHR$(34);"RUN";CHR$(34);" FOR THE BEGINNING OF THE RACE" +1470 PRINT "COMMAND--"; +1480 INPUT A$ +1490 REM +1500 IF A$="INS" THEN 820 +1510 IF A$="MAX" THEN 1550 +1520 IF A$="RUN" THEN 410 +1530 PRINT CHR$(34);A$;CHR$(34);" IS AN ILLEGAL COMMAND--RETRY"; +1540 GOTO 1480 +1550 PRINT "GATE MAX" +1560 PRINT " # M.P.H." +1570 PRINT"----------" +1580 FOR B=1 TO V +1590 READ Q +1600 PRINT B;" ";Q +1610 NEXT B +1620 GOTO 1470 +1630 LET T=T+.5 +1640 GOTO 670 +1650 PRINT "YOU WON A GOLD MEDAL!" +1660 LET G(1)=G(1)+1 +1670 GOTO 1730 +1680 PRINT "YOU WON A SILVER MEDAL" +1690 LET S(1)=S(1)+1 +1700 GOTO 1730 +1710 PRINT "YOU WON A BRONZE MEDAL" +1720 LET B(1)=B(1)+1 +1730 GOTO 740 +1740 PRINT "THANKS FOR THE RACE" +1750 IF G(1)<1 THEN 1770 +1760 PRINT "GOLD MEDALS:";G(1) +1770 IF S(1)<1 THEN 1790 +1780 PRINT "SILVER MEDALS:";S(1) +1790 IF B(1)<1 THEN 1830 +1800 PRINT "BRONZE MEDALS:";B(1) +1810 DATA 14,18,26,29,18,25,28,32,29,20,29,29,25,21,26,29,20,21,20 +1820 DATA 18,26,25,33,31,22 +1830 END diff --git a/80 Slots/README.md b/80 Slots/README.md new file mode 100644 index 00000000..1b4a1987 --- /dev/null +++ b/80 Slots/README.md @@ -0,0 +1,7 @@ +### Slots + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=149 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/80 Slots/slots.bas b/80 Slots/slots.bas new file mode 100644 index 00000000..2d1b84d4 --- /dev/null +++ b/80 Slots/slots.bas @@ -0,0 +1,134 @@ +10 PRINT TAB(30);"SLOTS" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT: PRINT: PRINT +100 REM PRODUCED BY FRED MIRABELLE AND BOB HARPER ON JAN 29, 1973 +110 REM IT SIMULATES THE SLOT MACHINE. +120 PRINT "YOU ARE IN THE H&M CASINO,IN FRONT OF ONE OF OUR" +130 PRINT "ONE-ARM BANDITS. BET FROM $1 TO $100." +140 PRINT "TO PULL THE ARM, PUNCH THE RETURN KEY AFTER MAKING YOUR BET." +150 LET P=0 +160 PRINT: PRINT"YOUR BET"; +170 INPUT M +180 IF M>100 THEN 860 +190 IF M<1 THEN 880 +200 M=INT(M) +210 GOSUB 1270 +220 PRINT +230 LET X=INT(6*RND(1)+1) +240 LET Y=INT(6*RND(1)+1) +250 LET Z=INT(6*RND(1)+1) +260 PRINT +270 IF X=1 THEN 910 +280 IF X=2 THEN 930 +290 IF X=3 THEN 950 +300 IF X=4 THEN 970 +310 IF X=5 THEN 990 +320 IF X=6 THEN 1010 +330 IF Y=1 THEN 1030 +340 IF Y=2 THEN 1050 +350 IF Y=3 THEN 1070 +360 IF Y=4 THEN 1090 +370 IF Y=5 THEN 1110 +380 IF Y=6 THEN 1130 +390 IF Z=1 THEN 1150 +400 IF Z=2 THEN 1170 +410 IF Z=3 THEN 1190 +420 IF Z=4 THEN 1210 +430 IF Z=5 THEN 1230 +440 IF Z=6 THEN 1250 +450 IF X=Y THEN 600 +460 IF X=Z THEN 630 +470 IF Y=Z THEN 650 +480 PRINT +490 PRINT "YOU LOST." +500 LET P=P-M +510 PRINT "YOUR STANDINGS ARE $"P +520 PRINT "AGAIN"; +530 INPUT A$ +540 IF A$="Y" THEN 160 +550 PRINT +560 IF P<0 THEN 670 +570 IF P=0 THEN 690 +580 IF P>0 THEN 710 +590 GOTO 1350 +600 IF Y=Z THEN 730 +610 IF Y=1 THEN 820 +620 GOTO 1341 +630 IF Z=1 THEN 820 +640 GOTO 470 +650 IF Z=1 THEN 820 +660 GOTO 1341 +670 PRINT "PAY UP! PLEASE LEAVE YOUR MONEY ON THE TERMINAL." +680 GOTO 1350 +690 PRINT"HEY, YOU BROKE EVEN." +700 GOTO 1350 +710 PRINT "COLLECT YOUR WINNINGS FROM THE H&M CASHIER." +720 GOTO 1350 +730 IF Z=1 THEN 780 +740 PRINT: PRINT"**TOP DOLLAR**" +750 PRINT "YOU WON!" +760 P=(((10*M)+M)+P) +770 GOTO 510 +780 PRINT:PRINT"***JACKPOT***" +790 PRINT "YOU WON!" +800 P=(((100*M)+M)+P) +810 GOTO 510 +820 PRINT:PRINT"*DOUBLE BAR*" +830 PRINT"YOU WON!" +840 P=(((5*M)+M)+P) +850 GOTO 510 +860 PRINT"HOUSE LIMITS ARE $100" +870 GOTO 160 +880 PRINT"MINIMUM BET IS $1" +890 GOTO 160 +900 GOTO 220 +910 PRINT"BAR";:GOSUB 1310 +920 GOTO 330 +930 PRINT"BELL";:GOSUB 1310 +940 GOTO 330 +950 PRINT"ORANGE";:GOSUB 1310 +960 GOTO 330 +970 PRINT"LEMON";:GOSUB 1310 +980 GOTO 330 +990 PRINT"PLUM";:GOSUB 1310 +1000 GOTO 330 +1010 PRINT"CHERRY";:GOSUB 1310 +1020 GOTO 330 +1030 PRINT" BAR";:GOSUB 1310 +1040 GOTO 390 +1050 PRINT" BELL";:GOSUB 1310 +1060 GOTO 390 +1070 PRINT" ORANGE";:GOSUB 1310 +1080 GOTO 390 +1090 PRINT" LEMON";:GOSUB 1310 +1100 GOTO 390 +1110 PRINT" PLUM";:GOSUB 1310 +1120 GOTO 390 +1130 PRINT" CHERRY";:GOSUB 1310 +1140 GOTO 390 +1150 PRINT" BAR" +1160 GOTO 450 +1170 PRINT" BELL" +1180 GOTO 450 +1190 PRINT" ORANGE" +1200 GOTO 450 +1210 PRINT" LEMON" +1220 GOTO 450 +1230 PRINT" PLUM" +1240 GOTO 450 +1250 PRINT" CHERRY" +1260 GOTO 450 +1270 FOR Q4=1 TO 10 +1280 PRINT CHR$(7); +1290 NEXT Q4 +1300 RETURN +1310 FOR T8=1 TO 5 +1320 PRINT CHR$(7); +1330 NEXT T8 +1340 RETURN +1341 PRINT: PRINT "DOUBLE!!" +1342 PRINT"YOU WON!" +1343 P=(((2*M)+M)+P) +1344 GOTO 510 +1350 STOP +9999 END diff --git a/81 Splat/README.md b/81 Splat/README.md new file mode 100644 index 00000000..4b4161ef --- /dev/null +++ b/81 Splat/README.md @@ -0,0 +1,7 @@ +### Splat + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=151 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/81 Splat/splat.bas b/81 Splat/splat.bas new file mode 100644 index 00000000..a3aba036 --- /dev/null +++ b/81 Splat/splat.bas @@ -0,0 +1,128 @@ +10 PRINT TAB(33);"SPLAT" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +40 PRINT:PRINT:PRINT +50 DIM A(42) +95 PRINT "WELCOME TO 'SPLAT' -- THE GAME THAT SIMULATES A PARACHUTE" +96 PRINT "JUMP. TRY TO OPEN YOUR CHUTE AT THE LAST POSSIBLE" +97 PRINT "MOMENT WITHOUT GOING SPLAT." +118 PRINT:PRINT:D1=0:V=0:A=0:N=0:M=0:D1=INT(9001*RND(1)+1000) +119 PRINT "SELECT YOUR OWN TERMINAL VELOCITY (YES OR NO)";:INPUT A1$ +120 IF A1$="NO" THEN 128 +121 IF A1$<>"YES" THEN PRINT "YES OR NO";:INPUT A1$:GOTO 120 +123 PRINT "WHAT TERMINAL VELOCITY (MI/HR)";:INPUT V1 +125 V1=V1*(5280/3600):V=V1+((V1*RND(1))/20)-((V1*RND(1))/20):GOTO 135 +128 V1=INT(1000*RND(1)) +130 PRINT "OK. TERMINAL VELOCITY ="V1"MI/HR" +131 V1=V1*(5280/3600):V=V1+((V1*RND(1))/20)-((V1*RND(1))/20) +135 PRINT "WANT TO SELECT ACCELERATION DUE TO GRAVITY (YES OR NO)"; +136 INPUT B1$ +140 IF B1$="NO" THEN 150 +141 IF B1$<>"YES" THEN PRINT "YES OR NO";:INPUT B1$:GOTO 140 +143 PRINT "WHAT ACCELERATION (FT/SEC/SEC)";:INPUT A2 +145 A=A2+((A2*RND(1))/20)-((A2*RND(1))/20):GOTO 205 +150 ON INT(1+(10*RND(1)))GOTO 151,152,153,154,155,156,157,158,159,160 +151 PRINT"FINE. YOU'RE ON MERCURY. ACCELERATION=12.2 FT/SEC/SEC.":GOTO 161 +152 PRINT"ALL RIGHT. YOU'RE ON VENUS. ACCELERATION=28.3 FT/SEC/SEC.":GOTO 162 +153 PRINT "THEN YOU'RE ON EARTH. ACCELERATION=32.16 FT/SEC/SEC.":GOTO 163 +154 PRINT"FINE. YOU'RE ON THE MOON. ACCELERATION=5.15 FT/SEC/SEC.":GOTO 164 +155 PRINT"ALL RIGHT. YOU'RE ON MARS. ACCELERATION=12.5 FT/SEC/SEC.":GOTO 165 +156 PRINT"THEN YOU'RE ON JUPITER. ACCELERATION=85.2 FT/SEC/SEC.":GOTO 166 +157 PRINT"FINE. YOU'RE ON SATURN. ACCELERATION=37.6 FT/SEC/SEC.":GOTO 167 +158 PRINT"ALL RIGHT. YOU'RE ON URANUS. ACCELERATION=33.8 FT/SEC/SEC.":GOTO 168 +159 PRINT"THEN YOU'RE ON NEPTUNE. ACCELERATION=39.6 FT/SEC/SEC.":GOTO 169 +160 PRINT"FINE. YOU'RE ON THE SUN. ACCELERATION=896 FT/SEC/SEC.":GOTO 170 +161 A2=12.2:GOTO 145 +162 A2=28.3:GOTO 145 +163 A2=32.16:GOTO 145 +164 A2=5.15:GOTO 145 +165 A2=12.5:GOTO 145 +166 A2=85.2:GOTO 145 +167 A2=37.6:GOTO 145 +168 A2=33.8 :GOTO 145 +169 A2=39.6:GOTO 145 +170 A2=896:GOTO 145 +205 PRINT +206 PRINT " ALTITUDE ="D1"FT" +207 PRINT " TERM. VELOCITY ="V1"FT/SEC +/-5%" +208 PRINT " ACCELERATION ="A2"FT/SEC/SEC +/-5%" +210 PRINT "SET THE TIMER FOR YOUR FREEFALL." +211 PRINT "HOW MANY SECONDS";:INPUT T +215 PRINT "HERE WE GO." +217 PRINT +218 PRINT "TIME (SEC)","DIST TO FALL (FT)" +219 PRINT "==========","=================" +300 FOR I=0 TO T STEP (T/8) +310 IF I>V/A THEN 400 +320 D=D1-((A/2)*I^2) +330 IF D<=0 THEN 1000 +340 PRINT I,D +350 NEXT I +360 GOTO 500 +400 PRINT "TERMINAL VELOCITY REACHED AT T PLUS"V/A"SECONDS." +405 FOR I=I TO T STEP (T/8) +410 D=D1-((V^2/(2*A))+(V*(I-(V/A)))) +420 IF D<=0 THEN 1010 +430 PRINT I,D +440 NEXT I +500 PRINT "CHUTE OPEN" +510 K=0:K1=0 +550 FOR J=0 TO 42 +555 IF A(J)=0 THEN 620 +560 K=K+1 +570 IF D>=A(J) THEN 600 +580 K1=K1+1 +600 NEXT J +610 GOTO 540 +620 A(J)=D +630 IF J>2 THEN 650 +635 PRINT "AMAZING!!! NOT BAD FOR YOUR "; +636 IF J=0 THEN PRINT "1ST "; +637 IF J=1 THEN PRINT "2ND "; +638 IF J=2 THEN PRINT "3RD "; +639 PRINT "SUCCESSFUL JUMP!!!":GOTO 2000 +650 IF K-K1<=.1*K THEN 700 +660 IF K-K1<=.25*K THEN 710 +670 IF K-K1<=.5*K THEN 720 +680 IF K-K1<=.75*K THEN 730 +690 IF K-K1<=.9*K THEN 740 +695 GOTO 750 +700 PRINT "WOW! THAT'S SOME JUMPING. OF THE"K"SUCCESSFUL JUMPS" +701 PRINT "BEFORE YOURS, ONLY"K-K1"OPENED THEIR CHUTES LOWER THAN" +702 PRINT "YOU DID." +703 GOTO 2000 +710 PRINT "PRETTY GOOD! " K"SUCCESSFUL JUMPS PRECEDED YOURS AND ONLY" +711 PRINT K-K1" OF THEM GOT LOWER THAN YOU DID BEFORE THEIR CHUTES" +712 PRINT "OPENED." :GOTO 2000 +720 PRINT "NOT BAD. THERE HAVE BEEN"K"SUCCESSFUL JUMPS BEFORE YOURS." +721 PRINT"YOU WERE BEATEN OUT BY"K-K1"OF THEM.":GOTO 2000 +730 PRINT "CONSERVATIVE, AREN'T YOU? YOU RANKED ONLY"K-K1"IN THE" +731 PRINT K"SUCCESSFUL JUMPS BEFORE YOURS.":GOTO 2000 +740 PRINT "HUMPH! DON'T YOU HAVE ANY SPORTING BLOOD? THERE WERE" +741 PRINT K"SUCCESSFUL JUMPS BEFORE YOURS AND YOU CAME IN"K1"JUMPS" +742 PRINT "BETTER THAN THE WORST. SHAPE UP!!!":GOTO 2000 +750 PRINT "HEY! YOU PULLED THE RIP CORD MUCH TOO SOON. "K"SUCCESSFUL" +751 PRINT "JUMPS BEFORE YOURS AND YOU CAME IN NUMBER"K-K1"! GET WITH IT!" +752 GOTO 2000 +800 PRINT "REQUIESCAT IN PACE.":GOTO 1950 +801 PRINT "MAY THE ANGEL OF HEAVEN LEAD YOU INTO PARADISE.":GOTO 1950 +802 PRINT "REST IN PEACE.":GOTO 1950 +803 PRINT "SON-OF-A-GUN.":GOTO 1950 +804 PRINT "#$%&&%!$":GOTO 1950 +805 PRINT "A KICK IN THE PANTS IS A BOOST IF YOU'RE HEADED RIGHT.":GOTO 1950 +806 PRINT "HMMM. SHOULD HAVE PICKED A SHORTER TIME.":GOTO 1950 +807 PRINT "MUTTER. MUTTER. MUTTER.":GOTO 1950 +808 PRINT "PUSHING UP DAISIES.":GOTO 1950 +809 PRINT "EASY COME, EASY GO.":GOTO 1950 +1000 PRINT SQR(2*D1/A),"SPLAT" +1005 ON INT(1+(10*RND(1)))GOTO 800,801,802,803,804,805,806,807,808,809 +1010 PRINT (V/A)+((D1-(V^2/(2*A)))/V),"SPLAT" +1020 GOTO 1005 +1950 PRINT "I'LL GIVE YOU ANOTHER CHANCE.":GOTO 2000 +2000 PRINT "DO YOU WANT TO PLAY AGAIN";:INPUT Z$ +2001 IF Z$="YES" THEN 118 +2002 IF Z$="NO" THEN 2005 +2003 PRINT "YES OR NO":GOTO 2000 +2005 PRINT "PLEASE";:INPUT Z$:IF Z$="YES" THEN 118 +2006 IF Z$<>"NO" THEN PRINT "YES OR NO ";:GOTO 2005 +2007 PRINT "SSSSSSSSSS.":PRINT:GOTO 2046 +2046 END diff --git a/82 Stars/README.md b/82 Stars/README.md new file mode 100644 index 00000000..cc6c3171 --- /dev/null +++ b/82 Stars/README.md @@ -0,0 +1,7 @@ +### Stars + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=153 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/82 Stars/stars.bas b/82 Stars/stars.bas new file mode 100644 index 00000000..3290cbbd --- /dev/null +++ b/82 Stars/stars.bas @@ -0,0 +1,54 @@ +10 PRINT TAB(34);"STARS" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +100 REM *** STARS - PEOPLE'S COMPUTER CENTER, MENLO PARK, CA +140 REM *** A IS LIMIT ON NUMBER, M IS NUMBER OF GUESSES +150 A=100:M=7 +170 INPUT "DO YOU WANT INSTRUCTIONS";A$ +190 IF LEFT$(A$,1)="N" THEN 280 +200 REM *** INSTRUCTIONS ON HOW TO PLAY +210 PRINT "I AM THINKING OF A WHOLE NUMBER FROM 1 TO";A +220 PRINT "TRY TO GUESS MY NUMBER. AFTER YOU GUESS, I" +230 PRINT "WILL TYPE ONE OR MORE STARS (*). THE MORE" +240 PRINT "STARS I TYPE, THE CLOSER YOU ARE TO MY NUMBER." +250 PRINT "ONE STAR (*) MEANS FAR AWAY, SEVEN STARS (*******)" +260 PRINT "MEANS REALLY CLOSE! YOU GET";M;"GUESSES." +270 REM *** COMPUTER THINKS OF A NUMBER +280 PRINT +290 PRINT +300 X=INT(A*RND(1)+1) +310 PRINT "OK, I AM THINKING OF A NUMBER, START GUESSING." +320 REM *** GUESSING BEGINS, HUMAN GETS M GUESSES +330 FOR K=1 TO M +340 PRINT +350 PRINT "YOUR GUESS"; +360 INPUT G +370 IF G=X THEN 600 +380 D=ABS(G-X) +390 IF D>=64 THEN 510 +400 IF D>=32 THEN 500 +410 IF D>=16 THEN 490 +420 IF D>=8 THEN 480 +430 IF D>=4 THEN 470 +440 IF D>=2 THEN 460 +450 PRINT "*"; +460 PRINT "*"; +470 PRINT "*"; +480 PRINT "*"; +490 PRINT "*"; +500 PRINT "*"; +510 PRINT "*"; +520 PRINT +530 NEXT K +540 REM *** DID NOT GUESS IN M GUESSES +550 PRINT +560 PRINT "SORRY, THAT'S";M;"GUESSES. THE NUMBER WAS";X +580 GOTO 650 +590 REM *** WE HAVE A WINNER +600 PRINT:FOR N=1 TO 79 +610 PRINT "*"; +620 NEXT N +630 PRINT:PRINT +640 PRINT "YOU GOT IT IN";K;"GUESSES!!! LET'S PLAY AGAIN..." +650 GOTO 280 +660 END diff --git a/83 Stock Market/README.md b/83 Stock Market/README.md new file mode 100644 index 00000000..6b963c2f --- /dev/null +++ b/83 Stock Market/README.md @@ -0,0 +1,7 @@ +### Stock Market + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=154 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/83 Stock Market/stockmarket.bas b/83 Stock Market/stockmarket.bas new file mode 100644 index 00000000..5d81e62f --- /dev/null +++ b/83 Stock Market/stockmarket.bas @@ -0,0 +1,232 @@ +10 PRINT TAB(30);"STOCK MARKET" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT: PRINT: PRINT +100 REM STOCK MARKET SIMULATION -STOCK- +101 REM REVISED 8/18/70 (D. PESSEL, L. BRAUN, C. LOSIK) +102 REM IMP VRBLS: A-MRKT TRND SLP; B5-BRKRGE FEE; C-TTL CSH ASSTS; +103 REM C5-TTL CSH ASSTS (TEMP); C(I)-CHNG IN STK VAL; D-TTL ASSTS; +104 REM E1,E2-LRG CHNG MISC; I-STCK #; I1,I2-STCKS W LRG CHNG; +105 REM N1,N2-LRG CHNG DAY CNTS; P5-TTL DAYS PRCHSS; P(I)-PRTFL CNTNTS; +106 REM Q9-NEW CYCL?; S4-SGN OF A; S5-TTL DYS SLS; S(I)-VALUE/SHR; +107 REM T-TTL STCK ASSTS; T5-TTL VAL OF TRNSCTNS; +108 REM W3-LRG CHNG; X1-SMLL CHNG(<$1); Z4,Z5,Z6-NYSE AVE.; Z(I)-TRNSCT +110 DIM S(5),P(5),Z(5),C(5) +112 REM SLOPE OF MARKET TREND:A (SAME FOR ALL STOCKS) +113 LET X=1 +114 LET A=INT((RND(X)/10)*100+.5)/100 +115 LET T5=0 +116 LET X9=0 +117 LET N1=0 +118 LET N2=0 +119 LET E1=0 +120 LET E2=0 +121 REM INTRODUCTION +122 PRINT "DO YOU WANT THE INSTRUCTIONS (YES-TYPE 1, NO-TYPE 0)"; +123 INPUT Z9 +124 PRINT +125 PRINT +126 IF Z9<1 THEN 200 +130 PRINT "THIS PROGRAM PLAYS THE STOCK MARKET. YOU WILL BE GIVEN" +132 PRINT "$10,000 AND MAY BUY OR SELL STOCKS. THE STOCK PRICES WILL" +134 PRINT "BE GENERATED RANDOMLY AND THEREFORE THIS MODEL DOES NOT" +135 PRINT "REPRESENT EXACTLY WHAT HAPPENS ON THE EXCHANGE. A TABLE" +136 PRINT "OF AVAILABLE STOCKS, THEIR PRICES, AND THE NUMBER OF SHARES" +137 PRINT "IN YOUR PORTFOLIO WILL BE PRINTED. FOLLOWING THIS, THE" +138 PRINT "INITIALS OF EACH STOCK WILL BE PRINTED WITH A QUESTION" +139 PRINT "MARK. HERE YOU INDICATE A TRANSACTION. TO BUY A STOCK" +140 PRINT "TYPE +NNN, TO SELL A STOCK TYPE -NNN, WHERE NNN IS THE" +141 PRINT "NUMBER OF SHARES. A BROKERAGE FEE OF 1% WILL BE CHARGED" +142 PRINT "ON ALL TRANSACTIONS. NOTE THAT IF A STOCK'S VALUE DROPS" +143 PRINT "TO ZERO IT MAY REBOUND TO A POSITIVE VALUE AGAIN. YOU" +144 PRINT "HAVE $10,000 TO INVEST. USE INTEGERS FOR ALL YOUR INPUTS." +145 PRINT "(NOTE: TO GET A 'FEEL' FOR THE MARKET RUN FOR AT LEAST" +146 PRINT "10 DAYS)" +147 PRINT "-----GOOD LUCK!-----" +200 REM GENERATION OF STOCK TABLE; INPUT REQUESTS +210 REM INITIAL STOCK VALUES +220 LET S(1)=100 +230 LET S(2)=85 +240 LET S(3)=150 +250 LET S(4)=140 +260 LET S(5)=110 +265 REM INITIAL T8 - # DAYS FOR FIRST TREND SLOPE (A) +266 LET T8=INT(4.99*RND(X)+1) +267 REM RANDOMIZE SIGN OF FIRST TREND SLOPE (A) +268 IF RND(X)>.5 THEN 270 +269 LET A=-A +270 REM RANDOMIZE INITIAL VALUES +280 GOSUB 830 +285 REM INITIAL PORTFOLIO CONTENTS +290 FOR I=1 TO 5 +300 LET P(I)=0 +305 LET Z(I)=0 +310 NEXT I +320 PRINT +330 PRINT +333 REM INITIALIZE CASH ASSETS:C +335 LET C=10000 +338 REM PRINT INITIAL PORTFOLIO +340 PRINT "STOCK"," ","INITIALS","PRICE/SHARE" +350 PRINT "INT. BALLISTIC MISSILES"," IBM",S(1) +352 PRINT "RED CROSS OF AMERICA"," RCA",S(2) +354 PRINT "LICHTENSTEIN, BUMRAP & JOKE"," LBJ",S(3) +356 PRINT "AMERICAN BANKRUPT CO."," ABC",S(4) +358 PRINT "CENSURED BOOKS STORE"," CBS",S(5) +360 PRINT +361 REM NYSE AVERAGE:Z5; TEMP. VALUE:Z4; NET CHANGE:Z6 +363 LET Z4=Z5 +364 LET Z5=0 +365 LET T=0 +370 FOR I=1 TO 5 +375 LET Z5=Z5+S(I) +380 LET T=T+S(I)*P(I) +390 NEXT I +391 LET Z5=INT(100*(Z5/5)+.5)/100 +392 LET Z6=INT((Z5-Z4)*100+.5)/100 +393 REM TOTAL ASSETS:D +394 LET D=T+C +395 IF X9>0 THEN 398 +396 PRINT "NEW YORK STOCK EXCHANGE AVERAGE: "Z5 +397 GOTO 399 +398 PRINT "NEW YORK STOCK EXCHANGE AVERAGE: "Z5"NET CHANGE"Z6 +399 PRINT +400 LET T=INT(100*T+.5)/100 +401 PRINT "TOTAL STOCK ASSETS ARE $";T +403 LET C=INT(100*C+.5)/100 +405 PRINT "TOTAL CASH ASSETS ARE $";C +407 LET D=INT(100*D+.5)/100 +408 PRINT "TOTAL ASSETS ARE $";D +410 PRINT +411 IF X9=0 THEN 416 +412 PRINT "DO YOU WISH TO CONTINUE (YES-TYPE 1, NO-TYPE 0)"; +413 INPUT Q9 +414 IF Q9<1 THEN 998 +416 REM INPUT TRANSACTIONS +420 PRINT "WHAT IS YOUR TRANSACTION IN" +430 PRINT "IBM"; +440 INPUT Z(1) +450 PRINT "RCA"; +460 INPUT Z(2) +470 PRINT "LBJ"; +480 INPUT Z(3) +490 PRINT "ABC"; +500 INPUT Z(4) +510 PRINT "CBS"; +520 INPUT Z(5) +525 PRINT +530 REM TOTAL DAY'S PURCHASES IN $:P5 +540 LET P5=0 +550 REM TOTAL DAY'S SALES IN $:S5 +560 LET S5=0 +570 FOR I=1 TO 5 +575 LET Z(I)=INT(Z(I)+.5) +580 IF Z(I)<=0 THEN 610 +590 LET P5=P5+Z(I)*S(I) +600 GOTO 620 +610 LET S5=S5-Z(I)*S(I) +612 IF -Z(I)<=P(I) THEN 620 +614 PRINT "YOU HAVE OVERSOLD A STOCK; TRY AGAIN." +616 GOTO 420 +620 NEXT I +622 REM TOTAL VALUE OF TRANSACTIONS:T5 +625 LET T5=P5+S5 +630 REM BROKERAGE FEE:B5 +640 LET B5=INT(.01*T5*100+.5)/100 +650 REM CASH ASSETS=OLD CASH ASSETS-TOTAL PURCHASES +652 REM -BROKERAGE FEES+TOTAL SALES:C5 +654 LET C5=C-P5-B5+S5 +656 IF C5>=0 THEN 674 +658 PRINT "YOU HAVE USED $"-C5" MORE THAN YOU HAVE." +660 GOTO 420 +674 LET C=C5 +675 REM CALCULATE NEW PORTFOLIO +680 FOR I=1 TO 5 +690 LET P(I)=P(I)+Z(I) +700 NEXT I +710 REM CALCULATE NEW STOCK VALUES +720 GOSUB 830 +750 REM PRINT PORTFOLIO +751 REM BELL RINGING-DIFFERENT ON MANY COMPUTERS +755 PRINT +756 PRINT "********** END OF DAY'S TRADING **********" +757 PRINT +758 PRINT +759 IF X9<1 THEN 769 +769 PRINT "STOCK","PRICE/SHARE","HOLDINGS", "VALUE", "NET PRICE CHANGE" +770 PRINT "IBM", S(1), P(1), S(1)*P(1), C(1) +771 PRINT "RCA", S(2), P(2), S(2)*P(2), C(2) +772 PRINT "LBJ", S(3), P(3), S(3)*P(3), C(3) +773 PRINT "ABC", S(4), P(4), S(4)*P(4), C(4) +774 PRINT "CBS", S(5), P(5), S(5)*P(5), C(5) +775 LET X9=1 +780 PRINT +790 PRINT +810 GOTO 360 +829 REM NEW STOCK VALUES - SUBROUTINE +830 REM RANDOMLY PRODUCE NEW STOCK VALUES BASED ON PREVIOUS +831 REM DAY'S VALUES +832 REM N1,N2 ARE RANDOM NUMBERS OF DAYS WHICH RESPECTIVELY +833 REM DETERMINE WHEN STOCK I1 WILL INCREASE 10 PTS. AND STOCK +834 REM I2 WILL DECREASE 10 PTS. +840 REM IF N1 DAYS HAVE PASSED, PICK AN I1, SET E1, DETERMINE NEW N1 +841 IF N1>0 THEN 850 +845 LET I1=INT(4.99*RND(X)+1) +846 LET N1=INT(4.99*RND(X)+1) +847 LET E1=1 +850 REM IF N2 DAYS HAVE PASSED, PICK AN I2, SET E2, DETERMINE NEW N2 +851 IF N2>0 THEN 860 +855 LET I2=INT(4.99*RND(X)+1) +856 LET N2=INT(4.99*RND(X)+1) +857 LET E2=1 +860 REM DEDUCT ONE DAY FROM N1 AND N2 +861 LET N1=N1-1 +862 LET N2=N2-1 +890 REM LOOP THROUGH ALL STOCKS +900 FOR I=1 TO 5 +910 LET X1=RND(X) +915 IF X1>.25 THEN 920 +916 LET X1=.25 +917 GOTO 935 +920 IF X1>.5 THEN 925 +921 LET X1=.5 +922 GOTO 935 +925 IF X1>.75 THEN 930 +926 LET X1=.75 +927 GOTO 935 +930 LET X1=0.0 +931 REM BIG CHANGE CONSTANT:W3 (SET TO ZERO INITIALLY) +935 LET W3=0 +936 IF E1<1 THEN 945 +937 IF INT(I1+.5)<>INT(I+.5) THEN 945 +938 REM ADD 10 PTS. TO THIS STOCK; RESET E1 +939 LET W3=10 +943 LET E1=0 +945 IF E2<1 THEN 955 +947 IF INT(I2+.5)<>INT(I+.5) THEN 955 +948 REM SUBTRACT 10 PTS. FROM THIS STOCK; RESET E2 +949 LET W3=W3-10 +953 LET E2=0 +954 REM C(I) IS CHANGE IN STOCK VALUE +955 LET C(I)=INT(A*S(I))+X1+INT(3-6*RND(X)+.5)+W3 +956 LET C(I)=INT(100*C(I)+.5)/100 +957 LET S(I)=S(I)+C(I) +960 IF S(I)>0 THEN 967 +964 LET C(I)=0 +965 LET S(I)=0 +966 GOTO 970 +967 LET S(I)=INT(100*S(I)+.5)/100 +970 NEXT I +972 REM AFTER T8 DAYS RANDOMLY CHANGE TREND SIGN AND SLOPE +973 LET T8=T8-1 +974 IF T8<1 THEN 985 +980 RETURN +985 REM RANDOMLY CHANGE TREND SIGN AND SLOPE (A), AND DURATION +986 REM OF TREND (T8) +990 LET T8=INT(4.99*RND(X)+1) +992 LET A=INT((RND(X)/10)*100+.5)/100 +993 LET S4=RND(X) +994 IF S4<=.5 THEN 997 +995 LET A=-A +997 RETURN +998 PRINT "HOPE YOU HAD FUN!!" +999 END diff --git a/84 Super Star Trek/README.md b/84 Super Star Trek/README.md new file mode 100644 index 00000000..c101bf65 --- /dev/null +++ b/84 Super Star Trek/README.md @@ -0,0 +1,7 @@ +### Super Star Trek + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=157 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/84 Super Star Trek/superstartrek.bas b/84 Super Star Trek/superstartrek.bas new file mode 100644 index 00000000..74300763 --- /dev/null +++ b/84 Super Star Trek/superstartrek.bas @@ -0,0 +1,425 @@ +10 REM SUPER STARTREK - MAY 16,1978 - REQUIRES 24K MEMORY +30 REM +40 REM **** **** STAR TREK **** **** +50 REM **** SIMULATION OF A MISSION OF THE STARSHIP ENTERPRISE, +60 REM **** AS SEEN ON THE STAR TREK TV SHOW. +70 REM **** ORIGIONAL PROGRAM BY MIKE MAYFIELD, MODIFIED VERSION +80 REM **** PUBLISHED IN DEC'S "101 BASIC GAMES", BY DAVE AHL. +90 REM **** MODIFICATIONS TO THE LATTER (PLUS DEBUGGING) BY BOB +100 REM *** LEEDOM - APRIL & DECEMBER 1974, +110 REM *** WITH A LITTLE HELP FROM HIS FRIENDS . . . +120 REM *** COMMENTS, EPITHETS, AND SUGGESTIONS SOLICITED -- +130 REM *** SEND TO: R. C. LEEDOM +140 REM *** WESTINGHOUSE DEFENSE & ELECTRONICS SYSTEMS CNTR. +150 REM *** BOX 746, M.S. 338 +160 REM *** BALTIMORE, MD 21203 +170 REM *** +180 REM *** CONVERTED TO MICROSOFT 8 K BASIC 3/16/78 BY JOHN GORDERS +190 REM *** LINE NUMBERS FROM VERSION STREK7 OF 1/12/75 PRESERVED AS +200 REM *** MUCH AS POSSIBLE WHILE USING MULTIPLE STATEMENTS PER LINE +205 REM *** SOME LINES ARE LONGER THAN 72 CHARACTERS; THIS WAS DONE +210 REM *** BY USING "?" INSTEAD OF "PRINT" WHEN ENTERING LINES +215 REM *** +220 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT +221 PRINT" ,------*------," +222 PRINT" ,------------- '--- ------'" +223 PRINT" '-------- --' / /" +224 PRINT" ,---' '-------/ /--," +225 PRINT" '----------------'":PRINT +226 PRINT" THE USS ENTERPRISE --- NCC-1701" +227 PRINT:PRINT:PRINT:PRINT:PRINT +260 REM CLEAR 600 +270 Z$=" " +330 DIM G(8,8),C(9,2),K(3,3),N(3),Z(8,8),D(8) +370 T=INT(RND(1)*20+20)*100:T0=T:T9=25+INT(RND(1)*10):D0=0:E=3000:E0=E +440 P=10:P0=P:S9=200:S=0:B9=2:K9=0:X$="":X0$=" IS " +470 DEF FND(D)=SQR((K(I,1)-S1)^2+(K(I,2)-S2)^2) +475 DEF FNR(R)=INT(RND(R)*7.98+1.01) +480 REM INITIALIZE ENTERPRIZE'S POSITION +490 Q1=FNR(1):Q2=FNR(1):S1=FNR(1):S2=FNR(1) +530 FORI=1TO9:C(I,1)=0:C(I,2)=0:NEXTI +540 C(3,1)=-1:C(2,1)=-1:C(4,1)=-1:C(4,2)=-1:C(5,2)=-1:C(6,2)=-1 +600 C(1,2)=1:C(2,2)=1:C(6,1)=1:C(7,1)=1:C(8,1)=1:C(8,2)=1:C(9,2)=1 +670 FORI=1TO8:D(I)=0:NEXTI +710 A1$="NAVSRSLRSPHATORSHEDAMCOMXXX" +810 REM SETUP WHAT EXHISTS IN GALAXY . . . +815 REM K3= # KLINGONS B3= # STARBASES S3 = # STARS +820 FORI=1TO8:FORJ=1TO8:K3=0:Z(I,J)=0:R1=RND(1) +850 IFR1>.98THENK3=3:K9=K9+3:GOTO980 +860 IFR1>.95THENK3=2:K9=K9+2:GOTO980 +870 IFR1>.80THENK3=1:K9=K9+1 +980 B3=0:IFRND(1)>.96THENB3=1:B9=B9+1 +1040 G(I,J)=K3*100+B3*10+FNR(1):NEXTJ:NEXTI:IFK9>T9THENT9=K9+1 +1100 IFB9<>0THEN1200 +1150 IFG(Q1,Q2)<200THENG(Q1,Q2)=G(Q1,Q2)+120:K9=K9+1 +1160 B9=1:G(Q1,Q2)=G(Q1,Q2)+10:Q1=FNR(1):Q2=FNR(1) +1200 K7=K9:IFB9<>1THENX$="S":X0$=" ARE " +1230 PRINT"YOUR ORDERS ARE AS FOLLOWS:" +1240 PRINT" DESTROY THE";K9;"KLINGON WARSHIPS WHICH HAVE INVADED" +1252 PRINT" THE GALAXY BEFORE THEY CAN ATTACK FEDERATION HEADQUARTERS" +1260 PRINT" ON STARDATE";T0+T9;" THIS GIVES YOU";T9;"DAYS. THERE";X0$ +1272 PRINT" ";B9;"STARBASE";X$;" IN THE GALAXY FOR RESUPPLYING YOUR SHIP" +1280 PRINT:REM PRINT"HIT ANY KEY EXCEPT RETURN WHEN READY TO ACCEPT COMMAND" +1300 I=RND(1):REM IF INP(1)=13 THEN 1300 +1310 REM HERE ANY TIME NEW QUADRANT ENTERED +1320 Z4=Q1:Z5=Q2:K3=0:B3=0:S3=0:G5=0:D4=.5*RND(1):Z(Q1,Q2)=G(Q1,Q2) +1390 IFQ1<1ORQ1>8ORQ2<1ORQ2>8THEN1600 +1430 GOSUB 9030:PRINT:IF T0<>T THEN 1490 +1460 PRINT"YOUR MISSION BEGINS WITH YOUR STARSHIP LOCATED" +1470 PRINT"IN THE GALACTIC QUADRANT, '";G2$;"'.":GOTO 1500 +1490 PRINT"NOW ENTERING ";G2$;" QUADRANT . . ." +1500 PRINT:K3=INT(G(Q1,Q2)*.01):B3=INT(G(Q1,Q2)*.1)-10*K3 +1540 S3=G(Q1,Q2)-100*K3-10*B3:IFK3=0THEN1590 +1560 PRINT"COMBAT AREA CONDITION RED":IFS>200THEN1590 +1580 PRINT" SHIELDS DANGEROUSLY LOW" +1590 FORI=1TO3:K(I,1)=0:K(I,2)=0:NEXTI +1600 FORI=1TO3:K(I,3)=0:NEXTI:Q$=Z$+Z$+Z$+Z$+Z$+Z$+Z$+LEFT$(Z$,17) +1660 REM POSITION ENTERPRISE IN QUADRANT, THEN PLACE "K3" KLINGONS, & +1670 REM "B3" STARBASES, & "S3" STARS ELSEWHERE. +1680 A$="<*>":Z1=S1:Z2=S2:GOSUB8670:IFK3<1THEN1820 +1720 FORI=1TOK3:GOSUB8590:A$="+K+":Z1=R1:Z2=R2 +1780 GOSUB8670:K(I,1)=R1:K(I,2)=R2:K(I,3)=S9*(0.5+RND(1)):NEXTI +1820 IFB3<1THEN1910 +1880 GOSUB8590:A$=">!<":Z1=R1:B4=R1:Z2=R2:B5=R2:GOSUB8670 +1910 FORI=1TOS3:GOSUB8590:A$=" * ":Z1=R1:Z2=R2:GOSUB8670:NEXTI +1980 GOSUB6430 +1990 IFS+E>10THENIFE>10ORD(7)=0THEN2060 +2020 PRINT:PRINT"** FATAL ERROR ** YOU'VE JUST STRANDED YOUR SHIP IN " +2030 PRINT"SPACE":PRINT"YOU HAVE INSUFFICIENT MANEUVERING ENERGY,"; +2040 PRINT" AND SHIELD CONTROL":PRINT"IS PRESENTLY INCAPABLE OF CROSS"; +2050 PRINT"-CIRCUITING TO ENGINE ROOM!!":GOTO6220 +2060 INPUT"COMMAND";A$ +2080 FORI=1TO9:IFLEFT$(A$,3)<>MID$(A1$,3*I-2,3)THEN2160 +2140 ONIGOTO2300,1980,4000,4260,4700,5530,5690,7290,6270 +2160 NEXTI:PRINT"ENTER ONE OF THE FOLLOWING:" +2180 PRINT" NAV (TO SET COURSE)" +2190 PRINT" SRS (FOR SHORT RANGE SENSOR SCAN)" +2200 PRINT" LRS (FOR LONG RANGE SENSOR SCAN)" +2210 PRINT" PHA (TO FIRE PHASERS)" +2220 PRINT" TOR (TO FIRE PHOTON TORPEDOES)" +2230 PRINT" SHE (TO RAISE OR LOWER SHIELDS)" +2240 PRINT" DAM (FOR DAMAGE CONTROL REPORTS)" +2250 PRINT" COM (TO CALL ON LIBRARY-COMPUTER)" +2260 PRINT" XXX (TO RESIGN YOUR COMMAND)":PRINT:GOTO 1990 +2290 REM COURSE CONTROL BEGINS HERE +2300 INPUT"COURSE (0-9)";C1:IFC1=9THENC1=1 +2310 IFC1>=1ANDC1<9THEN2350 +2330 PRINT" LT. SULU REPORTS, 'INCORRECT COURSE DATA, SIR!'":GOTO1990 +2350 X$="8":IFD(1)<0THENX$="0.2" +2360 PRINT"WARP FACTOR (0-";X$;")";:INPUTW1:IFD(1)<0ANDW1>.2THEN2470 +2380 IFW1>0ANDW1<=8THEN2490 +2390 IFW1=0THEN1990 +2420 PRINT" CHIEF ENGINEER SCOTT REPORTS 'THE ENGINES WON'T TAKE"; +2430 PRINT" WARP ";W1;"!'":GOTO1990 +2470 PRINT"WARP ENGINES ARE DAMAGED. MAXIUM SPEED = WARP 0.2":GOTO1990 +2490 N=INT(W1*8+.5):IFE-N>=0THEN2590 +2500 PRINT"ENGINEERING REPORTS 'INSUFFICIENT ENERGY AVAILABLE" +2510 PRINT" FOR MANEUVERING AT WARP";W1;"!'" +2530 IFS=1THEND6=1 +2770 FORI=1TO8:IFD(I)>=0THEN2880 +2790 D(I)=D(I)+D6:IFD(I)>-.1ANDD(I)<0THEND(I)=-.1:GOTO2880 +2800 IFD(I)<0THEN2880 +2810 IFD1<>1THEND1=1:PRINT"DAMAGE CONTROL REPORT: "; +2840 PRINTTAB(8);:R1=I:GOSUB8790:PRINTG2$;" REPAIR COMPLETED." +2880 NEXTI:IFRND(1)>.2THEN3070 +2910 R1=FNR(1):IFRND(1)>=.6THEN3000 +2930 D(R1)=D(R1)-(RND(1)*5+1):PRINT"DAMAGE CONTROL REPORT: "; +2960 GOSUB8790:PRINTG2$;" DAMAGED":PRINT:GOTO3070 +3000 D(R1)=D(R1)+RND(1)*3+1:PRINT"DAMAGE CONTROL REPORT: "; +3030 GOSUB8790:PRINTG2$;" STATE OF REPAIR IMPROVED":PRINT +3060 REM BEGIN MOVING STARSHIP +3070 A$=" ":Z1=INT(S1):Z2=INT(S2):GOSUB8670 +3110 X1=C(C1,1)+(C(C1+1,1)-C(C1,1))*(C1-INT(C1)):X=S1:Y=S2 +3140 X2=C(C1,2)+(C(C1+1,2)-C(C1,2))*(C1-INT(C1)):Q4=Q1:Q5=Q2 +3170 FORI=1TON:S1=S1+X1:S2=S2+X2:IFS1<1ORS1>=9ORS2<1ORS2>=9THEN3500 +3240 S8=INT(S1)*24+INT(S2)*3-26:IFMID$(Q$,S8,2)=" "THEN3360 +3320 S1=INT(S1-X1):S2=INT(S2-X2):PRINT"WARP ENGINES SHUT DOWN AT "; +3350 PRINT"SECTOR";S1;",";S2;"DUE TO BAD NAVAGATION":GOTO3370 +3360 NEXTI:S1=INT(S1):S2=INT(S2) +3370 A$="<*>":Z1=INT(S1):Z2=INT(S2):GOSUB8670:GOSUB3910:T8=1 +3430 IFW1<1THENT8=.1*INT(10*W1) +3450 T=T+T8:IFT>T0+T9THEN6220 +3470 REM SEE IF DOCKED, THEN GET COMMAND +3480 GOTO1980 +3490 REM EXCEEDED QUADRANT LIMITS +3500 X=8*Q1+X+N*X1:Y=8*Q2+Y+N*X2:Q1=INT(X/8):Q2=INT(Y/8):S1=INT(X-Q1*8) +3550 S2=INT(Y-Q2*8):IFS1=0THENQ1=Q1-1:S1=8 +3590 IFS2=0THENQ2=Q2-1:S2=8 +3620 X5=0:IFQ1<1THENX5=1:Q1=1:S1=1 +3670 IFQ1>8THENX5=1:Q1=8:S1=8 +3710 IFQ2<1THENX5=1:Q2=1:S2=1 +3750 IFQ2>8THENX5=1:Q2=8:S2=8 +3790 IFX5=0THEN3860 +3800 PRINT"LT. UHURA REPORTS MESSAGE FROM STARFLEET COMMAND:" +3810 PRINT" 'PERMISSION TO ATTEMPT CROSSING OF GALACTIC PERIMETER" +3820 PRINT" IS HEREBY *DENIED*. SHUT DOWN YOUR ENGINES.'" +3830 PRINT"CHIEF ENGINEER SCOTT REPORTS 'WARP ENGINES SHUT DOWN" +3840 PRINT" AT SECTOR";S1;",";S2;"OF QUADRANT";Q1;",";Q2;".'" +3850 IFT>T0+T9THEN6220 +3860 IF8*Q1+Q2=8*Q4+Q5THEN3370 +3870 T=T+1:GOSUB3910:GOTO1320 +3900 REM MANEUVER ENERGY S/R ** +3910 E=E-N-10:IFE>=0THENRETURN +3930 PRINT"SHIELD CONTROL SUPPLIES ENERGY TO COMPLETE THE MANEUVER." +3940 S=S+E:E=0:IFS<=0THENS=0 +3980 RETURN +3990 REM LONG RANGE SENSOR SCAN CODE +4000 IFD(3)<0THENPRINT"LONG RANGE SENSORS ARE INOPERABLE":GOTO1990 +4030 PRINT"LONG RANGE SCAN FOR QUADRANT";Q1;",";Q2 +4040 O1$="-------------------":PRINTO1$ +4060 FORI=Q1-1TOQ1+1:N(1)=-1:N(2)=-2:N(3)=-3:FORJ=Q2-1TOQ2+1 +4120 IFI>0ANDI<9ANDJ>0ANDJ<9THENN(J-Q2+2)=G(I,J):Z(I,J)=G(I,J) +4180 NEXTJ:FORL=1TO3:PRINT": ";:IFN(L)<0THENPRINT"*** ";:GOTO4230 +4210 PRINTRIGHT$(STR$(N(L)+1000),3);" "; +4230 NEXTL:PRINT":":PRINTO1$:NEXTI:GOTO1990 +4250 REM PHASER CONTROL CODE BEGINS HERE +4260 IFD(4)<0THENPRINT"PHASERS INOPERATIVE":GOTO1990 +4265 IFK3>0THEN4330 +4270 PRINT"SCIENCE OFFICER SPOCK REPORTS 'SENSORS SHOW NO ENEMY SHIPS" +4280 PRINT" IN THIS QUADRANT'":GOTO1990 +4330 IFD(8)<0THENPRINT"COMPUTER FAILURE HAMPERS ACCURACY" +4350 PRINT"PHASERS LOCKED ON TARGET; "; +4360 PRINT"ENERGY AVAILABLE =";E;"UNITS" +4370 INPUT"NUMBER OF UNITS TO FIRE";X:IFX<=0THEN1990 +4400 IFE-X<0THEN4360 +4410 E=E-X:IFD(7)<0THENX=X*RND(1) +4450 H1=INT(X/K3):FORI=1TO3:IFK(I,3)<=0THEN4670 +4480 H=INT((H1/FND(0))*(RND(1)+2)):IFH>.15*K(I,3)THEN4530 +4500 PRINT"SENSORS SHOW NO DAMAGE TO ENEMY AT ";K(I,1);",";K(I,2):GOTO4670 +4530 K(I,3)=K(I,3)-H:PRINTH;"UNIT HIT ON KLINGON AT SECTOR";K(I,1);","; +4550 PRINTK(I,2):IFK(I,3)<=0THENPRINT"*** KLINGON DESTROYED ***":GOTO4580 +4560 PRINT" (SENSORS SHOW";K(I,3);"UNITS REMAINING)":GOTO4670 +4580 K3=K3-1:K9=K9-1:Z1=K(I,1):Z2=K(I,2):A$=" ":GOSUB8670 +4650 K(I,3)=0:G(Q1,Q2)=G(Q1,Q2)-100:Z(Q1,Q2)=G(Q1,Q2):IFK9<=0THEN6370 +4670 NEXTI:GOSUB6000:GOTO1990 +4690 REM PHOTON TORPEDO CODE BEGINS HERE +4700 IFP<=0THENPRINT"ALL PHOTON TORPEDOES EXPENDED":GOTO 1990 +4730 IFD(5)<0THENPRINT"PHOTON TUBES ARE NOT OPERATIONAL":GOTO1990 +4760 INPUT"PHOTON TORPEDO COURSE (1-9)";C1:IFC1=9THENC1=1 +4780 IFC1>=1ANDC1<9THEN4850 +4790 PRINT"ENSIGN CHEKOV REPORTS, 'INCORRECT COURSE DATA, SIR!'" +4800 GOTO1990 +4850 X1=C(C1,1)+(C(C1+1,1)-C(C1,1))*(C1-INT(C1)):E=E-2:P=P-1 +4860 X2=C(C1,2)+(C(C1+1,2)-C(C1,2))*(C1-INT(C1)):X=S1:Y=S2 +4910 PRINT"TORPEDO TRACK:" +4920 X=X+X1:Y=Y+X2:X3=INT(X+.5):Y3=INT(Y+.5) +4960 IFX3<1ORX3>8ORY3<1ORY3>8THEN5490 +5000 PRINT" ";X3;",";Y3:A$=" ":Z1=X:Z2=Y:GOSUB8830 +5050 IFZ3<>0THEN4920 +5060 A$="+K+":Z1=X:Z2=Y:GOSUB8830:IFZ3=0THEN5210 +5110 PRINT"*** KLINGON DESTROYED ***":K3=K3-1:K9=K9-1:IFK9<=0THEN6370 +5150 FORI=1TO3:IFX3=K(I,1)ANDY3=K(I,2)THEN5190 +5180 NEXTI:I=3 +5190 K(I,3)=0:GOTO5430 +5210 A$=" * ":Z1=X:Z2=Y:GOSUB8830:IFZ3=0THEN5280 +5260 PRINT"STAR AT";X3;",";Y3;"ABSORBED TORPEDO ENERGY.":GOSUB6000:GOTO1990 +5280 A$=">!<":Z1=X:Z2=Y:GOSUB8830:IFZ3=0THEN4760 +5330 PRINT"*** STARBASE DESTROYED ***":B3=B3-1:B9=B9-1 +5360 IFB9>0ORK9>T-T0-T9THEN5400 +5370 PRINT"THAT DOES IT, CAPTAIN!! YOU ARE HEREBY RELIEVED OF COMMAND" +5380 PRINT"AND SENTENCED TO 99 STARDATES AT HARD LABOR ON CYGNUS 12!!" +5390 GOTO 6270 +5400 PRINT"STARFLEET COMMAND REVIEWING YOUR RECORD TO CONSIDER" +5410 PRINT"COURT MARTIAL!":D0=0 +5430 Z1=X:Z2=Y:A$=" ":GOSUB8670 +5470 G(Q1,Q2)=K3*100+B3*10+S3:Z(Q1,Q2)=G(Q1,Q2):GOSUB6000:GOTO1990 +5490 PRINT"TORPEDO MISSED":GOSUB6000:GOTO1990 +5520 REM SHIELD CONTROL +5530 IFD(7)<0THENPRINT"SHIELD CONTROL INOPERABLE":GOTO1990 +5560 PRINT"ENERGY AVAILABLE =";E+S;:INPUT"NUMBER OF UNITS TO SHIELDS";X +5580 IFX<0ORS=XTHENPRINT"":GOTO1990 +5590 IFX<=E+STHEN5630 +5600 PRINT"SHIELD CONTROL REPORTS 'THIS IS NOT THE FEDERATION TREASURY.'" +5610 PRINT"":GOTO1990 +5630 E=E+S-X:S=X:PRINT"DEFLECTOR CONTROL ROOM REPORT:" +5660 PRINT" 'SHIELDS NOW AT";INT(S);"UNITS PER YOUR COMMAND.'":GOTO1990 +5680 REM DAMAGE CONTROL +5690 IFD(6)>=0THEN5910 +5700 PRINT"DAMAGE CONTROL REPORT NOT AVAILABLE":IFD0=0THEN1990 +5720 D3=0:FORI=1TO8:IFD(I)<0THEND3=D3+.1 +5760 NEXTI:IFD3=0THEN1990 +5780 PRINT:D3=D3+D4:IFD3>=1THEND3=.9 +5810 PRINT"TECHNICIANS STANDING BY TO EFFECT REPAIRS TO YOUR SHIP;" +5820 PRINT"ESTIMATED TIME TO REPAIR:";.01*INT(100*D3);"STARDATES" +5840 INPUT "WILL YOU AUTHORIZE THE REPAIR ORDER (Y/N)";A$ +5860 IFA$<>"Y"THEN 1990 +5870 FORI=1TO8:IFD(I)<0THEND(I)=0 +5890 NEXTI:T=T+D3+.1 +5910 PRINT:PRINT"DEVICE STATE OF REPAIR":FORR1=1TO8 +5920 GOSUB8790:PRINTG2$;LEFT$(Z$,25-LEN(G2$));INT(D(R1)*100)*.01 +5950 NEXTR1:PRINT:IFD0<>0THEN5720 +5980 GOTO 1990 +5990 REM KLINGONS SHOOTING +6000 IFK3<=0THENRETURN +6010 IFD0<>0THENPRINT"STARBASE SHIELDS PROTECT THE ENTERPRISE":RETURN +6040 FORI=1TO3:IFK(I,3)<=0THEN6200 +6060 H=INT((K(I,3)/FND(1))*(2+RND(1))):S=S-H:K(I,3)=K(I,3)/(3+RND(0)) +6080 PRINTH;"UNIT HIT ON ENTERPRISE FROM SECTOR";K(I,1);",";K(I,2) +6090 IFS<=0THEN6240 +6100 PRINT" ":IFH<20THEN6200 +6120 IFRND(1)>.6ORH/S<=.02THEN6200 +6140 R1=FNR(1):D(R1)=D(R1)-H/S-.5*RND(1):GOSUB8790 +6170 PRINT"DAMAGE CONTROL REPORTS ";G2$;" DAMAGED BY THE HIT'" +6200 NEXTI:RETURN +6210 REM END OF GAME +6220 PRINT"IT IS STARDATE";T:GOTO 6270 +6240 PRINT:PRINT"THE ENTERPRISE HAS BEEN DESTROYED. THEN FEDERATION "; +6250 PRINT"WILL BE CONQUERED":GOTO 6220 +6270 PRINT"THERE WERE";K9;"KLINGON BATTLE CRUISERS LEFT AT" +6280 PRINT"THE END OF YOUR MISSION." +6290 PRINT:PRINT:IFB9=0THEN6360 +6310 PRINT"THE FEDERATION IS IN NEED OF A NEW STARSHIP COMMANDER" +6320 PRINT"FOR A SIMILAR MISSION -- IF THERE IS A VOLUNTEER," +6330 INPUT"LET HIM STEP FORWARD AND ENTER 'AYE'";A$:IFA$="AYE"THEN10 +6360 END +6370 PRINT"CONGRULATION, CAPTAIN! THEN LAST KLINGON BATTLE CRUISER" +6380 PRINT"MENACING THE FDERATION HAS BEEN DESTROYED.":PRINT +6400 PRINT"YOUR EFFICIENCY RATING IS";1000*(K7/(T-T0))^2:GOTO6290 +6420 REM SHORT RANGE SENSOR SCAN & STARTUP SUBROUTINE +6430 FORI=S1-1TOS1+1:FORJ=S2-1TOS2+1 +6450 IFINT(I+.5)<1ORINT(I+.5)>8ORINT(J+.5)<1ORINT(J+.5)>8THEN6540 +6490 A$=">!<":Z1=I:Z2=J:GOSUB8830:IFZ3=1THEN6580 +6540 NEXTJ:NEXTI:D0=0:GOTO6650 +6580 D0=1:C$="DOCKED":E=E0:P=P0 +6620 PRINT"SHIELDS DROPPED FOR DOCKING PURPOSES":S=0:GOTO6720 +6650 IFK3>0THENC$="*RED*":GOTO6720 +6660 C$="GREEN":IFE=0THEN6770 +6730 PRINT:PRINT"*** SHORT RANGE SENSORS ARE OUT ***":PRINT:RETURN +6770 O1$="---------------------------------":PRINTO1$:FORI=1TO8 +6820 FORJ=(I-1)*24+1TO(I-1)*24+22STEP3:PRINT" ";MID$(Q$,J,3);:NEXTJ +6830 ONIGOTO6850,6900,6960,7020,7070,7120,7180,7240 +6850 PRINT" STARDATE ";INT(T*10)*.1:GOTO7260 +6900 PRINT" CONDITION ";C$:GOTO7260 +6960 PRINT" QUADRANT ";Q1;",";Q2:GOTO7260 +7020 PRINT" SECTOR ";S1;",";S2:GOTO7260 +7070 PRINT" PHOTON TORPEDOES ";INT(P):GOTO7260 +7120 PRINT" TOTAL ENERGY ";INT(E+S):GOTO7260 +7180 PRINT" SHIELDS ";INT(S):GOTO7260 +7240 PRINT" KLINGONS REMAINING";INT(K9) +7260 NEXTI:PRINTO1$:RETURN +7280 REM LIBRARY COMPUTER CODE +7290 IFD(8)<0THENPRINT"COMPUTER DISABLED":GOTO1990 +7320 INPUT"COMPUTER ACTIVE AND AWAITING COMMAND";A:IFA<0THEN1990 +7350 PRINT:H8=1:ONA+1GOTO7540,7900,8070,8500,8150,7400 +7360 PRINT"FUNCTIONS AVAILABLE FROM LIBRARY-COMPUTER:" +7370 PRINT" 0 = CUMULATIVE GALACTIC RECORD" +7372 PRINT" 1 = STATUS REPORT" +7374 PRINT" 2 = PHOTON TORPEDO DATA" +7376 PRINT" 3 = STARBASE NAV DATA" +7378 PRINT" 4 = DIRECTION/DISTANCE CALCULATOR" +7380 PRINT" 5 = GALAXY 'REGION NAME' MAP":PRINT:GOTO7320 +7390 REM SETUP TO CHANGE CUM GAL RECORD TO GALAXY MAP +7400 H8=0:G5=1:PRINT" THE GALAXY":GOTO7550 +7530 REM CUM GALACTIC RECORD +7540 REM INPUT"DO YOU WANT A HARDCOPY? IS THE TTY ON (Y/N)";A$ +7542 REM IFA$="Y"THENPOKE1229,2:POKE1237,3:NULL1 +7543 PRINT:PRINT" "; +7544 PRINT"COMPUTER RECORD OF GALAXY FOR QUADRANT";Q1;",";Q2 +7546 PRINT +7550 PRINT" 1 2 3 4 5 6 7 8" +7560 O1$=" ----- ----- ----- ----- ----- ----- ----- -----" +7570 PRINTO1$:FORI=1TO8:PRINTI;:IFH8=0THEN7740 +7630 FORJ=1TO8:PRINT" ";:IFZ(I,J)=0THENPRINT"***";:GOTO7720 +7700 PRINTRIGHT$(STR$(Z(I,J)+1000),3); +7720 NEXTJ:GOTO7850 +7740 Z4=I:Z5=1:GOSUB9030:J0=INT(15-.5*LEN(G2$)):PRINTTAB(J0);G2$; +7800 Z5=5:GOSUB 9030:J0=INT(39-.5*LEN(G2$)):PRINTTAB(J0);G2$; +7850 PRINT:PRINTO1$:NEXTI:PRINT:GOTO1990 +7890 REM STATUS REPORT +7900 PRINT " STATUS REPORT:":X$="":IFK9>1THENX$="S" +7940 PRINT"KLINGON";X$;" LEFT: ";K9 +7960 PRINT"MISSION MUST BE COMPLETED IN";.1*INT((T0+T9-T)*10);"STARDATES" +7970 X$="S":IFB9<2THENX$="":IFB9<1THEN8010 +7980 PRINT"THE FEDERATION IS MAINTAINING";B9;"STARBASE";X$;" IN THE GALAXY" +7990 GOTO5690 +8010 PRINT"YOUR STUPIDITY HAS LEFT YOU ON YOUR ON IN" +8020 PRINT" THE GALAXY -- YOU HAVE NO STARBASES LEFT!":GOTO5690 +8060 REM TORPEDO, BASE NAV, D/D CALCULATOR +8070 IFK3<=0THEN4270 +8080 X$="":IFK3>1THENX$="S" +8090 PRINT"FROM ENTERPRISE TO KLINGON BATTLE CRUSER";X$ +8100 H8=0:FORI=1TO3:IFK(I,3)<=0THEN8480 +8110 W1=K(I,1):X=K(I,2) +8120 C1=S1:A=S2:GOTO8220 +8150 PRINT"DIRECTION/DISTANCE CALCULATOR:" +8160 PRINT"YOU ARE AT QUADRANT ";Q1;",";Q2;" SECTOR ";S1;",";S2 +8170 PRINT"PLEASE ENTER":INPUT" INITIAL COORDINATES (X,Y)";C1,A +8200 INPUT" FINAL COORDINATES (X,Y)";W1,X +8220 X=X-A:A=C1-W1:IFX<0THEN8350 +8250 IFA<0THEN8410 +8260 IFX>0THEN8280 +8270 IFA=0THENC1=5:GOTO8290 +8280 C1=1 +8290 IFABS(A)<=ABS(X)THEN8330 +8310 PRINT"DIRECTION =";C1+(((ABS(A)-ABS(X))+ABS(A))/ABS(A)):GOTO8460 +8330 PRINT"DIRECTION =";C1+(ABS(A)/ABS(X)):GOTO8460 +8350 IFA>0THENC1=3:GOTO8420 +8360 IFX<>0THENC1=5:GOTO8290 +8410 C1=7 +8420 IFABS(A)>=ABS(X)THEN8450 +8430 PRINT"DIRECTION =";C1+(((ABS(X)-ABS(A))+ABS(X))/ABS(X)):GOTO8460 +8450 PRINT"DIRECTION =";C1+(ABS(X)/ABS(A)) +8460 PRINT"DISTANCE =";SQR(X^2+A^2):IFH8=1THEN1990 +8480 NEXTI:GOTO1990 +8500 IFB3<>0THENPRINT"FROM ENTERPRISE TO STARBASE:":W1=B4:X=B5:GOTO8120 +8510 PRINT"MR. SPOCK REPORTS, 'SENSORS SHOW NO STARBASES IN THIS"; +8520 PRINT" QUADRANT.'":GOTO1990 +8580 REM FIND EMPTY PLACE IN QUADRANT (FOR THINGS) +8590 R1=FNR(1):R2=FNR(1):A$=" ":Z1=R1:Z2=R2:GOSUB8830:IFZ3=0THEN8590 +8600 RETURN +8660 REM INSERT IN STRING ARRAY FOR QUADRANT +8670 S8=INT(Z2-.5)*3+INT(Z1-.5)*24+1 +8675 IF LEN(A$)<>3THEN PRINT"ERROR":STOP +8680 IFS8=1THENQ$=A$+RIGHT$(Q$,189):RETURN +8690 IFS8=190THENQ$=LEFT$(Q$,189)+A$:RETURN +8700 Q$=LEFT$(Q$,S8-1)+A$+RIGHT$(Q$,190-S8):RETURN +8780 REM PRINTS DEVICE NAME +8790 ONR1GOTO8792,8794,8796,8798,8800,8802,8804,8806 +8792 G2$="WARP ENGINES":RETURN +8794 G2$="SHORT RANGE SENSORS":RETURN +8796 G2$="LONG RANGE SENSORS":RETURN +8798 G2$="PHASER CONTROL":RETURN +8800 G2$="PHOTON TUBES":RETURN +8802 G2$="DAMAGE CONTROL":RETURN +8804 G2$="SHIELD CONTROL":RETURN +8806 G2$="LIBRARY-COMPUTER":RETURN +8820 REM STRING COMPARISON IN QUADRANT ARRAY +8830 Z1=INT(Z1+.5):Z2=INT(Z2+.5):S8=(Z2-1)*3+(Z1-1)*24+1:Z3=0 +8890 IFMID$(Q$,S8,3)<>A$THENRETURN +8900 Z3=1:RETURN +9010 REM QUADRANT NAME IN G2$ FROM Z4,Z5 (=Q1,Q2) +9020 REM CALL WITH G5=1 TO GET REGION NAME ONLY +9030 IFZ5<=4THENONZ4GOTO9040,9050,9060,9070,9080,9090,9100,9110 +9035 GOTO9120 +9040 G2$="ANTARES":GOTO9210 +9050 G2$="RIGEL":GOTO9210 +9060 G2$="PROCYON":GOTO9210 +9070 G2$="VEGA":GOTO9210 +9080 G2$="CANOPUS":GOTO9210 +9090 G2$="ALTAIR":GOTO9210 +9100 G2$="SAGITTARIUS":GOTO9210 +9110 G2$="POLLUX":GOTO9210 +9120 ONZ4GOTO9130,9140,9150,9160,9170,9180,9190,9200 +9130 G2$="SIRIUS":GOTO9210 +9140 G2$="DENEB":GOTO9210 +9150 G2$="CAPELLA":GOTO9210 +9160 G2$="BETELGEUSE":GOTO9210 +9170 G2$="ALDEBARAN":GOTO9210 +9180 G2$="REGULUS":GOTO9210 +9190 G2$="ARCTURUS":GOTO9210 +9200 G2$="SPICA" +9210 IFG5<>1THENONZ5GOTO9230,9240,9250,9260,9230,9240,9250,9260 +9220 RETURN +9230 G2$=G2$+" I":RETURN +9240 G2$=G2$+" II":RETURN +9250 G2$=G2$+" III":RETURN +9260 G2$=G2$+" IV":RETURN diff --git a/84 Super Star Trek/superstartrekins.bas b/84 Super Star Trek/superstartrekins.bas new file mode 100644 index 00000000..4e145633 --- /dev/null +++ b/84 Super Star Trek/superstartrekins.bas @@ -0,0 +1,127 @@ +10 REM INSTRUCTIONS FOR "SUPER STARTREK" MAR 5, 1978 +20 FOR I=1 TO 12:PRINT:NEXT I +21 PRINT TAB(10);"*************************************" +22 PRINT TAB(10);"* *" +23 PRINT TAB(10);"* *" +30 PRINT TAB(10);"* * * SUPER STAR TREK * * *" +31 PRINT TAB(10);"* *" +32 PRINT TAB(10);"* *" +35 PRINT TAB(10);"*************************************" +36 FOR I=1 TO 8:PRINT:NEXT I +40 INPUT "DO YOU NEED INSTRUCTIONS (Y/N)";K$:IF K$="N" THEN 2000 +44 PRINT +45 REM PRINT "TURN THE TTY ON-LINE AND HIT ANY KEY EXCEPT RETURN" +46 REM IF INP(1)=13 THEN 46 +50 REM POKE 1229,2:POKE 1237,3:NULL 1 +90 PRINT" INSTRUCTIONS FOR 'SUPER STAR TREK'" +100 PRINT +110 PRINT"1. WHEN YOU SEE \COMMAND ?\ PRINTED, ENTER ONE OF THE LEGAL" +120 PRINT" COMMANDS (NAV,SRS,LRS,PHA,TOR,SHE,DAM,COM, OR XXX)." +130 PRINT"2. IF YOU SHOULD TYPE IN AN ILLEGAL COMMAND, YOU'LL GET A SHORT" +140 PRINT" LIST OF THE LEGAL COMMANDS PRINTED OUT." +150 PRINT"3. SOME COMMANDS REQUIRE YOU TO ENTER DATA (FOR EXAMPLE, THE" +160 PRINT" 'NAV' COMMAND COMES BACK WITH 'COURSE (1-9) ?'.) IF YOU" +170 PRINT" TYPE IN ILLEGAL DATA (LIKE NEGATIVE NUMBERS), THAN COMMAND" +180 PRINT" WILL BE ABORTED" +190 PRINT +270 PRINT" THE GALAXY IS DIVIDED INTO AN 8 X 8 QUADRANT GRID," +280 PRINT"AND EACH QUADRANT IS FURTHER DIVIDED INTO AN 8 X 8 SECTOR GRID." +290 PRINT +300 PRINT" YOU WILL BE ASSIGNED A STARTING POINT SOMEWHERE IN THE" +310 PRINT"GALAXY TO BEGIN A TOUR OF DUTY AS COMANDER OF THE STARSHIP" +320 PRINT"\ENTERPRISE\; YOUR MISSION: TO SEEK AND DESTROY THE FLEET OF" +330 PRINT"KLINGON WARWHIPS WHICH ARE MENACING THE UNITED FEDERATION OF" +340 PRINT"PLANETS." +360 PRINT +370 PRINT" YOU HAVE THE FOLLOWING COMMANDS AVAILABLE TO YOU AS CAPTAIN" +380 PRINT"OF THE STARSHIP ENTERPRISE:" +385 PRINT +390 PRINT"\NAV\ COMMAND = WARP ENGINE CONTROL --" +400 PRINT" COURSE IS IN A CIRCULAR NUMERICAL 4 3 2" +410 PRINT" VECTOR ARRANGEMENT AS SHOWN . . ." +420 PRINT" INTEGER AND REAL VALUES MAY BE ..." +430 PRINT" USED. (THUS COURSE 1.5 IS HALF- 5 ---*--- 1" +440 PRINT" WAY BETWEEN 1 AND 2 ..." +450 PRINT" . . ." +460 PRINT" VALUES MAY APPROACH 9.0, WHICH 6 7 8" +470 PRINT" ITSELF IS EQUIVALENT TO 1.0" +480 PRINT" COURSE" +490 PRINT" ONE WARP FACTOR IS THE SIZE OF " +500 PRINT" ONE QUADTANT. THEREFORE, TO GET" +510 PRINT" FROM QUADRANT 6,5 TO 5,5, YOU WOULD" +520 PRINT" USE COURSE 3, WARP FACTOR 1." +530 PRINT +540 PRINT"\SRS\ COMMAND = SHORT RANGE SENSOR SCAN" +550 PRINT" SHOWS YOU A SCAN OF YOUR PRESENT QUADRANT." +555 PRINT +560 PRINT" SYMBOLOGY ON YOUR SENSOR SCREEN IS AS FOLLOWS:" +570 PRINT" <*> = YOUR STARSHIP'S POSITION" +580 PRINT" +K+ = KLINGON BATTLE CRUISER" +590 PRINT" >!< = FEDERATION STARBASE (REFUEL/REPAIR/RE-ARM HERE!)" +600 PRINT" * = STAR" +605 PRINT +610 PRINT" A CONDENSED 'STATUS REPORT' WILL ALSO BE PRESENTED." +620 PRINT +640 PRINT"\LRS\ COMMAND = LONG RANGE SENSOR SCAN" +650 PRINT" SHOWS CONDITIONS IN SPACE FOR ONE QUADRANT ON EACH SIDE" +660 PRINT" OF THE ENTERPRISE (WHICH IS IN THE MIDDLE OF THE SCAN)" +670 PRINT" THE SCAN IS CODED IN THE FORM \###\, WHERE TH UNITS DIGIT" +680 PRINT" IS THE NUMBER OF STARS, THE TENS DIGIT IS THE NUMBER OF" +690 PRINT" STARBASES, AND THE HUNDRESDS DIGIT IS THE NUMBER OF" +700 PRINT" KLINGONS." +705 PRINT +706 PRINT" EXAMPLE - 207 = 2 KLINGONS, NO STARBASES, & 7 STARS." +710 PRINT +720 PRINT"\PHA\ COMMAND = PHASER CONTROL." +730 PRINT" ALLOWS YOU TO DESTROY THE KLINGON BATTLE CRUISERS BY " +740 PRINT" ZAPPING THEM WITH SUITABLY LARGE UNITS OF ENERGY TO" +750 PRINT" DEPLETE THEIR SHIELD POWER. (REMBER, KLINGONS HAVE" +760 PRINT" PHASERS TOO!)" +770 PRINT +780 PRINT"\TOR\ COMMAND = PHOTON TORPEDO CONTROL" +790 PRINT" TORPEDO COURSE IS THE SAME AS USED IN WARP ENGINE CONTROL" +800 PRINT" IF YOU HIT THE KLINGON VESSEL, HE IS DESTROYED AND" +810 PRINT" CANNOT FIRE BACK AT YOU. IF YOU MISS, YOU ARE SUBJECT TO" +820 PRINT" HIS PHASER FIRE. IN EITHER CASE, YOU ARE ALSO SUBJECT TO " +825 PRINT" THE PHASER FIRE OF ALL OTHER KLINGONS IN THE QUADRANT." +830 PRINT +835 PRINT" THE LIBRARY-COMPUTER (\COM\ COMMAND) HAS AN OPTION TO " +840 PRINT" COMPUTE TORPEDO TRAJECTORY FOR YOU (OPTION 2)" +850 PRINT +860 PRINT"\SHE\ COMMAND = SHIELD CONTROL" +870 PRINT" DEFINES THE NUMBER OF ENERGY UNITS TO BE ASSIGNED TO THE" +880 PRINT" SHIELDS. ENERGY IS TAKEN FROM TOTAL SHIP'S ENERGY. NOTE" +890 PRINT" THAN THE STATUS DISPLAY TOTAL ENERGY INCLUDES SHIELD ENERGY" +900 PRINT +910 PRINT"\DAM\ COMMAND = DAMMAGE CONTROL REPORT" +920 PRINT" GIVES THE STATE OF REPAIR OF ALL DEVICES. WHERE A NEGATIVE" +930 PRINT" 'STATE OF REPAIR' SHOWS THAT THE DEVICE IS TEMPORARILY" +940 PRINT" DAMAGED." +950 PRINT +960 PRINT"\COM\ COMMAND = LIBRARY-COMPUTER" +970 PRINT" THE LIBRARY-COMPUTER CONTAINS SIX OPTIONS:" +980 PRINT" OPTION 0 = CUMULATIVE GALACTIC RECORD" +990 PRINT" THIS OPTION SHOWES COMPUTER MEMORY OF THE RESULTS OF ALL" +1000 PRINT" PREVIOUS SHORT AND LONG RANGE SENSOR SCANS" +1010 PRINT" OPTION 1 = STATUS REPORT" +1020 PRINT" THIS OPTION SHOWS THE NUMBER OF KLINGONS, STARDATES," +1030 PRINT" AND STARBASES REMAINING IN THE GAME." +1040 PRINT" OPTION 2 = PHOTON TORPEDO DATA" +1050 PRINT" WHICH GIVES DIRECTIONS AND DISTANCE FROM THE ENTERPRISE" +1060 PRINT" TO ALL KLINGONS IN YOUR QUADRANT" +1070 PRINT" OPTION 3 = STARBASE NAV DATA" +1080 PRINT" THIS OPTION GIVES DIRECTION AND DISTANCE TO ANY " +1090 PRINT" STARBASE WITHIN YOUR QUADRANT" +1100 PRINT" OPTION 4 = DIRECTION/DISTANCE CALCULATOR" +1110 PRINT" THIS OPTION ALLOWS YOU TO ENTER COORDINATES FOR" +1120 PRINT" DIRECTION/DISTANCE CALCULATIONS" +1130 PRINT" OPTION 5 = GALACTIC /REGION NAME/ MAP" +1140 PRINT" THIS OPTION PRINTS THE NAMES OF THE SIXTEEN MAJOR " +1150 PRINT" GALACTIC REGIONS REFERRED TO IN THE GAME." +1990 REM POKE 1229,0:POKE 1237,1:NULL 0 +2000 REM PRINT:PRINT:PRINT +2010 REM PRINT "TURN CASSETTE PLAYER ON AND HIT ANY KEY EXCEPT RETURN" +2020 REM IF INP(1)=13 THEN 2020 +2030 REM PRINT +2040 REM PRINT "TURN CASSETTE PLAYER OFF AND " +2050 REM PRINT "TYPE 'RUN' WHEN COMPUTER PRINTS 'OK'" diff --git a/85 Synonym/README.md b/85 Synonym/README.md new file mode 100644 index 00000000..4f723858 --- /dev/null +++ b/85 Synonym/README.md @@ -0,0 +1,7 @@ +### Synonym + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=164 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/85 Synonym/synonym.bas b/85 Synonym/synonym.bas new file mode 100644 index 00000000..868657d9 --- /dev/null +++ b/85 Synonym/synonym.bas @@ -0,0 +1,53 @@ +2 PRINT TAB(33);"SYNONYM" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT: PRINT: PRINT +10 DIM R$(5),W$(10),L(30),R(30) +20 R$(1)="RIGHT": R$(2)="CORRECT": R$(3)="FINE": R$(4)="GOOD!" +30 R$(5)="CHECK" +70 C=0 +90 PRINT "A SYNONYM OF A WORD MEANS ANOTHER WORD IN THE ENGLISH" +100 PRINT "LANGUAGE WHICH HAS THE SAME OR VERY NEARLY THE SAME"; +110 PRINT " MEANING." +130 PRINT "I CHOOSE A WORD -- YOU TYPE A SYNONYM." +140 PRINT "IF YOU CAN'T THINK OF A SYNONYM, TYPE THE WORD 'HELP'" +145 PRINT "AND I WILL TELL YOU A SYNONYM.": PRINT +150 RESTORE: C=C+1: READ N +160 IF C>N THEN 420 +170 N1=INT(RND(1)*N+1) +174 IF R(N1)=1 THEN 170 +176 R(N1)=1 +180 FOR I=1 TO N1 +190 READ N2 +200 FOR J=1 TO N2 +210 READ W$(J) +220 NEXT J +230 NEXT I +232 FOR J=1 TO N2: L(J)=J: NEXT J +235 L(0)=N2: G=1: PRINT +237 L(G)=L(L(0)): L(0)=N2-1: PRINT +240 PRINT " WHAT IS A SYNONYM OF ";W$(G);: INPUT A$ +250 IF A$="HELP" THEN 340 +260 FOR K=1 TO N2 +270 IF G=K THEN 290 +280 IF A$=W$(K) THEN 320 +290 NEXT K +300 PRINT " TRY AGAIN.": GOTO 240 +320 PRINT R$(INT(RND(1)*5+1)): GOTO 150 +340 G1=INT(RND(1)*L(0)+1) +360 PRINT "**** A SYNONYM OF ";W$(G);" IS ";W$(L(G1));".": PRINT +370 L(G1)=L(L(0)): L(0)=L(0)-1: GOTO 240 +420 PRINT: PRINT "SYNONYM DRILL COMPLETED.": GOTO 999 +500 DATA 10 +510 DATA 5,"FIRST","START","BEGINNING","ONSET","INITIAL" +520 DATA 5,"SIMILAR","ALIKE","SAME","LIKE","RESEMBLING" +530 DATA 5,"MODEL","PATTERN","PROTOTYPE","STANDARD","CRITERION" +540 DATA 5,"SMALL","INSIGNIFICANT","LITTLE","TINY","MINUTE" +550 DATA 6,"STOP","HALT","STAY","ARREST","CHECK","STANDSTILL" +560 DATA 6,"HOUSE","DWELLING","RESIDENCE","DOMICILE","LODGING" +565 DATA "HABITATION" +570 DATA 7,"PIT","HOLE","HOLLOW","WELL","GULF","CHASM","ABYSS" +580 DATA 7,"PUSH","SHOVE","THRUST","PROD","POKE","BUTT","PRESS" +590 DATA 6,"RED","ROUGE","SCARLET","CRIMSON","FLAME","RUBY" +600 DATA 7,"PAIN","SUFFERING","HURT","MISERY","DISTRESS","ACHE" +605 DATA "DISCOMFORT" +999 END diff --git a/86 Target/README.md b/86 Target/README.md new file mode 100644 index 00000000..ca5f9177 --- /dev/null +++ b/86 Target/README.md @@ -0,0 +1,7 @@ +### Target + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=165 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/86 Target/target.bas b/86 Target/target.bas new file mode 100644 index 00000000..7e99d3bb --- /dev/null +++ b/86 Target/target.bas @@ -0,0 +1,51 @@ +10 PRINT TAB(33);"TARGET" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT: PRINT: PRINT +100 R=1: R1=57.296: P=3.14159 +110 PRINT "YOU ARE THE WEAPONS OFFICER ON THE STARSHIP ENTERPRISE" +120 PRINT "AND THIS IS A TEST TO SEE HOW ACCURATE A SHOT YOU" +130 PRINT "ARE IN A THREE-DIMENSIONAL RANGE. YOU WILL BE TOLD" +140 PRINT "THE RADIAN OFFSET FOR THE X AND Z AXES, THE LOCATION" +150 PRINT "OF THE TARGET IN THREE DIMENSIONAL RECTANGULAR COORDINATES," +160 PRINT "THE APPROXIMATE NUMBER OF DEGREES FROM THE X AND Z" +170 PRINT "AXES, AND THE APPROXIMATE DISTANCE TO THE TARGET." +180 PRINT "YOU WILL THEN PROCEEED TO SHOOT AT THE TARGET UNTIL IT IS" +190 PRINT "DESTROYED!": PRINT: PRINT "GOOD LUCK!!":PRINT: PRINT +220 A=RND(1)*2*P: B=RND(1)*2*P: Q=INT(A*R1): W=INT(B*R1) +260 PRINT "RADIANS FROM X AXIS =";A;" FROM Z AXIS =";B +280 P1=100000*RND(1)+RND(1): X=SIN(B)*COS(A)*P1: Y=SIN(B)*SIN(A)*P1 +290 Z=COS(B)*P1 +340 PRINT "TARGET SIGHTED: APPROXIMATE COORDINATES: X=";X;" Y=";Y;" Z=";Z +345 R=R+1: IF R>5 THEN 390 +350 ON R GOTO 355,360,365,370,375 +355 P3=INT(P1*.05)*20: GOTO 390 +360 P3=INT(P1*.1)*10: GOTO 390 +365 P3=INT(P1*.5)*2: GOTO 390 +370 P3=INT(P1): GOTO 390 +375 P3=P1 +390 PRINT " ESTIMATED DISTANCE:";P3 +400 PRINT:PRINT "INPUT ANGLE DEVIATION FROM X, DEVIATION FROM Z, DISTANCE"; +405 INPUT A1,B1,P2 +410 PRINT: IF P2<20 THEN PRINT "YOU BLEW YOURSELF UP!!": GOTO 580 +420 A1=A1/R1: B1=B1/R1: PRINT "RADIANS FROM X AXIS =";A1;" "; +425 PRINT "FROM Z AXIS =";B1 +480 X1=P2*SIN(B1)*COS(A1): Y1=P2*SIN(B1)*SIN(A1): Z1=P2*COS(B1) +510 D=((X1-X)^2+(Y1-Y)^2+(Z1-Z)^2)^(1/2) +520 IF D>20 THEN 670 +530 PRINT: PRINT " * * * HIT * * * TARGET IS NON-FUNCTIONAL": PRINT +550 PRINT "DISTANCE OF EXPLOSION FROM TARGET WAS";D;"KILOMETERS." +570 PRINT: PRINT "MISSION ACCOMPLISHED IN ";R;" SHOTS." +580 R=0: FOR I=1 TO 5: PRINT: NEXT I: PRINT "NEXT TARGET...": PRINT +590 GOTO 220 +670 X2=X1-X: Y2=Y1-Y: Z2=Z1-Z: IF X2<0 THEN 730 +710 PRINT "SHOT IN FRONT OF TARGET";X2;"KILOMETERS.": GOTO 740 +730 PRINT "SHOT BEHIND TARGET";-X2;"KILOMETERS." +740 IF Y2<0 THEN 770 +750 PRINT "SHOT TO LEFT OF TARGET";Y2;"KILOMETERS.": GOTO 780 +770 PRINT "SHOT TO RIGHT OF TARGET";-Y2;"KILOMETERS." +780 IF Z2<0 THEN 810 +790 PRINT "SHOT ABOVE TARGET";Z2;"KILOMETERS.": GOTO 820 +810 PRINT "SHOT BELOW TARGET";-Z2;"KILOMETERS." +820 PRINT "APPROX POSITION OF EXPLOSION: X=";X1;" Y=";Y1;" Z=";Z1 +830 PRINT " DISTANCE FROM TARGET =";D: PRINT: PRINT: PRINT: GOTO 345 +999 END diff --git a/87 3-D Plot/3dplot.bas b/87 3-D Plot/3dplot.bas new file mode 100644 index 00000000..4ee0f8a5 --- /dev/null +++ b/87 3-D Plot/3dplot.bas @@ -0,0 +1,17 @@ +1 PRINT TAB(32);"3D PLOT" +2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +3 PRINT:PRINT:PRINT +5 DEF FNA(Z)=30*EXP(-Z*Z/100) +100 PRINT +110 FOR X=-30 TO 30 STEP 1.5 +120 L=0 +130 Y1=5*INT(SQR(900-X*X)/5) +140 FOR Y=Y1 TO -Y1 STEP -5 +150 Z=INT(25+FNA(SQR(X*X+Y*Y))-.7*Y) +160 IF Z<=L THEN 190 +170 L=Z +180 PRINT TAB(Z);"*"; +190 NEXT Y +200 PRINT +210 NEXT X +300 END diff --git a/87 3-D Plot/README.md b/87 3-D Plot/README.md new file mode 100644 index 00000000..e7cea9b4 --- /dev/null +++ b/87 3-D Plot/README.md @@ -0,0 +1,7 @@ +### 3-D Plot + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=167 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/88 3-D Tic-Tac-Toe/README.md b/88 3-D Tic-Tac-Toe/README.md new file mode 100644 index 00000000..e06c4e40 --- /dev/null +++ b/88 3-D Tic-Tac-Toe/README.md @@ -0,0 +1,7 @@ +### 3-D Tic-Tac-Toe + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=168 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/88 3-D Tic-Tac-Toe/qubit.bas b/88 3-D Tic-Tac-Toe/qubit.bas new file mode 100644 index 00000000..8dadf79e --- /dev/null +++ b/88 3-D Tic-Tac-Toe/qubit.bas @@ -0,0 +1,281 @@ +50 PRINT CHR$(26):REM WIDTH 80 +100 PRINT TAB(33);"QUBIC":PRINT +110 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +120 PRINT:PRINT:PRINT +210 PRINT "DO YOU WANT INSTRUCTIONS"; +220 INPUT C$ +230 IF LEFT$(C$,1)="N" THEN 315 +240 IF LEFT$(C$,1)="Y" THEN 265 +250 PRINT "INCORRECT ANSWER. PLEASE TYPE 'YES' OR 'NO'"; +260 GOTO 220 +265 PRINT +270 PRINT "THE GAME IS TIC-TAC-TOE IN A 4 X 4 X 4 CUBE." +280 PRINT "EACH MOVE IS INDICATED BY A 3 DIGIT NUMBER, WITH EACH" +290 PRINT "DIGIT BETWEEN 1 AND 4 INCLUSIVE. THE DIGITS INDICATE THE" +300 PRINT "LEVEL, ROW, AND COLUMN, RESPECTIVELY, OF THE OCCUPIED" +305 PRINT "PLACE. " +306 PRINT +307 PRINT "TO PRINT THE PLAYING BOARD, TYPE 0 (ZERO) AS YOUR MOVE." +308 PRINT "THE PROGRAM WILL PRINT THE BOARD WITH YOUR MOVES INDI-" +309 PRINT "CATED WITH A (Y), THE MACHINE'S MOVES WITH AN (M), AND" +310 PRINT "UNUSED SQUARES WITH A ( ). OUTPUT IS ON PAPER." +311 PRINT +312 PRINT "TO STOP THE PROGRAM RUN, TYPE 1 AS YOUR MOVE." +313 PRINT:PRINT +315 DIM X(64),L(76),M(76,4),Y(16) +320 FOR I = 1 TO 16 +330 READ Y(I) +340 NEXT I +350 FOR I=1 TO 76 +360 FOR J = 1 TO 4 +370 READ M(I,J) +380 NEXT J +390 NEXT I +400 FOR I = 1 TO 64 +410 LET X (I) =0 +420 NEXT I +430 LET Z=1 +440 PRINT "DO YOU WANT TO MOVE FIRST"; +450 INPUT S$ +460 IF LEFT$(S$,1)="N" THEN 630 +470 IF LEFT$(S$,1)="Y" THEN 500 +480 PRINT "INCORRECT ANSWER. PLEASE TYPE 'YES' OR 'NO'."; +490 GOTO 450 +500 PRINT " " +510 PRINT "YOUR MOVE"; +520 INPUT J1 +521 IF J1=1 THEN 2770 +522 IF J1<>0 THEN 525 +523 GOSUB 2550 +524 GOTO 500 +525 IF J1<111 THEN 2750 +526 IF J1>444 THEN 2750 +530 GOSUB 2500 +540 LET K1=INT(J1/100) +550 LET J2=(J1-K1*100) +560 LET K2=INT(J2/10) +570 LET K3= J1 - K1*100 -K2*10 +580 LET M=16*K1+4*K2+K3-20 +590 IF X(M)=0 THEN 620 +600 PRINT "THAT SQUARE IS USED, TRY AGAIN." +610 GOTO 500 +620 LET X(M)=1 +630 GOSUB 1640 +640 J=1 +650 I=1 +660 IF J=1 THEN 720 +670 IF J=2 THEN 790 +680 IF J=3 THEN 930 +690 I=I+1: IF I<=76 THEN 660 +700 J=J+1: IF J<=3 THEN 650 +710 GOTO 1300 +720 IF L(I)<>4 THEN 690 +730 PRINT "YOU WIN AS FOLLOWS"; +740 FOR J=1 TO 4 +750 LET M=M(I,J) +760 GOSUB 1570 +770 NEXT J +780 GOTO 1490 +790 IF L(I)<>15 THEN 690 +800 FOR J=1 TO 4 +810 LET M=M(I,J) +820 IF X(M)<>0 THEN 860 +830 LET X(M)=5 +840 PRINT "MACHINE MOVES TO"; +850 GOSUB 1570 +860 NEXT J +870 PRINT ", AND WINS AS FOLLOWS" +880 FOR J=1 TO 4 +890 LET M=M(I,J) +900 GOSUB 1570 +910 NEXT J +920 GOTO 1490 +930 IF L(I)<>3 THEN 690 +940 PRINT "NICE TRY. MACHINE MOVES TO"; +950 FOR J=1 TO 4 +960 LET M=M(I,J) +970 IF X(M)<>0 THEN 1010 +980 LET X(M)=5 +990 GOSUB 1570 +1000 GOTO 500 +1010 NEXT J +1020 GOTO 1300 +1030 I=1 +1040 LET L(I)=X(M(I,1))+X(M(I,2))+X(M(I,3))+X(M(I,4)) +1050 LET L = L(I) +1060 IF L <2 THEN 1130 +1070 IF L>=3 THEN 1130 +1080 IF L>2 THEN 2230 +1090 FOR J = 1 TO 4 +1100 IF X(M(I,J))<>0 THEN 1120 +1110 LET X(M(I,J))=1/8 +1120 NEXT J +1130 I=I+1: IF I<=76 THEN 1040 +1140 GOSUB 1640 +1150 I=1 +1160 IF L(I)=1/2 THEN 2360 +1170 IF L(I)=1+3/8 THEN 2360 +1180 I=I+1: IF I<=76 THEN 1160 +1190 GOTO 1830 +1200 LET Z = 1 +1210 IF X(Y(Z))=0 THEN 1250 +1220 LET Z=Z+1 +1230 IF Z<>17 THEN 1210 +1240 GOTO 1720 +1250 LET M=Y(Z) +1260 LET X(M)=5 +1270 PRINT "MACHINE MOVES TO"; +1280 GOSUB 1570 +1290 GOTO 500 +1300 LET X=X +1310 I=1 +1320 LET L(I)=X(M(I,1))+X(M(I,2))+X(M(I,3))+X(M(I,4)) +1330 LET L=L(I) +1340 IF L<10 THEN 1410 +1350 IF L>=11 THEN 1410 +1360 IF L>10 THEN 2230 +1370 FOR J=1 TO 4 +1380 IF X(M(I,J))<>0 THEN 1400 +1390 LET X(M(I,J))=1/8 +1400 NEXT J +1410 I=I+1: IF I<=76 THEN 1320 +1420 GOSUB 1640 +1430 I=1 +1440 IF L(I)=.5 THEN 2360 +1450 IF L(I)=5+3/8 THEN 2360 +1460 I=I+1: IF I<=76 THEN 1440 +1470 GOSUB 2500 +1480 GOTO 1030 +1490 PRINT " " +1500 PRINT "DO YOU WANT TO TRY ANOTHER GAME"; +1510 INPUT X$ +1520 IF LEFT$(X$,1)="Y" THEN 400 +1530 IF LEFT$(X$,1)="N" THEN 1560 +1540 PRINT "INCORRECT ANSWER. PLEASE TYPE 'YES' OR 'NO'"; +1550 GOTO 1510 +1560 END +1570 LET K1=INT((M-1)/16)+1 +1580 LET J2=M-16*(K1-1) +1590 LET K2=INT((J2-1)/4)+1 +1600 LET K3=M-(K1-1)*16-(K2-1)*4 +1610 LET M=K1*100+K2*10+K3 +1620 PRINT M; +1630 RETURN +1640 FOR S=1 TO 76 +1650 LET J1 = M(S,1) +1660 LET J2=M(S,2) +1670 LET J3=M(S,3) +1680 LET J4=M(S,4) +1690 LET L(S)=X(J1)+X(J2)+X(J3)+X(J4) +1700 NEXT S +1710 RETURN +1720 FOR I=1 TO 64 +1730 IF X(I)<>0 THEN 1800 +1740 LET X(I)=5 +1750 LET M=I +1760 PRINT "MACHINE LIKES"; +1770 GOSUB 1570 +1780 PRINT " " +1790 GOTO 500 +1800 NEXT I +1810 PRINT "THE GAME IS A DRAW." +1820 GOTO 1490 +1830 FOR K=1 TO 18 +1840 LET P=0 +1850 FOR I=4*K-3 TO 4*K +1860 FOR J=1 TO 4 +1870 LET P=P+X(M(I,J)) +1880 NEXT J +1890 NEXT I +1900 IF P<4 THEN 1940 +1910 IF P<5 THEN 1970 +1920 IF P<9 THEN 1940 +1930 IF P<10 THEN 1970 +1940 NEXT K +1950 GOSUB 2500 +1960 GOTO 1200 +1970 LET S=1/8 +1980 FOR I=4*K-3 TO 4*K +1990 GOTO 2370 +2000 NEXT I +2010 LET S=0 +2020 GOTO 1980 +2030 DATA 1,49,52,4,13,61,64,16,22,39,23,38,26,42,27,43 +2040 DATA 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 +2050 DATA 21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38 +2060 DATA 39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56 +2070 DATA 57,58,59,60,61,62,63,64 +2080 DATA 1,17,33,49,5,21,37,53,9,25,41,57,13,29,45,61 +2090 DATA 2,18,34,50,6,22,38,54,10,26,42,58,14,30,46,62 +2100 DATA 3,19,35,51,7,23,39,55,11,27,43,59,15,31,47,63 +2110 DATA 4,20,36,52,8,24,40,56,12,28,44,60,16,32,48,64 +2120 DATA 1,5,9,13,17,21,25,29,33,37,41,45,49,53,57,61 +2130 DATA 2,6,10,14,18,22,26,30,34,38,42,46,50,54,58,62 +2140 DATA 3,7,11,15,19,23,27,31,35,39,43,47,51,55,59,63 +2150 DATA 4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64 +2160 DATA 1,6,11,16,17,22,27,32,33,38,43,48,49,54,59,64 +2170 DATA 13,10,7,4,29,26,23,20,45,42,39,36,61,58,55,52 +2180 DATA 1,21,41,61,2,22,42,62,3,23,43,63,4,24,44,64 +2190 DATA 49,37,25,13,50,38,26,14,51,39,27,15,52,40,28,16 +2200 DATA 1,18,35,52,5,22,39,56,9,26,43,60,13,30,47,64 +2210 DATA 49,34,19,4,53,38,23,8,57,42,27,12,61,46,31,16 +2220 DATA 1,22,43,64,16,27,38,49,4,23,42,61,13,26,39,52 +2230 FOR J=1 TO 4 +2240 IF X(M(I,J))<>1/8 THEN 2330 +2250 LET X(M(I,J))=5 +2260 IF L(I)<5 THEN 2290 +2270 PRINT "LET'S SEE YOU GET OUT OF THIS: MACHINE MOVES TO"; +2280 GOTO 2300 +2290 PRINT "YOU FOX. JUST IN THE NICK OF TIME, MACHINE MOVES TO"; +2300 LET M=M(I,J) +2310 GOSUB 1570 +2320 GOTO 500 +2330 NEXT J +2340 PRINT "MACHINE CONCEDES THIS GAME." +2350 GOTO 1490 +2360 LET S=1/8 +2370 IF I-INT(I/4)*4>1 THEN 2400 +2380 LET A=1 +2390 GOTO 2410 +2400 LET A=2 +2410 FOR J=A TO 5-A STEP 5-2*A +2420 IF X(M(I,J))=S THEN 2450 +2430 NEXT J +2440 GOTO 2000 +2450 LET X(M(I,J))=5 +2460 LET M=M(I,J) +2470 PRINT "MACHINE TAKES"; +2480 GOSUB 1570 +2490 GOTO 500 +2500 FOR I=1 TO 64 +2510 IF X(I)<>1/8 THEN 2530 +2520 LET X(I)=0 +2530 NEXT I +2540 RETURN +2550 FOR XX=1 TO 9:PRINT:NEXT:FOR I=1 TO 4 +2560 FOR J=1 TO 4 +2562 FOR I1=1 TO J +2564 PRINT" "; +2566 NEXT I1 +2570 FOR K=1 TO 4 +2600 LET Q=16*I+4*J+K-20 +2610 IF X(Q)<>O THEN 2630 +2620 PRINT"( ) "; +2630 IF X(Q)<>5 THEN 2650 +2640 PRINT"(M) "; +2650 IF X(Q)<>1 THEN 2660 +2655 PRINT"(Y) "; +2660 IF X(Q)<>1/8 THEN 2670 +2665 PRINT"( ) "; +2670 NEXT K +2680 PRINT +2690 PRINT +2700 NEXT J +2710 PRINT +2720 PRINT +2730 NEXT I +2735 REM PRINT CHR$(12) +2740 RETURN +2750 PRINT"INCORRECT MOVE, RETYPE IT--"; +2760 GOTO 520 +2770 END diff --git a/89 Tic-Tac-Toe/README.md b/89 Tic-Tac-Toe/README.md new file mode 100644 index 00000000..b4d04d06 --- /dev/null +++ b/89 Tic-Tac-Toe/README.md @@ -0,0 +1,7 @@ +### Tic-Tac-Toe + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=171 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/89 Tic-Tac-Toe/tictactoe1.bas b/89 Tic-Tac-Toe/tictactoe1.bas new file mode 100644 index 00000000..57eace47 --- /dev/null +++ b/89 Tic-Tac-Toe/tictactoe1.bas @@ -0,0 +1,69 @@ +10 PRINT TAB(30);"TIC TAC TOE" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +50 REM +100 REM THIS PROGRAM PLAYS TIC TAC TOE +110 REM THE MACHINE GOES FIRST +120 PRINT "THE GAME BOARD IS NUMBERED:": PRINT +130 PRINT "1 2 3": PRINT "8 9 4": PRINT "7 6 5" +140 PRINT +150 REM +160 REM +170 REM +180 DEF FNM(X)=X-8*INT((X-1)/8) +190 REM +200 REM MAIN PROGRAM +210 PRINT +220 PRINT +230 A=9 +240 M=A +250 GOSUB 650 +260 P=M +270 B=FNM(P+1) +280 M=B +290 GOSUB 650 +300 Q=M +310 IF Q=FNM(B+4) THEN 360 +320 C=FNM(B+4) +330 M=C +340 GOSUB 700 +350 GOTO 730 +360 C=FNM(B+2) +370 M=C +380 GOSUB 650 +390 R=M +400 IF R=FNM(C+4) THEN 450 +410 D=FNM(C+4) +420 M=D +430 GOSUB 700 +440 GOTO 730 +450 IF P/2<>INT(P/2) THEN 500 +460 D=FNM(C+7) +470 M=D +480 GOSUB 700 +490 GOTO 730 +500 D=FNM(C+3) +510 M=D +520 GOSUB 650 +530 S=M +540 IF S=FNM(D+4) THEN 590 +550 E=FNM(D+4) +560 M=E +570 GOSUB 700 +580 REM +590 E=FNM(D+6) +600 M=E +610 GOSUB 700 +620 PRINT "THE GAME IS A DRAW." +630 GOTO 210 +640 REM +650 GOSUB 700 +660 PRINT "YOUR MOVE"; +670 INPUT M +680 RETURN +700 PRINT "COMPUTER MOVES";M +710 RETURN +720 REM +730 PRINT "AND WINS ********" +740 GOTO 210 +750 END diff --git a/89 Tic-Tac-Toe/tictactoe2.bas b/89 Tic-Tac-Toe/tictactoe2.bas new file mode 100644 index 00000000..ef6fee8e --- /dev/null +++ b/89 Tic-Tac-Toe/tictactoe2.bas @@ -0,0 +1,114 @@ +2 PRINT TAB(30);"TIC-TAC-TOE" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT:PRINT:PRINT +8 PRINT "THE BOARD IS NUMBERED:" +10 PRINT " 1 2 3" +12 PRINT " 4 5 6" +14 PRINT " 7 8 9" +16 PRINT:PRINT:PRINT +20 DIM S(9) +50 INPUT"DO YOU WANT 'X' OR 'O'";C$ +55 IF C$="X"THEN 475 +60 P$="O":Q$="X" +100 G=-1:H=1:IF S(5)<>0 THEN 103 +102 S(5)=-1:GOTO 195 +103 IF S(5)<>1 THEN 106 +104 IF S(1)<>0 THEN 110 +105 S(1)=-1:GOTO 195 +106 IF S(2)=1 AND S(1)=0 THEN 181 +107 IF S(4)=1 AND S(1)=0 THEN 181 +108 IF S(6)=1 AND S(9)=0 THEN 189 +109 IF S(8)=1 AND S(9)=0 THEN 189 +110 IF G=1 THEN 112 +111 GOTO 118 +112 J=3*INT((M-1)/3)+1 +113 IF 3*INT((M-1)/3)+1=M THEN K=1 +114 IF 3*INT((M-1)/3)+2=M THEN K=2 +115 IF 3*INT((M-1)/3)+3=M THEN K=3 +116 GOTO 120 +118 FOR J=1 TO 7 STEP 3:FOR K=1 TO 3 +120 IF S(J)<>G THEN 130 +122 IF S(J+2)<>G THEN 135 +126 IF S(J+1)<>0 THEN 150 +128 S(J+1)=-1:GOTO 195 +130 IF S(J)=H THEN 150 +131 IF S(J+2)<>G THEN 150 +132 IF S(J+1)<>G THEN 150 +133 S(J)=-1:GOTO 195 +135 IF S(J+2)<>0 THEN 150 +136 IF S(J+1)<>G THEN 150 +138 S(J+2)=-1:GOTO 195 +150 IF S(K)<>G THEN 160 +152 IF S(K+6)<>G THEN 165 +156 IF S(K+3)<>0 THEN 170 +158 S(K+3)=-1:GOTO 195 +160 IF S(K)=H THEN 170 +161 IF S(K+6)<>G THEN 170 +162 IF S(K+3)<>G THEN 170 +163 S(K)=-1:GOTO 195 +165 IF S(K+6)<>0 THEN 170 +166 IF S(K+3)<>G THEN 170 +168 S(K+6)=-1:GOTO 195 +170 GOTO 450 +171 IF S(3)=G AND S(7)=0 THEN 187 +172 IF S(9)=G AND S(1)=0 THEN 181 +173 IF S(7)=G AND S(3)=0 THEN 183 +174 IF S(9)=0 AND S(1)=G THEN 189 +175 IF G=-1 THEN G=1:H=-1:GOTO 110 +176 IF S(9)=1 AND S(3)=0 THEN 182 +177 FOR I=2 TO 9:IF S(I)<>0 THEN 179 +178 S(I)=-1:GOTO 195 +179 NEXT I +181 S(1)=-1:GOTO 195 +182 IF S(1)=1 THEN 177 +183 S(3)=-1:GOTO 195 +187 S(7)=-1:GOTO 195 +189 S(9)=-1 +195 PRINT:PRINT"THE COMPUTER MOVES TO..." +202 GOSUB 1000 +205 GOTO 500 +450 IF G=1 THEN 465 +455 IF J=7 AND K=3 THEN 465 +460 NEXT K,J +465 IF S(5)=G THEN 171 +467 GOTO 175 +475 P$="X":Q$="O" +500 PRINT:INPUT"WHERE DO YOU MOVE";M +502 IF M=0 THEN PRINT"THANKS FOR THE GAME.":GOTO 2000 +503 IF M>9 THEN 506 +505 IF S(M)=0 THEN 510 +506 PRINT"THAT SQUARE IS OCCUPIED.":PRINT:PRINT:GOTO 500 +510 G=1:S(M)=1 +520 GOSUB 1000 +530 GOTO 100 +1000 PRINT:FOR I=1 TO 9:PRINT" ";:IF S(I)<>-1 THEN 1014 +1012 PRINT Q$" ";:GOTO 1020 +1014 IF S(I)<>0 THEN 1018 +1016 PRINT" ";:GOTO 1020 +1018 PRINT P$" "; +1020 IF I<>3 AND I<>6 THEN 1050 +1030 PRINT:PRINT"---+---+---" +1040 GOTO 1080 +1050 IF I=9 THEN 1080 +1060 PRINT"!"; +1080 NEXT I:PRINT:PRINT:PRINT +1095 FOR I=1 TO 7 STEP 3 +1100 IF S(I)<>S(I+1)THEN 1115 +1105 IF S(I)<>S(I+2)THEN 1115 +1110 IF S(I)=-1 THEN 1350 +1112 IF S(I)=1 THEN 1200 +1115 NEXT I:FOR I=1 TO 3:IF S(I)<>S(I+3)THEN 1150 +1130 IF S(I)<>S(I+6)THEN 1150 +1135 IF S(I)=-1 THEN 1350 +1137 IF S(I)=1 THEN 1200 +1150 NEXT I:FOR I=1 TO 9:IF S(I)=0 THEN 1155 +1152 NEXT I:GOTO 1400 +1155 IF S(5)<>G THEN 1170 +1160 IF S(1)=G AND S(9)=G THEN 1180 +1165 IF S(3)=G AND S(7)=G THEN 1180 +1170 RETURN +1180 IF G=-1 THEN 1350 +1200 PRINT"YOU BEAT ME!! GOOD GAME.":GOTO 2000 +1350 PRINT"I WIN, TURKEY!!!":GOTO 2000 +1400 PRINT"IT'S A DRAW. THANK YOU." +2000 END diff --git a/90 Tower/README.md b/90 Tower/README.md new file mode 100644 index 00000000..6d452f7f --- /dev/null +++ b/90 Tower/README.md @@ -0,0 +1,7 @@ +### Tower + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=173 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/90 Tower/tower.bas b/90 Tower/tower.bas new file mode 100644 index 00000000..ee826c18 --- /dev/null +++ b/90 Tower/tower.bas @@ -0,0 +1,125 @@ +10 PRINT TAB(33);"TOWERS" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +90 PRINT +100 REM*** INITIALIZE +110 DIM T(7,3) +120 E=0 +130 FOR D=1 TO 7 +140 FOR N=1 TO 3 +150 T(D,N)=0 +160 NEXT N +170 NEXT D +180 PRINT "TOWERS OF HANOI PUZZLE.": PRINT +200 PRINT "YOU MUST TRANSFER THE DISKS FROM THE LEFT TO THE RIGHT" +205 PRINT "TOWER, ONE AT A TIME, NEVER PUTTING A LARGER DISK ON A" +210 PRINT "SMALLER DISK.": PRINT +215 INPUT "HOW MANY DISKS DO YOU WANT TO MOVE (7 IS MAX)";S +220 PRINT +230 M=0 +240 FOR Q=1 TO 7 +250 IF Q=S THEN 350 +260 NEXT Q +270 E=E+1 +280 IF E>2 THEN 310 +290 PRINT "SORRY, BUT I CAN'T DO THAT JOB FOR YOU.": GOTO 215 +310 PRINT "ALL RIGHT, WISE GUY, IF YOU CAN'T PLAY THE GAME RIGHT, I'LL" +320 PRINT "JUST TAKE MY PUZZLE AND GO HOME. SO LONG.": STOP +340 REM *** STORE DISKS FROM SMALLEST TO LARGEST +350 PRINT "IN THIS PROGRAM, WE SHALL REFER TO DISKS BY NUMERICAL CODE." +355 PRINT "3 WILL REPRESENT THE SMALLEST DISK, 5 THE NEXT SIZE," +360 PRINT "7 THE NEXT, AND SO ON, UP TO 15. IF YOU DO THE PUZZLE WITH" +365 PRINT "2 DISKS, THEIR CODE NAMES WOULD BE 13 AND 15. WITH 3 DISKS" +370 PRINT "THE CODE NAMES WOULD BE 11, 13 AND 15, ETC. THE NEEDLES" +375 PRINT "ARE NUMBERED FROM LEFT TO RIGHT, 1 TO 3. WE WILL" +380 PRINT "START WITH THE DISKS ON NEEDLE 1, AND ATTEMPT TO MOVE THEM" +385 PRINT "TO NEEDLE 3." +390 PRINT: PRINT "GOOD LUCK!": PRINT +400 Y=7: D=15 +420 FOR X=S TO 1 STEP -1 +430 T(Y,1)=D: D=D-2: Y=Y-1 +460 NEXT X +470 GOSUB 1230 +480 PRINT "WHICH DISK WOULD YOU LIKE TO MOVE";:E=0 +500 INPUT D +510 IF (D-3)*(D-5)*(D-7)*(D-9)*(D-11)*(D-13)*(D-15)=0 THEN 580 +520 PRINT "ILLEGAL ENTRY... YOU MAY ONLY TYPE 3,5,7,9,11,13, OR 15." +530 E=E+1: IF E>1 THEN 560 +550 GOTO 500 +560 PRINT "STOP WASTING MY TIME. GO BOTHER SOMEONE ELSE.": STOP +580 REM *** CHECK IF REQUESTED DISK IS BELOW ANOTHER +590 FOR R=1 TO 7 +600 FOR C=1 TO 3 +610 IF T(R,C)=D THEN 640 +620 NEXT C: NEXT R +640 FOR Q=R TO 1 STEP -1 +645 IF T(Q,C)=0 THEN 660 +650 IF T(Q,C)1 THEN 780 +750 PRINT "I'LL ASSUME YOU HIT THE WRONG KEY THIS TIME. BUT WATCH IT," +760 PRINT "I ONLY ALLOW ONE MISTAKE.": GOTO 705 +780 PRINT "I TRIED TO WARN YOU, BUT YOU WOULDN'T LISTEN." +790 PRINT "BYE BYE, BIG SHOT.":STOP +800 FOR R=1 TO 7 +810 IF T(R,N)<>0 THEN 840 +820 NEXT R +830 GOTO 880 +835 REM *** CHECK IF DISK TO BE PLACED ON A LARGER ONE +840 IF D0 THEN 970 +950 NEXT U +960 U=7: GOTO 980 +965 REM *** MOVE DISK AND SET OLD LOCATION TO 0 +970 U=U-1 +980 T(U,N)=T(V,W): T(V,W)=0 +995 REM *** PRINT OUT CURRENT STATUS +1000 GOSUB 1230 +1018 REM *** CHECK IF DONE +1020 M=M+1 +1030 FOR R=1 TO 7: FOR C=1 TO 2 +1050 IF T(R,C)<>0 THEN 1090 +1060 NEXT C: NEXT R +1080 GOTO 1120 +1090 IF M<=128 THEN 480 +1100 PRINT "SORRY, BUT I HAVE ORDERS TO STOP IF YOU MAKE MORE THAN" +1110 PRINT "128 MOVES.": STOP +1120 IF M<>2^S-1 THEN 1140 +1130 PRINT:PRINT "CONGRATULATIONS!!":PRINT +1140 PRINT "YOU HAVE PERFORMED THE TASK IN";M;"MOVES." +1150 PRINT: PRINT "TRY AGAIN (YES OR NO)";: INPUT A$ +1160 IF A$="NO" THEN 1390 +1170 IF A$="YES" THEN 90 +1180 PRINT: PRINT "'YES' OR 'NO' PLEASE";: INPUT A$: GOTO 1160 +1230 REM *** PRINT SUBROUTINE +1240 FOR K=1 TO 7 +1250 Z=10 +1260 FOR J=1 TO 3 +1270 IF T(K,J)=0 THEN 1330 +1280 PRINT TAB(Z-INT(T(K,J)/2)); +1290 FOR V=1 TO T(K,J) +1300 PRINT "*"; +1310 NEXT V +1320 GOTO 1340 +1330 PRINT TAB(Z);"*"; +1340 Z=Z+21 +1350 NEXT J +1360 PRINT +1370 NEXT K +1380 RETURN +1390 PRINT: PRINT "THANKS FOR THE GAME!": PRINT: END diff --git a/91 Train/README.md b/91 Train/README.md new file mode 100644 index 00000000..c5a249fb --- /dev/null +++ b/91 Train/README.md @@ -0,0 +1,7 @@ +### Train + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=175 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/91 Train/train.bas b/91 Train/train.bas new file mode 100644 index 00000000..b9817616 --- /dev/null +++ b/91 Train/train.bas @@ -0,0 +1,24 @@ +1 PRINT TAB(33);"TRAIN" +2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +3 PRINT: PRINT: PRINT +4 PRINT "TIME - SPEED DISTANCE EXERCISE": PRINT +10 C=INT(25*RND(1))+40 +15 D=INT(15*RND(1))+5 +20 T=INT(19*RND(1))+20 +25 PRINT " A CAR TRAVELING";C;"MPH CAN MAKE A CERTAIN TRIP IN" +30 PRINT D;"HOURS LESS THAN A TRAIN TRAVELING AT";T;"MPH." +35 PRINT "HOW LONG DOES THE TRIP TAKE BY CAR"; +40 INPUT A +45 V=D*T/(C-T) +50 E=INT(ABS((V-A)*100/A)+.5) +55 IF E>5 THEN 70 +60 PRINT "GOOD! ANSWER WITHIN";E;"PERCENT." +65 GOTO 80 +70 PRINT "SORRY. YOU WERE OFF BY";E;"PERCENT." +80 PRINT "CORRECT ANSWER IS";V;"HOURS." +90 PRINT +95 PRINT "ANOTHER PROBLEM (YES OR NO)"; +100 INPUT A$ +105 PRINT +110 IF A$="YES" THEN 10 +999 END diff --git a/92 Trap/README.md b/92 Trap/README.md new file mode 100644 index 00000000..7778ecb5 --- /dev/null +++ b/92 Trap/README.md @@ -0,0 +1,7 @@ +### Trap + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=176 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/92 Trap/trap.bas b/92 Trap/trap.bas new file mode 100644 index 00000000..2d5624b5 --- /dev/null +++ b/92 Trap/trap.bas @@ -0,0 +1,49 @@ +1 PRINT TAB(34);"TRAP" +2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +3 PRINT:PRINT:PRINT +10 G=6 +20 N=100 +30 REM-TRAP +40 REM-STEVE ULLMAN, 8-1-72 +50 PRINT "INSTRUCTIONS"; +60 INPUT Z$ +70 IF LEFT$(Z$,1)<>"Y" THEN 180 +80 PRINT "I AM THINKING OF A NUMBER BETWEEN 1 AND";N +90 PRINT "TRY TO GUESS MY NUMBER. ON EACH GUESS," +100 PRINT "YOU ARE TO ENTER 2 NUMBERS, TRYING TO TRAP" +110 PRINT "MY NUMBER BETWEEN THE TWO NUMBERS. I WILL" +120 PRINT "TELL YOU IF YOU HAVE TRAPPED MY NUMBER, IF MY" +130 PRINT "NUMBER IS LARGER THAN YOUR TWO NUMBERS, OR IF" +140 PRINT "MY NUMBER IS SMALLER THAN YOUR TWO NUMBERS." +150 PRINT "IF YOU WANT TO GUESS ONE SINGLE NUMBER, TYPE" +160 PRINT "YOUR GUESS FOR BOTH YOUR TRAP NUMBERS." +170 PRINT "YOU GET";G;"GUESSES TO GET MY NUMBER." +180 X=INT(N*RND(1))+1 +190 FOR Q=1 TO G +200 PRINT +210 PRINT "GUESS #";Q; +220 INPUT A,B +230 IF A=B AND X=A THEN 400 +240 IF A <= B THEN 260 +250 GOSUB 360 +260 IF A <= X AND X <= B THEN 320 +270 IF X 3 THEN 430 +330 IF K <= 0 THEN 430 +340 N = N - K +350 PRINT "THERE ARE NOW";N;"MATCHES REMAINING." +351 IF N = 4 THEN 381 +352 IF N = 3 THEN 383 +353 IF N = 2 THEN 385 +360 IF N <= 1 THEN 530 +370 Z = 4 - K +372 GOTO 390 +380 PRINT +381 Z = 3 +382 GOTO 390 +383 Z = 2 +384 GOTO 390 +385 Z = 1 +390 PRINT "MY TURN ! I REMOVE" Z "MATCHES" +400 N = N - Z +410 IF N <= 1 THEN 470 +420 GOTO 270 +430 PRINT "VERY FUNNY! DUMMY!" +440 PRINT "DO YOU WANT TO PLAY OR GOOF AROUND?" +450 PRINT "NOW, HOW MANY MATCHES DO YOU WANT", +460 GOTO 310 +470 PRINT +480 PRINT"YOU POOR BOOB! YOU TOOK THE LAST MATCH! I GOTCHA!!" +490 PRINT "HA ! HA ! I BEAT YOU !!!" +500 PRINT +510 PRINT "GOOD BYE LOSER!" +520 GOTO 560 +530 PRINT "YOU WON, FLOPPY EARS !" +540 PRINT "THINK YOU'RE PRETTY SMART !" +550 PRINT "LETS PLAY AGAIN AND I'LL BLOW YOUR SHOES OFF !!" +560 STOP +570 END diff --git a/93 23 Matches/README.md b/93 23 Matches/README.md new file mode 100644 index 00000000..eb368c88 --- /dev/null +++ b/93 23 Matches/README.md @@ -0,0 +1,7 @@ +### 23 Matches + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=177 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/94 War/README.md b/94 War/README.md new file mode 100644 index 00000000..4345c4ac --- /dev/null +++ b/94 War/README.md @@ -0,0 +1,7 @@ +### War + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=178 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/94 War/war.bas b/94 War/war.bas new file mode 100644 index 00000000..388b0ec4 --- /dev/null +++ b/94 War/war.bas @@ -0,0 +1,68 @@ +10 PRINT TAB(33);"WAR" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT: PRINT: PRINT +100 PRINT "THIS IS THE CARD GAME OF WAR. EACH CARD IS GIVEN BY SUIT-#" +110 PRINT "AS S-7 FOR SPADE 7. "; +120 PRINT "DO YOU WANT DIRECTIONS"; +130 INPUT B$ +140 IF B$="NO" THEN 210 +150 IF B$="YES" THEN 180 +160 PRINT "YES OR NO, PLEASE. "; +170 GOTO 120 +180 PRINT "THE COMPUTER GIVES YOU AND IT A 'CARD'. THE HIGHER CARD" +190 PRINT "(NUMERICALLY) WINS. THE GAME ENDS WHEN YOU CHOOSE NOT TO" +200 PRINT "CONTINUE OR WHEN YOU HAVE FINISHED THE PACK." +210 PRINT +220 PRINT +230 DIM A$(52),L(54) +240 FOR I=1 TO 52 +250 READ A$(I) +260 NEXT I +270 REM +280 FOR J=1 TO 52 +290 LET L(J)=INT(52*RND(1))+1 +295 IF J=1 THEN 350 +300 FOR K=1 TO J-1 +310 IF L(K)<>L(J) THEN 340 +320 REM +330 GOTO 290 +340 NEXT K +350 NEXT J +360 P=P+1 +370 M1=L(P) +380 P=P+1 +390 M2=L(P) +400 PRINT +420 PRINT "YOU: ";A$(M1),"COMPUTER: ";A$(M2) +430 N1=INT((M1-.5)/4) +440 N2=INT((M2-.5)/4) +450 IF N1>=N2 THEN 490 +460 A1=A1+1 +470 PRINT "THE COMPUTER WINS!!! YOU HAVE";B1;"AND THE COMPUTER HAS";A1 +480 GOTO 540 +490 IF N1=N2 THEN 530 +500 B1=B1+1 +510 PRINT "YOU WIN. YOU HAVE";B1;"AND THE COMPUTER HAS";A1 +520 GOTO 540 +530 PRINT "TIE. NO SCORE CHANGE." +540 IF L(P+1)=0 THEN 610 +550 PRINT "DO YOU WANT TO CONTINUE"; +560 INPUT V$ +570 IF V$="YES" THEN 360 +580 IF V$="NO" THEN 650 +590 PRINT "YES OR NO, PLEASE. "; +600 GOTO 540 +610 PRINT +620 PRINT +630 PRINT "WE HAVE RUN OUT OF CARDS. FINAL SCORE: YOU: ";B1; +640 PRINT " THE COMPUTER: ";A1:PRINT +650 PRINT "THANKS FOR PLAYING. IT WAS FUN." +655 PRINT +660 DATA "S-2","H-2","C-2","D-2","S-3","H-3","C-3","D-3" +670 DATA "S-4","H-4","C-4","D-4","S-5","H-5","C-5","D-5" +680 DATA "S-6","H-6","C-6","D-6","S-7","H-7","C-7","D-7" +690 DATA "S-8","H-8","C-8","D-8","S-9","H-9","C-9","D-9" +700 DATA "S-10","H-10","C-10","D-10","S-J","H-J","C-J","D-J" +710 DATA "S-Q","H-Q","C-Q","D-Q","S-K","H-K","C-K","D-K" +720 DATA "S-A","H-A","C-A","D-A" +999 END diff --git a/95 Weekday/README.md b/95 Weekday/README.md new file mode 100644 index 00000000..16f825a3 --- /dev/null +++ b/95 Weekday/README.md @@ -0,0 +1,7 @@ +### Weekday + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=179 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/95 Weekday/weekday.bas b/95 Weekday/weekday.bas new file mode 100644 index 00000000..77efcaea --- /dev/null +++ b/95 Weekday/weekday.bas @@ -0,0 +1,150 @@ +10 PRINT TAB(32);"WEEKDAY" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +100 PRINT "WEEKDAY IS A COMPUTER DEMONSTRATION THAT" +110 PRINT"GIVES FACTS ABOUT A DATE OF INTEREST TO YOU." +120 PRINT +130 PRINT "ENTER TODAY'S DATE IN THE FORM: 3,24,1979 "; +140 INPUT M1,D1,Y1 +150 REM THIS PROGRAM DETERMINES THE DAY OF THE WEEK +160 REM FOR A DATE AFTER 1582 +170 DEF FNA(A)=INT(A/4) +180 DIM T(12) +190 DEF FNB(A)=INT(A/7) +200 REM SPACE OUTPUT AND READ IN INITIAL VALUES FOR MONTHS. +210 FOR I= 1 TO 12 +220 READ T(I) +230 NEXT I +240 PRINT"ENTER DAY OF BIRTH (OR OTHER DAY OF INTEREST)"; +250 INPUT M,D,Y +260 PRINT +270 LET I1 = INT((Y-1500)/100) +280 REM TEST FOR DATE BEFORE CURRENT CALENDAR. +290 IF Y-1582 <0 THEN 1300 +300 LET A = I1*5+(I1+3)/4 +310 LET I2=INT(A-FNB(A)*7) +320 LET Y2=INT(Y/100) +330 LET Y3 =INT(Y-Y2*100) +340 LET A =Y3/4+Y3+D+T(M)+I2 +350 LET B=INT(A-FNB(A)*7)+1 +360 IF M > 2 THEN 470 +370 IF Y3 = 0 THEN 440 +380 LET T1=INT(Y-FNA(Y)*4) +390 IF T1 <> 0 THEN 470 +400 IF B<>0 THEN 420 +410 LET B=6 +420 LET B = B-1 +430 GOTO 470 +440 LET A = I1-1 +450 LET T1=INT(A-FNA(A)*4) +460 IF T1 = 0 THEN 400 +470 IF B <>0 THEN 490 +480 LET B = 7 +490 IF (Y1*12+M1)*31+D1<(Y*12+M)*31+D THEN 550 +500 IF (Y1*12+M1)*31+D1=(Y*12+M)*31+D THEN 530 +510 PRINT M;"/";D;"/";Y;" WAS A "; +520 GOTO 570 +530 PRINT M;"/";D;"/";Y;" IS A "; +540 GOTO 570 +550 PRINT M;"/";D;"/";Y;" WILL BE A "; +560 REM PRINT THE DAY OF THE WEEK THE DATE FALLS ON. +570 IF B <>1 THEN 590 +580 PRINT "SUNDAY." +590 IF B<>2 THEN 610 +600 PRINT "MONDAY." +610 IF B<>3 THEN 630 +620 PRINT "TUESDAY." +630 IF B<>4 THEN 650 +640 PRINT "WEDNESDAY." +650 IF B<>5 THEN 670 +660 PRINT "THURSDAY." +670 IF B<>6 THEN 690 +680 GOTO 1250 +690 IF B<>7 THEN 710 +700 PRINT "SATURDAY." +710 IF (Y1*12+M1)*31+D1=(Y*12+M)*31+D THEN 1120 +720 LET I5=Y1-Y +730 PRINT +740 LET I6=M1-M +750 LET I7=D1-D +760 IF I7>=0 THEN 790 +770 LET I6= I6-1 +780 LET I7=I7+30 +790 IF I6>=0 THEN 820 +800 LET I5=I5-1 +810 LET I6=I6+12 +820 IF I5<0 THEN 1310 +830 IF I7 <> 0 THEN 850 +835 IF I6 <> 0 THEN 850 +840 PRINT"***HAPPY BIRTHDAY***" +850 PRINT " "," ","YEARS","MONTHS","DAYS" +855 PRINT " "," ","-----","------","----" +860 PRINT "YOUR AGE (IF BIRTHDATE) ",I5,I6,I7 +870 LET A8 = (I5*365)+(I6*30)+I7+INT(I6/2) +880 LET K5 = I5 +890 LET K6 = I6 +900 LET K7 = I7 +910 REM CALCULATE RETIREMENT DATE. +920 LET E = Y+65 +930 REM CALCULATE TIME SPENT IN THE FOLLOWING FUNCTIONS. +940 LET F = .35 +950 PRINT "YOU HAVE SLEPT ", +960 GOSUB 1370 +970 LET F = .17 +980 PRINT "YOU HAVE EATEN ", +990 GOSUB 1370 +1000 LET F = .23 +1010 IF K5 > 3 THEN 1040 +1020 PRINT "YOU HAVE PLAYED", +1030 GOTO 1080 +1040 IF K5 > 9 THEN 1070 +1050 PRINT "YOU HAVE PLAYED/STUDIED", +1060 GOTO 1080 +1070 PRINT "YOU HAVE WORKED/PLAYED", +1080 GOSUB 1370 +1085 GOTO 1530 +1090 PRINT "YOU HAVE RELAXED ",K5,K6,K7 +1100 PRINT +1110 PRINT TAB(16);"*** YOU MAY RETIRE IN";E;" ***" +1120 PRINT +1140 PRINT +1200 PRINT +1210 PRINT +1220 PRINT +1230 PRINT +1240 END +1250 IF D=13 THEN 1280 +1260 PRINT "FRIDAY." +1270 GOTO 710 +1280 PRINT "FRIDAY THE THIRTEENTH---BEWARE!" +1290 GOTO 710 +1300 PRINT "NOT PREPARED TO GIVE DAY OF WEEK PRIOR TO MDLXXXII. " +1310 GOTO 1140 +1320 REM TABLE OF VALUES FOR THE MONTHS TO BE USED IN CALCULATIONS. +1330 DATA 0, 3, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5 +1340 REM THIS IS THE CURRENT DATE USED IN THE CALCULATIONS. +1350 REM THIS IS THE DATE TO BE CALCULATED ON. +1360 REM CALCULATE TIME IN YEARS, MONTHS, AND DAYS +1370 LET K1=INT(F*A8) +1380 LET I5 = INT(K1/365) +1390 LET K1 = K1- (I5*365) +1400 LET I6 = INT(K1/30) +1410 LET I7 = K1 -(I6*30) +1420 LET K5 = K5-I5 +1430 LET K6 =K6-I6 +1440 LET K7 = K7-I7 +1450 IF K7>=0 THEN 1480 +1460 LET K7=K7+30 +1470 LET K6=K6-1 +1480 IF K6>0 THEN 1510 +1490 LET K6=K6+12 +1500 LET K5=K5-1 +1510 PRINT I5,I6,I7 +1520 RETURN +1530 IF K6=12 THEN 1550 +1540 GOTO 1090 +1550 LET K5=K5+1 +1560 LET K6=0 +1570 GOTO 1090 +1580 REM +1590 END diff --git a/96 Word/README.md b/96 Word/README.md new file mode 100644 index 00000000..404135e8 --- /dev/null +++ b/96 Word/README.md @@ -0,0 +1,7 @@ +### Word + +As published in Basic Computer Games (1978) +https://www.atariarchives.org/basicgames/showpage.php?page=181 + +Downloaded from Vintage Basic at +http://www.vintage-basic.net/games.html diff --git a/96 Word/word.bas b/96 Word/word.bas new file mode 100644 index 00000000..8435310f --- /dev/null +++ b/96 Word/word.bas @@ -0,0 +1,65 @@ +2 PRINT TAB(33);"WORD" +3 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +4 PRINT: PRINT: PRINT +5 DIM S(7),A(7),L(7),D(7),P(7) +10 PRINT "I AM THINKING OF A WORD -- YOU GUESS IT. I WILL GIVE YOU" +15 PRINT "CLUES TO HELP YOU GET IT. GOOD LUCK!!": PRINT: PRINT +20 REM +30 PRINT: PRINT: PRINT "YOU ARE STARTING A NEW GAME..." +35 RESTORE +40 READ N +50 C=INT(RND(1)*N+1) +60 FOR I=1 TO C +70 READ S$ +80 NEXT I +90 G=0 +95 S(0)=LEN(S$) +100 FOR I=1 TO LEN(S$): S(I)=ASC(MID$(S$,I,1)): NEXT I +110 FOR I=1 TO 5 +120 A(I)=45 +130 NEXT I +140 FOR J=1 TO 5 +144 P(J)=0 +146 NEXT J +150 PRINT "GUESS A FIVE LETTER WORD"; +160 INPUT L$ +170 G=G+1 +172 IF S$=G$ THEN 500 +173 FOR I=1 TO 7: P(I)=0: NEXT I +175 L(0)=LEN(L$) +180 FOR I=1 TO LEN(L$): L(I)=ASC(MID$(L$,I,1)): NEXT I +190 IF L(1)=63 THEN 300 +200 IF L(0)<>5 THEN 400 +205 M=0: Q=1 +210 FOR I=1 TO 5 +220 FOR J=1 TO 5 +230 IF S(I)<>L(J) THEN 260 +231 P(Q)=L(J) +232 Q=Q+1 +233 IF I<>J THEN 250 +240 A(J)=L(J) +250 M=M+1 +260 NEXT J +265 NEXT I +270 A(0)=5 +272 P(0)=M +275 A$="": FOR I=1 TO A(0): A$=A$+CHR$(A(I)): NEXT I +277 P$="": FOR I=1 TO P(0): P$=P$+CHR$(P(I)): NEXT I +280 PRINT "THERE WERE";M;"MATCHES AND THE COMMON LETTERS WERE...";P$ +285 PRINT "FROM THE EXACT LETTER MATCHES, YOU KNOW................";A$ +286 IF A$=S$ THEN 500 +287 IF M>1 THEN 289 +288 PRINT: PRINT "IF YOU GIVE UP, TYPE '?' FOR YOUR NEXT GUESS." +289 PRINT +290 GOTO 150 +300 S$="": FOR I=1 TO 7: S$=S$+CHR$(S(I)): NEXT I +310 PRINT "THE SECRET WORD IS ";S$: PRINT +320 GOTO 30 +400 PRINT "YOU MUST GUESS A 5 LETTER WORD. START AGAIN." +410 PRINT: G=G-1: GOTO 150 +500 PRINT "YOU HAVE GUESSED THE WORD. IT TOOK";G;"GUESSES!": PRINT +510 INPUT "WANT TO PLAY AGAIN";Q$ +520 IF Q$="YES" THEN 30 +530 DATA 12,"DINKY","SMOKE","WATER","GRASS","TRAIN","MIGHT","FIRST" +540 DATA "CANDY","CHAMP","WOULD","CLUMP","DOPEY" +999 END