add 00_Alternate_Langage folder and move alternate ports there

This commit is contained in:
Jeff Atwood
2022-03-15 20:49:07 -07:00
parent a0931700e9
commit 43f2ec013a
1789 changed files with 85900 additions and 446 deletions

View File

@@ -0,0 +1,13 @@
Please refer to the `readme.md` in the parent folder.
Each subfolder represents a port of this program to a language which is _not_ one of the agreed upon 10 languages, which are intended to meet these three criteria:
1. Popular (by TIOBE index)
2. Memory safe
3. Generally considered a 'scripting' language
We welcome additional ports, but these additional ports are for educational purposes only.
#### External Links
- Common Lisp: https://github.com/koalahedron/lisp-computer-games/blob/master/01%20Acey%20Ducey/common-lisp/acey-deucy.lisp
- PowerShell: https://github.com/eweilnau/basic-computer-games-powershell/blob/main/AceyDucey.ps1

View File

@@ -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 M<Q THEN 240
990 PRINT
1000 PRINT
1010 PRINT"SORRY, FRIEND, BUT YOU BLEW YOUR WAD."
1015 PRINT:PRINT
1020 INPUT"TRY AGAIN (YES OR NO)";A$
1025 PRINT:PRINT
1030 IF A$="YES" THEN 110
1040 PRINT"O.K., HOPE YOU HAD FUN!"
1050 END

View File

@@ -0,0 +1,9 @@
Please refer to the `readme.md` in the parent folder.
Each subfolder represents a port of this program to a language which is _not_ one of the agreed upon 10 languages, which are intended to meet these three criteria:
1. Popular (by TIOBE index)
2. Memory safe
3. Generally considered a 'scripting' language
We welcome additional ports, but these additional ports are for educational purposes only.

View File

@@ -0,0 +1,143 @@
10 PRINT TAB(28);"AMAZING PROGRAM"
20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
30 PRINT:PRINT:PRINT:PRINT
100 INPUT "WHAT ARE YOUR WIDTH AND LENGTH";H,V
102 IF H<>1 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 710
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 IF Z=1 THEN 1015
1011 X=INT(RND(1)*H+1)
1012 IF V(X,V)=0 THEN 1014
1013 V(X,V)=3: GOTO 1015
1014 V(X,V)=1
1015 FOR J=1 TO V
1016 PRINT "I";
1017 FOR I=1 TO H
1018 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

View File

@@ -0,0 +1,9 @@
Please refer to the `readme.md` in the parent folder.
Each subfolder represents a port of this program to a language which is _not_ one of the agreed upon 10 languages, which are intended to meet these three criteria:
1. Popular (by TIOBE index)
2. Memory safe
3. Generally considered a 'scripting' language
We welcome additional ports, but these additional ports are for educational purposes only.

View File

@@ -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

View File

@@ -0,0 +1,9 @@
Please refer to the `readme.md` in the parent folder.
Each subfolder represents a port of this program to a language which is _not_ one of the agreed upon 10 languages, which are intended to meet these three criteria:
1. Popular (by TIOBE index)
2. Memory safe
3. Generally considered a 'scripting' language
We welcome additional ports, but these additional ports are for educational purposes only.

View File

@@ -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 Q=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

View File

@@ -0,0 +1,9 @@
Please refer to the `readme.md` in the parent folder.
Each subfolder represents a port of this program to a language which is _not_ one of the agreed upon 10 languages, which are intended to meet these three criteria:
1. Popular (by TIOBE index)
2. Memory safe
3. Generally considered a 'scripting' language
We welcome additional ports, but these additional ports are for educational purposes only.

View File

@@ -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(3),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 TWENTY 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)="Y" 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

View File

@@ -0,0 +1,9 @@
Please refer to the `readme.md` in the parent folder.
Each subfolder represents a port of this program to a language which is _not_ one of the agreed upon 10 languages, which are intended to meet these three criteria:
1. Popular (by TIOBE index)
2. Memory safe
3. Generally considered a 'scripting' language
We welcome additional ports, but these additional ports are for educational purposes only.

View File

@@ -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<S(U) THEN 270
240 J(9-K)=0
250 GOTO 280
270 J(9-K)=1: S(U)=S(U)-2^K
272 IF S(U)=1 THEN 815
280 NEXT K
445 FOR T1=1 TO X
447 PRINT TAB((63-4.5*Y)*G1/(LEN(X$))+1);
450 FOR B=1 TO F(U)
460 IF J(B)=0 THEN 500
465 FOR I=1 TO Y: PRINT X$;: NEXT I
470 GOTO 600
500 FOR I=1 TO Y
510 FOR I1=1 TO LEN(X$)
520 PRINT " ";: NEXT I1
530 NEXT I
600 NEXT B
620 PRINT
630 NEXT T1
700 NEXT U
750 FOR H=1 TO 2*X: PRINT: NEXT H
800 NEXT T
806 FOR H=1 TO 75: PRINT: NEXT H
810 END
812 FOR H=1 TO 7*X: PRINT: NEXT H
813 GOTO 800
815 F(U)=9-K: GOTO 445
899 DATA " ",0,0,0,0,0,0,0
900 DATA "A",505,37,35,34,35,37,505
901 DATA "G",125,131,258,258,290,163,101
902 DATA "E",512,274,274,274,274,258,258
903 DATA "T",2,2,2,512,2,2,2
904 DATA "W",256,257,129,65,129,257,256
905 DATA "L",512,257,257,257,257,257,257
906 DATA "S",69,139,274,274,274,163,69
907 DATA "O",125,131,258,258,258,131,125
908 DATA "N",512,7,9,17,33,193,512
909 DATA "F",512,18,18,18,18,2,2
910 DATA "K",512,17,17,41,69,131,258
911 DATA "B",512,274,274,274,274,274,239
912 DATA "D",512,258,258,258,258,131,125
913 DATA "H",512,17,17,17,17,17,512
914 DATA "M",512,7,13,25,13,7,512
915 DATA "?",5,3,2,354,18,11,5
916 DATA "U",128,129,257,257,257,129,128
917 DATA "R",512,18,18,50,82,146,271
918 DATA "P",512,18,18,18,18,18,15
919 DATA "Q",125,131,258,258,322,131,381
920 DATA "Y",8,9,17,481,17,9,8
921 DATA "V",64,65,129,257,129,65,64
922 DATA "X",388,69,41,17,41,69,388
923 DATA "Z",386,322,290,274,266,262,260
924 DATA "I",258,258,258,512,258,258,258
925 DATA "C",125,131,258,258,258,131,69
926 DATA "J",65,129,257,257,257,129,128
927 DATA "1",0,0,261,259,512,257,257
928 DATA "2",261,387,322,290,274,267,261
929 DATA "*",69,41,17,512,17,41,69
930 DATA "3",66,130,258,274,266,150,100
931 DATA "4",33,49,41,37,35,512,33
932 DATA "5",160,274,274,274,274,274,226
933 DATA "6",194,291,293,297,305,289,193
934 DATA "7",258,130,66,34,18,10,8
935 DATA "8",69,171,274,274,274,171,69
936 DATA "9",263,138,74,42,26,10,7
937 DATA "=",41,41,41,41,41,41,41
938 DATA "!",1,1,1,384,1,1,1
939 DATA "0",57,69,131,258,131,69,57
940 DATA ".",1,1,129,449,129,1,1
1000 STOP
1002 END

View File

@@ -0,0 +1,9 @@
Please refer to the `readme.md` in the parent folder.
Each subfolder represents a port of this program to a language which is _not_ one of the agreed upon 10 languages, which are intended to meet these three criteria:
1. Popular (by TIOBE index)
2. Memory safe
3. Generally considered a 'scripting' language
We welcome additional ports, but these additional ports are for educational purposes only.

View File

@@ -0,0 +1,196 @@
5 PRINT TAB(31);"BASKETBALL"
7 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
8 PRINT:PRINT:PRINT
10 PRINT "THIS IS DARTMOUTH COLLEGE BASKETBALL. YOU WILL BE DARTMOUTH"
20 PRINT " CAPTAIN AND PLAYMAKER. CALL SHOTS AS FOLLOWS: 1. LONG"
30 PRINT " (30 FT.) JUMP SHOT; 2. SHORT (15 FT.) JUMP SHOT; 3. LAY"
40 PRINT " UP; 4. SET SHOT."
60 PRINT "BOTH TEAMS WILL USE THE SAME DEFENSE. CALL DEFENSE AS"
70 PRINT "FOLLOWS: 6. PRESS; 6.5 MAN-TO MAN; 7. ZONE; 7.5 NONE."
72 PRINT "TO CHANGE DEFENSE, JUST TYPE 0 AS YOUR NEXT SHOT."
76 INPUT "YOUR STARTING DEFENSE WILL BE";D:IF D<6 THEN 2010
79 PRINT
80 INPUT "CHOOSE YOUR OPPONENT";O$
370 PRINT "CENTER JUMP"
390 IF RND(1)> 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

View File

@@ -0,0 +1,9 @@
Please refer to the `readme.md` in the parent folder.
Each subfolder represents a port of this program to a language which is _not_ one of the agreed upon 10 languages, which are intended to meet these three criteria:
1. Popular (by TIOBE index)
2. Memory safe
3. Generally considered a 'scripting' language
We welcome additional ports, but these additional ports are for educational purposes only.

View File

@@ -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

View File

@@ -0,0 +1,9 @@
Please refer to the `readme.md` in the parent folder.
Each subfolder represents a port of this program to a language which is _not_ one of the agreed upon 10 languages, which are intended to meet these three criteria:
1. Popular (by TIOBE index)
2. Memory safe
3. Generally considered a 'scripting' language
We welcome additional ports, but these additional ports are for educational purposes only.

View File

@@ -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)<B(2) AND B(1)<B(3) THEN Z=B(1)
242 IF B(2)<B(1) AND B(2)<B(3) THEN Z=B(2)
244 IF B(3)<B(1) AND B(3)<B(2) THEN Z=B(3)
250 IF Z=1 THEN 90
260 IF F(A,Z-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)<A(2) AND A(1)<A(3) THEN Z=A(1)
642 IF A(2)<A(1) AND A(2)<A(3) THEN Z=A(2)
644 IF A(3)<A(1) AND A(3)<A(2) THEN Z=A(3)
650 IF Z=1 THEN 90
660 IF F(Z-1,B)>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)<A(2) AND A(1)<A(3) THEN Z1=A(1)
872 IF A(2)<A(1) AND A(2)<A(3) THEN Z1=A(2)
874 IF A(3)<A(1) AND A(3)<A(2) THEN Z1=A(3)
880 IF B(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

View File

@@ -0,0 +1,9 @@
Please refer to the `readme.md` in the parent folder.
Each subfolder represents a port of this program to a language which is _not_ one of the agreed upon 10 languages, which are intended to meet these three criteria:
1. Popular (by TIOBE index)
2. Memory safe
3. Generally considered a 'scripting' language
We welcome additional ports, but these additional ports are for educational purposes only.

View File

@@ -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

View File

@@ -0,0 +1,9 @@
Please refer to the `readme.md` in the parent folder.
Each subfolder represents a port of this program to a language which is _not_ one of the agreed upon 10 languages, which are intended to meet these three criteria:
1. Popular (by TIOBE index)
2. Memory safe
3. Generally considered a 'scripting' language
We welcome additional ports, but these additional ports are for educational purposes only.

View File

@@ -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

View File

@@ -0,0 +1,9 @@
Please refer to the `readme.md` in the parent folder.
Each subfolder represents a port of this program to a language which is _not_ one of the agreed upon 10 languages, which are intended to meet these three criteria:
1. Popular (by TIOBE index)
2. Memory safe
3. Generally considered a 'scripting' language
We welcome additional ports, but these additional ports are for educational purposes only.

View File

@@ -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

View File

@@ -0,0 +1,9 @@
Please refer to the `readme.md` in the parent folder.
Each subfolder represents a port of this program to a language which is _not_ one of the agreed upon 10 languages, which are intended to meet these three criteria:
1. Popular (by TIOBE index)
2. Memory safe
3. Generally considered a 'scripting' language
We welcome additional ports, but these additional ports are for educational purposes only.

View File

@@ -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<H THEN 290
280 NEXT I
290 PRINT
300 NEXT H
310 PRINT TAB(1);
320 FOR I=1 TO INT(L+1)/S2+1
330 PRINT ".";
340 NEXT I
350 PRINT
355 PRINT " 0";
360 FOR I=1 TO INT(L+.9995)
380 PRINT TAB(INT(I/S2));I;
390 NEXT I
400 PRINT
410 PRINT TAB(INT(L+1)/(2*S2)-2);"SECONDS"
420 PRINT
430 GOTO 135
440 END

View File

@@ -0,0 +1,9 @@
Please refer to the `readme.md` in the parent folder.
Each subfolder represents a port of this program to a language which is _not_ one of the agreed upon 10 languages, which are intended to meet these three criteria:
1. Popular (by TIOBE index)
2. Memory safe
3. Generally considered a 'scripting' language
We welcome additional ports, but these additional ports are for educational purposes only.

View File

@@ -0,0 +1,101 @@
10 PRINT TAB(34);"BOWL"
20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
30 PRINT:PRINT:PRINT
270 DIM C(15),A(100,6)
360 PRINT "WELCOME TO THE ALLEY"
450 PRINT "BRING YOUR FRIENDS"
540 PRINT "OKAY LET'S FIRST GET ACQUAINTED"
630 PRINT ""
720 PRINT "THE INSTRUCTIONS (Y/N)"
810 INPUT Z$
900 IF Z$="Y" THEN 990
960 IF Z$="N" THEN 1530
990 PRINT "THE GAME OF BOWLING TAKES MIND AND SKILL.DURING THE GAME"
1080 PRINT "THE COMPUTER WILL KEEP SCORE.YOU MAY COMPETE WITH"
1170 PRINT "OTHER PLAYERS[UP TO FOUR].YOU WILL BE PLAYING TEN FRAMES"
1260 PRINT "ON THE PIN DIAGRAM 'O' MEANS THE PIN IS DOWN...'+' MEANS THE"
1350 PRINT "PIN IS STANDING.AFTER THE GAME THE COMPUTER WILL SHOW YOUR"
1440 PRINT "SCORES ."
1530 PRINT "FIRST OF ALL...HOW MANY ARE PLAYING";
1620 INPUT R
1710 PRINT
1800 PRINT "VERY GOOD..."
1890 FOR I=1 TO 100: FOR J=1 TO 6: A(I,J)=0: NEXT J: NEXT I
1980 F=1
2070 FOR P=1 TO R
2160 M=0
2250 B=1
2340 M=0: Q=0
2430 FOR I=1 TO 15: C(I)=0: NEXT I
2520 REM ARK BALL GENERATOR USING MOD '15' SYSTEM
2610 PRINT "TYPE ROLL TO GET THE BALL GOING."
2700 INPUT N$
2790 K=0: D=0
2880 FOR I=1 TO 20
2970 X=INT(RND(1)*100)
3060 FOR J=1 TO 10
3150 IF X<15*J THEN 3330
3240 NEXT J
3330 C(15*J-X)=1
3420 NEXT I
3510 REM ARK PIN DIAGRAM
3600 PRINT "PLAYER:"P;"FRAME:";F"BALL:"B
3690 FOR I=0 TO 3
3780 PRINT
3870 FOR J=1 TO 4-I
3960 K=K+1
4050 IF C(K)=1 THEN 4320
4140 PRINT TAB(I);"+ ";
4230 GOTO 4410
4320 PRINT TAB(I);"O ";
4410 NEXT J
4500 NEXT I
4590 PRINT ""
4680 REM ARK ROLL ANALYSIS
4770 FOR I=1 TO 10
4860 D=D+C(I)
4950 NEXT I
5040 IF D-M <> 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

View File

@@ -0,0 +1,9 @@
Please refer to the `readme.md` in the parent folder.
Each subfolder represents a port of this program to a language which is _not_ one of the agreed upon 10 languages, which are intended to meet these three criteria:
1. Popular (by TIOBE index)
2. Memory safe
3. Generally considered a 'scripting' language
We welcome additional ports, but these additional ports are for educational purposes only.

View File

@@ -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

View File

@@ -0,0 +1,9 @@
Please refer to the `readme.md` in the parent folder.
Each subfolder represents a port of this program to a language which is _not_ one of the agreed upon 10 languages, which are intended to meet these three criteria:
1. Popular (by TIOBE index)
2. Memory safe
3. Generally considered a 'scripting' language
We welcome additional ports, but these additional ports are for educational purposes only.

View File

@@ -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

View File

@@ -0,0 +1,9 @@
Please refer to the `readme.md` in the parent folder.
Each subfolder represents a port of this program to a language which is _not_ one of the agreed upon 10 languages, which are intended to meet these three criteria:
1. Popular (by TIOBE index)
2. Memory safe
3. Generally considered a 'scripting' language
We welcome additional ports, but these additional ports are for educational purposes only.

View File

@@ -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 RECEIVE."
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 H=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 "UNLESS 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

View File

@@ -0,0 +1,9 @@
Please refer to the `readme.md` in the parent folder.
Each subfolder represents a port of this program to a language which is _not_ one of the agreed upon 10 languages, which are intended to meet these three criteria:
1. Popular (by TIOBE index)
2. Memory safe
3. Generally considered a 'scripting' language
We welcome additional ports, but these additional ports are for educational purposes only.

View File

@@ -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<1 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

View File

@@ -0,0 +1,9 @@
Please refer to the `readme.md` in the parent folder.
Each subfolder represents a port of this program to a language which is _not_ one of the agreed upon 10 languages, which are intended to meet these three criteria:
1. Popular (by TIOBE index)
2. Memory safe
3. Generally considered a 'scripting' language
We welcome additional ports, but these additional ports are for educational purposes only.

View File

@@ -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

View File

@@ -0,0 +1,9 @@
Please refer to the `readme.md` in the parent folder.
Each subfolder represents a port of this program to a language which is _not_ one of the agreed upon 10 languages, which are intended to meet these three criteria:
1. Popular (by TIOBE index)
2. Memory safe
3. Generally considered a 'scripting' language
We welcome additional ports, but these additional ports are for educational purposes only.

View File

@@ -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

View File

@@ -0,0 +1,9 @@
Please refer to the `readme.md` in the parent folder.
Each subfolder represents a port of this program to a language which is _not_ one of the agreed upon 10 languages, which are intended to meet these three criteria:
1. Popular (by TIOBE index)
2. Memory safe
3. Generally considered a 'scripting' language
We welcome additional ports, but these additional ports are for educational purposes only.

View File

@@ -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

View File

@@ -0,0 +1,9 @@
Please refer to the `readme.md` in the parent folder.
Each subfolder represents a port of this program to a language which is _not_ one of the agreed upon 10 languages, which are intended to meet these three criteria:
1. Popular (by TIOBE index)
2. Memory safe
3. Generally considered a 'scripting' language
We welcome additional ports, but these additional ports are for educational purposes only.

View File

@@ -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

View File

@@ -0,0 +1,9 @@
Please refer to the `readme.md` in the parent folder.
Each subfolder represents a port of this program to a language which is _not_ one of the agreed upon 10 languages, which are intended to meet these three criteria:
1. Popular (by TIOBE index)
2. Memory safe
3. Generally considered a 'scripting' language
We welcome additional ports, but these additional ports are for educational purposes only.

View File

@@ -0,0 +1,315 @@
# Annotated version of CHECKERS.BAS, modified to improve readability.
#
# I've made the following changes:
#
# 1. Added many comments and blank lines.
# 2. Separated each statement into its own line.
# 3. Indented loops, conditionals and subroutines.
# 4. Turned *SOME* conditionals and loops into
# structured-BASIC-style if/endif and loop/endloop blocks.
# 5. Switched to using '#' to delimit comments.
# 6. Subroutines now begin with "Sub_Start"
# 7. All non-string text has been converted to lower-case
# 8. All line numbers that are not jump destinations have been removed.
#
# This has helped me make sense of the code. I hope it will also help you.
#
# Print the banner
print tab(32);"CHECKERS"
print tab(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
print
print
print
print "THIS IS THE GAME OF CHECKERS. THE COMPUTER IS X,"
print "AND YOU ARE O. THE COMPUTER WILL MOVE FIRST."
print "SQUARES ARE REFERRED TO BY A COORDINATE SYSTEM."
print "(0,0) IS THE LOWER LEFT CORNER"
print "(0,7) IS THE UPPER LEFT CORNER"
print "(7,0) IS THE LOWER RIGHT CORNER"
print "(7,7) IS THE UPPER RIGHT CORNER"
print "THE COMPUTER WILL TYPE '+TO' WHEN YOU HAVE ANOTHER"
print "JUMP. TYPE TWO NEGATIVE NUMBERS IF YOU CANNOT JUMP."
print
print
print
# Declare the "globals":
# The current move: (rating, current x, current y, new x, new y)
# 'rating' represents how good the move is; higher is better.
dim r(4)
r(0)=-99 # Start with minimum score
# The board. Pieces are represented by numeric values:
#
# - 0 = empty square
# - -1,-2 = X (-1 for regular piece, -2 for king)
# - 1,2 = O (1 for regular piece, 2 for king)
#
# This program's player ("me") plays X.
dim s(7,7)
g=-1 # constant holding -1
# Initialize the board. Data is 2 length-wise strips repeated.
data 1,0,1,0,0,0,-1,0,0,1,0,0,0,-1,0,-1,15
for x=0 to 7
for y=0 to 7
read j
if j=15 then 180
s(x,y)=j
goto 200
180 restore
read s(x,y)
200 next y,x
230 # Start of game loop. First, my turn.
# For each square on the board, search for one of my pieces
# and if it can make the best move so far, store that move in 'r'
for x=0 to 7
for y=0 to 7
# Skip if this is empty or an opponent's piece
if s(x,y) > -1 then 350
# If this is one of my ordinary pieces, analyze possible
# forward moves.
if s(x,y) = -1 then
for a=-1 to 1 step 2
b=g
gosub 650
next a
endif
# If this is one of my kings, analyze possible forward
# and backward moves.
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
endif
350 next y,x
goto 1140 # Skip the subs
# Analyze a move from (x,y) to (x+a, y+b) and schedule it if it's
# the best candidate so far.
650 Sub_Start
u=x+a
v=y+b
# Done if it's off the board
if u<0 or u>7 or v<0 or v>7 then 870
# Consider the destination if it's empty
if s(u,v) = 0 then
gosub 910
goto 870
endif
# If it's got an opponent's piece, jump it instead
if s(u,v) > 0
# Restore u and v, then return if it's off the board
u=u+a
v=v+b
if u<0 or v<0 or u>7 or v>7 then 870
# Otherwise, consider u,v
if s(u,v)=0 then gosub 910
endif
870 return
# Evaluate jumping (x,y) to (u,v).
#
# Computes a score for the proposed move and if it's higher
# than the best-so-far move, uses that instead by storing it
# and its score in array 'r'.
910 Sub_Start
# q is the score; it starts at 0
# +2 if it promotes this piece
if v=0 and s(x,y)=-1 then q=q+2
# +5 if it takes an opponent's piece
if abs(y-v)=2 then q=q+5
# -2 if the piece is moving away from the top boundary
if y=7 then q=q-2
# +1 for putting the piece against a vertical boundary
if u=0 or u=7 then q=q+1
for c=-1 to 1 step 2
if u+c < 0 or u+c > 7 or v+g < 0 then 1080
# +1 for each adjacent friendly piece
if s(u+c, v+g) < 0 then
q=q+1
goto 1080
endif
# Prevent out-of-bounds testing
if u-c < 0 or u-c > 7 or v-g > 7 then 1080
# -2 for each opponent piece that can now take this piece here
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
# Use this move if it's better than the previous best
if q>r(0) then
r(0)=q
r(1)=x
r(2)=y
r(3)=u
r(4)=v
endif
q=0 # reset the score
return
1140 if r(0)=-99 then 1880 # Game is lost if no move could be found.
# Print the computer's move. (Note: chr$(30) is an ASCII RS
# (record separator) code; probably no longer relevant.)
print chr$(30)"FROM"r(1);r(2)"TO"r(3);r(4);
r(0)=-99
# Make the computer's move. If the piece finds its way to the
# end of the board, crown it.
1240 if r(4)=0 then
s(r(3),r(4))=-2
goto 1420
endif
s(r(3),r(4))=s(r(1),r(2))
s(r(1),r(2))=0
# If the piece has jumped 2 squares, it means the computer has
# taken an opponents' piece.
if abs(r(1)-r(3)) == 2 then
s((r(1)+r(3))/2,(r(2)+r(4))/2)=0 # Delete the opponent's piece
# See if we can jump again. Evaluate all possible moves.
x=r(3)
y=r(4)
for a=-2 to 2 step 4
if s(x,y)=-1 then
b=-2
gosub 1370
endif
if s(x,y)=-2 then
for b=-2 to 2 step 4
gosub 1370
next b
endif
next a
# If we've found a move, go back and make that one as well
if r(0) <> -99 then
print "TO" r(3); r(4);
r(0)=-99
goto 1240
endif
goto 1420 # Skip the sub
# If (u,v) is in the bounds, evaluate it as a move using
# the sub at 910
1370 Sub_Start
u=x+a
v=y+b
if u<0 or u>7 or v<0 or v>7 then 1400
if s(u,v)=0 and s(x+a/2,y+b/2)>0 then gosub 910
1400 return
1420 endif
# Now, print the board
print
print
print
for y=7 to 0 step-1
for x=0 to 7
i=5*x
print tab(i);
if s(x,y)=0 then print".";
if s(x,y)=1 then print"O";
if s(x,y)=-1 then print"X";
if s(x,y)=-2 then print"X*";
if s(x,y)=2 then print"O*";
next x
print" "
print
next y
print
# Check if either player is out of pieces. If so, announce the
# winner.
for l=0 to 7
for m=0 to 7
if s(l,m)=1 or s(l,m)=2 then z=1
if s(l,m)=-1 or s(l,m)=-2 then t=1
next m
next l
if z<>1 then 1885
if t<>1 then 1880
# Prompt the player for their move.
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
if s(x,y)=0 and abs(a-e)<=2 and abs(a-e)=abs(b-h)then 1700
print chr$(7)chr$(11); # bell, vertical tab; invalid move
goto 1670
1700 i=46 # Not used; probably a bug
1750 loop
# Make the move and stop unless it might be a jump.
s(a,b) = s(e,h)
s(e,h) = 0
if abs(e-a) <> 2 then break
# Remove the piece jumped over
s((e+a)/2,(h+b)/2) = 0
# Prompt for another move; -1 means player can't, so I've won.
# Keep prompting until there's a valid move or the player gives
# up.
1802 input "+TO";a1,b1
if a1 < 0 then break
if s(a1,b1) <> 0 or abs(a1-a) <>2 or abs(b1-b) <> 2 then 1802
# Update the move variables to correspond to the next jump
e=a
h=b
a=a1
b=b1
i=i+15 # Not used; probably a bug
endloop
# If the player has reached the end of the board, crown this piece
1810 if b=7 then s(a,b)=2
# And play the next turn.
goto 230
# Endgame:
1880 print
print "YOU WIN."
end
1885 print
print "I WIN."
end

View File

@@ -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

View File

@@ -0,0 +1,9 @@
Please refer to the `readme.md` in the parent folder.
Each subfolder represents a port of this program to a language which is _not_ one of the agreed upon 10 languages, which are intended to meet these three criteria:
1. Popular (by TIOBE index)
2. Memory safe
3. Generally considered a 'scripting' language
We welcome additional ports, but these additional ports are for educational purposes only.

View File

@@ -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 CHEMICAL 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

View File

@@ -0,0 +1,9 @@
Please refer to the `readme.md` in the parent folder.
Each subfolder represents a port of this program to a language which is _not_ one of the agreed upon 10 languages, which are intended to meet these three criteria:
1. Popular (by TIOBE index)
2. Memory safe
3. Generally considered a 'scripting' language
We welcome additional ports, but these additional ports are for educational purposes only.

View File

@@ -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
500 PRINT "BYE!!!"
520 END

View File

@@ -0,0 +1,9 @@
Please refer to the `readme.md` in the parent folder.
Each subfolder represents a port of this program to a language which is _not_ one of the agreed upon 10 languages, which are intended to meet these three criteria:
1. Popular (by TIOBE index)
2. Memory safe
3. Generally considered a 'scripting' language
We welcome additional ports, but these additional ports are for educational purposes only.

View File

@@ -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

View File

@@ -0,0 +1,9 @@
Please refer to the `readme.md` in the parent folder.
Each subfolder represents a port of this program to a language which is _not_ one of the agreed upon 10 languages, which are intended to meet these three criteria:
1. Popular (by TIOBE index)
2. Memory safe
3. Generally considered a 'scripting' language
We welcome additional ports, but these additional ports are for educational purposes only.

View File

@@ -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)<M6 THEN 2190
2140 LET C6=INT(13*M6/20)
2150 LET E2=7*C6/13
2160 LET U2=1
2170 REM - CALCULATE SIMULATED LOSSES
2180 PRINT
2190 PRINT : PRINT : PRINT ,"CONFEDERACY","UNION"
2200 LET C5=(2*C1/5)*(1+1/(2*(ABS(Y2-Y)+1)))
2210 LET C5=INT(C5*(1+1/O)*(1.28+F1/(B(1)+1))+.5)
2220 LET E=100/O
2230 IF C5+100/O<M1*(1+(P1-T1)/(M3+1)) THEN 2270
2240 LET C5=INT(13*M1/20*(1+(P1-T1)/(M3+1)))
2250 LET E=7*C5/13
2260 LET U=1
2270 IF D=1 THEN 2500
2280 PRINT "CASUALTIES",C5,C6
2290 PRINT "DESERTIONS",INT(E),INT(E2)
2300 PRINT
2310 IF B$ <> "YES" THEN 2530
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 WON
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<C6+E2 THEN 2440
2420 PRINT "THE UNION WINS "C$
2430 GOTO 2600
2440 PRINT "THE CONFEDERACY WINS "C$
2450 GOTO 2660
2460 PRINT "BATTLE OUTCOME UNRESOLVED"
2470 LET W0=W0+1
2480 IF A=0 THEN 2790
2490 GOTO 2680
2500 LET C6=INT(17*C2*C1/(C5*20))
2510 LET E2=5*O
2520 GOTO 2280
2530 PRINT "YOUR CASUALTIES WERE "INT(100*(C5/C1)+.5)"% OF "
2540 PRINT "THE ACTUAL CASUALTIES AT ";C$
2550 PRINT
2560 REM - FIND WHO WON
2570 IF U=1 THEN 2590
2580 IF C5+E<17*C2*C1/(C5*20)+5*O THEN 2630
2590 PRINT "YOU LOSE ";C$
2600 IF A=0 THEN 2790
2610 LET L=L+1
2620 GOTO 2680
2630 PRINT "YOU WIN ";C$
2640 REM - CUMULATIVE BATTLE FACTORS WHICH ALTER HISTORICAL
2650 REM RESOURCES AVAILABLE.IF A REPLAY DON'T UPDATE.
2660 IF A=0 THEN 2790
2670 LET W=W+1
2680 LET T1=T1+C5+E
2690 LET T2=T2+C6+E2
2700 LET P1=P1+C1
2710 LET P2=P2+C2
2720 LET Q1=Q1+(F(1)+H(1)+B(1))
2730 LET Q2=Q2+(F(2)+H(2)+B(2))
2740 LET R1=R1+M1*(100-I1)/20
2750 LET R2=R2+M2*(100-I2)/20
2760 LET M3=M3+M1
2770 LET M4=M4+M2
2780 GOSUB 3300
2790 U=0:U2=0
2800 PRINT "---------------"
2810 GOTO 620
2820 REM------FINISH OFF
2830 PRINT "THE CONFEDERACY HAS SURRENDERED"
2840 GOTO 2860
2850 PRINT "THE UNION HAS SURRENDERED."
2860 PRINT : PRINT : PRINT : PRINT : PRINT : PRINT
2870 PRINT "THE CONFEDERACY ";
2880 PRINT "HAS WON "W" BATTLES AND LOST "L
2890 IF Y=5 THEN 2940
2900 IF Y2=5 THEN 2920
2910 IF W <= L THEN 2940
2915 IF Y=5 THEN 2940
2920 PRINT "THE CONFEDERACY HAS WON THE WAR"
2930 GOTO 2950
2940 PRINT "THE UNION HAS WON THE WAR"
2950 PRINT
2960 IF R1=0 THEN 3100
2970 PRINT "FOR THE "W+L+W0" BATTLES FOUGHT (EXCLUDING RERUNS)"
2980 PRINT " "," "," ";
2990 PRINT "CONFEDERACY"," UNION"
3000 PRINT "HISTORICAL LOSSES",INT(P1+.5),INT(P2+.5)
3010 PRINT "SIMULATED LOSSES",INT(T1+.5),INT(T2+.5)
3020 PRINT
3030 PRINT " % OF ORIGINAL",INT(100*(T1/P1)+.5),INT(100*(T2/P2)+.5)
3040 IF B$="YES" THEN 3100
3050 PRINT
3060 PRINT "UNION INTELLIGENCE SUGGESTS THAT THE SOUTH USED "
3070 PRINT "STRATEGIES 1, 2, 3, 4 IN THE FOLLOWING PERCENTAGES"
3080 PRINT S(1);S(2);S(3);S(4)
3090 REM---------------------------------
3100 STOP
3110 REM - UNION STRATEGY IS COMPUTER CHOSEN
3120 PRINT "UNION STRATEGY IS ";
3130 IF A <> 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 R<S0 THEN 3270
3250 NEXT I
3260 REM - IF ACTUAL STRAT. IN,THEN HERE IS Y2= HIST. STRAT.
3270 LET Y2=I
3280 PRINT Y2
3290 RETURN
3300 REM LEARN PRESENT STRATEGY, START FORGETTING OLD ONES
3310 REM - PRESENT STRATEGY OF SOUTH GAINS 3*S, OTHERS LOSE S
3320 REM PROBABILITY POINTS, UNLESS A STRATEGY FALLS BELOW 5%.
3330 LET S=3
3340 LET S0=0
3350 FOR I=1 TO 4
3360 IF S(I) <= 5 THEN 3390
3370 LET S(I)=S(I)-S
3380 LET S0=S0+S
3390 NEXT I
3400 LET S(Y)=S(Y)+S0
3410 RETURN
3420 REM - HISTORICAL DATA...CAN ADD MORE (STRAT.,ETC) BY INSERTING
3430 REM DATA STATEMENTS AFTER APPRO. INFO, AND ADJUSTING READ
3440 DATA "BULL RUN",18000,18500,1967,2708,1
3450 DATA "SHILOH",40000.,44894.,10699,13047,3
3460 DATA "SEVEN DAYS",95000.,115000.,20614,15849,3
3470 DATA "SECOND BULL RUN",54000.,63000.,10000,14000,2
3480 DATA "ANTIETAM",40000.,50000.,10000,12000,3
3490 DATA "FREDERICKSBURG",75000.,120000.,5377,12653,1
3500 DATA "MURFREESBORO",38000.,45000.,11000,12000,1
3510 DATA "CHANCELLORSVILLE",32000,90000.,13000,17197,2
3520 DATA "VICKSBURG",50000.,70000.,12000,19000,1
3530 DATA "GETTYSBURG",72500.,85000.,20000,23000,3
3540 DATA "CHICKAMAUGA",66000.,60000.,18000,16000,2
3550 DATA "CHATTANOOGA",37000.,60000.,36700.,5800,2
3560 DATA "SPOTSYLVANIA",62000.,110000.,17723,18000,2
3570 DATA "ATLANTA",65000.,100000.,8500,3700,1
3580 PRINT "JULY 21, 1861. GEN. BEAUREGARD, COMMANDING THE SOUTH, MET"
3590 PRINT "UNION FORCES WITH GEN. MCDOWELL IN A PREMATURE BATTLE AT"
3600 PRINT "BULL RUN. GEN. JACKSON HELPED PUSH BACK THE UNION ATTACK."
3610 GOTO 1150
3620 PRINT "APRIL 6-7, 1862. THE CONFEDERATE SURPRISE ATTACK AT"
3630 PRINT "SHILOH FAILED DUE TO POOR ORGANIZATION."
3640 GOTO 1150
3650 PRINT "JUNE 25-JULY 1, 1862. GENERAL LEE (CSA) UPHELD THE"
3660 PRINT "OFFENSIVE THROUGHOUT THE BATTLE AND FORCED GEN. MCCLELLAN"
3670 PRINT "AND THE UNION FORCES AWAY FROM RICHMOND."
3680 GOTO 1150
3690 PRINT "AUG 29-30, 1862. THE COMBINED CONFEDERATE FORCES UNDER";
3695 PRINT " LEE"
3700 PRINT "AND JACKSON DROVE THE UNION FORCES BACK INTO WASHINGTON."
3710 GOTO 1150
3720 PRINT "SEPT 17, 1862. THE SOUTH FAILED TO INCORPORATE MARYLAND"
3730 PRINT "INTO THE CONFEDERACY."
3740 GOTO 1150
3750 PRINT "DEC 13, 1862. THE CONFEDERACY UNDER LEE SUCCESSFULLY"
3760 PRINT "REPULSED AN ATTACK BY THE UNION UNDER GEN. BURNSIDE."
3770 GOTO 1150
3780 PRINT "DEC 31, 1862. THE SOUTH UNDER GEN. BRAGG WON A CLOSE ";
3785 PRINT "BATTLE."
3790 GOTO 1150
3800 PRINT "MAY 1-6, 1863. THE SOUTH HAD A COSTLY VICTORY AND LOST"
3810 PRINT "ONE OF THEIR OUTSTANDING GENERALS, 'STONEWALL' JACKSON."
3820 GOTO 1150
3830 PRINT "JULY 4, 1863. VICKSBURG WAS A COSTLY DEFEAT FOR THE SOUTH"
3840 PRINT "BECAUSE IT GAVE THE UNION ACCESS TO THE MISSISSIPPI."
3850 GOTO 1150
3860 PRINT "JULY 1-3, 1863. A SOUTHERN MISTAKE BY GEN. LEE AT ";
3865 PRINT "GETTYSBURG"
3870 PRINT "COST THEM ONE OF THE MOST CRUCIAL BATTLES OF THE WAR."
3880 GOTO 1150
3890 PRINT "SEPT. 15, 1863. CONFUSION IN A FOREST NEAR CHICKAMAUGA LED"
3900 PRINT "TO A COSTLY SOUTHERN VICTORY."
3910 GOTO 1150
3920 PRINT "NOV. 25, 1863. AFTER THE SOUTH HAD SIEGED GEN. ROSENCRANS'"
3930 PRINT "ARMY FOR THREE MONTHS, GEN. GRANT BROKE THE SIEGE."
3940 GOTO 1150
3950 PRINT "MAY 5, 1864. GRANT'S PLAN TO KEEP LEE ISOLATED BEGAN TO"
3960 PRINT "FAIL HERE, AND CONTINUED AT COLD HARBOR AND PETERSBURG."
3970 GOTO 1150
3980 PRINT "AUGUST, 1864. SHERMAN AND THREE VETERAN ARMIES CONVERGED"
3990 PRINT "ON ATLANTA AND DEALT THE DEATH BLOW TO THE CONFEDERACY."
4000 GOTO 1150
4010 END

View File

@@ -0,0 +1,9 @@
Please refer to the `readme.md` in the parent folder.
Each subfolder represents a port of this program to a language which is _not_ one of the agreed upon 10 languages, which are intended to meet these three criteria:
1. Popular (by TIOBE index)
2. Memory safe
3. Generally considered a 'scripting' language
We welcome additional ports, but these additional ports are for educational purposes only.

View File

@@ -0,0 +1,124 @@
1 PRINT TAB(33);"COMBAT"
2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
3 PRINT: PRINT: PRINT
4 PRINT "I AM AT WAR WITH YOU.": PRINT "WE HAVE 72000 SOLDIERS APIECE."
5 PRINT:PRINT "DISTRIBUTE YOUR FORCES."
6 PRINT ,"ME"," YOU"
7 PRINT "ARMY",30000,
8 INPUT A
9 PRINT "NAVY",20000,
10 INPUT B
11 PRINT "A. F.",22000,
12 INPUT C
13 IF A+B+C>72000 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 X<A/3 THEN 120
110 IF X<2*A/3 THEN 150
115 GOTO 270
120 PRINT "YOU LOST";X;"MEN FROM YOUR ARMY."
125 A=INT(A-X)
130 GOTO 500
150 PRINT "YOU LOST";INT(X/3);"MEN, BUT I LOST ";INT(2*D/3)
155 A=INT(A-X/3)
160 D=0
165 GOTO 500
200 IF X>B THEN 20
210 IF X<E/3 THEN 230
215 IF X<2*E/3 THEN 250
220 GOTO 270
230 PRINT "YOUR ATTACK WAS STOPPED!"
232 B=INT(B-X)
235 GOTO 500
250 PRINT "YOU DESTROYED";INT(2*E/3);"OF MY ARMY."
255 E=INT(E/3)
260 GOTO 500
270 PRINT "YOU SUNK ONE OF MY PATROL BOATS, BUT I WIPED OUT TWO"
275 PRINT "OF YOUR AIR FORCE BASES AND 3 ARMY BASES."
280 A=INT(A/3)
285 C=INT(C/3)
290 E=INT(2*E/3)
293 GOTO 500
300 IF X>C THEN 20
310 IF X<C/3 THEN 350
320 IF X<2*C/3 THEN 370
330 GOTO 380
350 PRINT "YOUR ATTACK WAS WIPED OUT."
355 C=INT(C-X)
360 GOTO 500
370 PRINT "WE HAD A DOGFIGHT. YOU WON - AND FINISHED YOUR MISSION."
375 D=INT(2*D/3)
377 E=INT(E/3)
378 F=INT(F/3)
379 GOTO 500
380 PRINT "YOU WIPED OUT ONE OF MY ARMY PATROLS, BUT I DESTROYED"
381 PRINT "TWO NAVY BASES AND BOMBED THREE ARMY BASES."
385 A=INT(A/4)
387 B=INT(B/3)
390 D=INT(2*D/3)
500 PRINT
501 PRINT,"YOU","ME"
510 PRINT "ARMY",A,D
520 PRINT "NAVY",B,E
530 PRINT "A. F.",C,F
1000 PRINT "WHAT IS YOUR NEXT MOVE?"
1010 PRINT "ARMY=1 NAVY=2 AIR FORCE=3"
1020 INPUT G
1030 PRINT "HOW MANY MEN"
1040 INPUT T
1045 IF T<0 THEN 1030
1050 ON G GOTO 1600,1700,1800
1600 IF T>A THEN 1030
1610 IF T<D/2 THEN 1630
1615 PRINT "YOU DESTROYED MY ARMY!"
1616 D=0
1617 GOTO 2000
1630 PRINT "I WIPED OUT YOUR ATTACK!"
1635 A=A-T
1640 GOTO 2000
1700 IF T>B THEN 1030
1710 IF T<E/2 THEN 1750
1720 GOTO 1770
1750 PRINT "I SUNK TWO OF YOUR BATTLESHIPS, AND MY AIR FORCE"
1751 PRINT "WIPED OUT YOUR UNGAURDED CAPITOL."
1755 A=A/4
1760 B=B/2
1765 GOTO 2000
1770 PRINT "YOUR NAVY SHOT DOWN THREE OF MY XIII PLANES,"
1771 PRINT "AND SUNK THREE BATTLESHIPS."
1775 F=2*F/3
1780 E=(E/2)
1790 GOTO 2000
1800 IF T>C 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

View File

@@ -0,0 +1,9 @@
Please refer to the `readme.md` in the parent folder.
Each subfolder represents a port of this program to a language which is _not_ one of the agreed upon 10 languages, which are intended to meet these three criteria:
1. Popular (by TIOBE index)
2. Memory safe
3. Generally considered a 'scripting' language
We welcome additional ports, but these additional ports are for educational purposes only.

View File

@@ -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

View File

@@ -0,0 +1,24 @@
10 PRINT "DISTRIBUTION OF DICE ROLLS WITH INT(7*RND(1)) VS INT(6*RND(1)+1)"
20 DIM A(12)
30 DIM B(12)
100 FOR X = 1 TO 100000 : REM CHOOSE A LARGE NUMBER TO GET A FINER GRAINED HISTOGRAM
140 REM GET A NUMBER FROM 0 TO 6 INCLUSIVE WITH THE INTENT TO THROW AWAY ZEROES.
150 LET D1 = INT(7*RND(1))
155 LET D2 = INT(7*RND(1))
160 LET S1 = D1+D2
165 REM IF THIS SUM IS LESS THAN TWO THEN TRY AGAIN.
170 IF S1<2 THEN 150
199 REM GET A NUMBER FROM 0 TO 5 THEN ADD 1 TO IT TO MAKE IT 1 TO 6
200 LET D3 = INT(6*RND(1))+1
210 LET D4 = INT(6*RND(1))+1
220 LET S2 = D3+D4
245 REM USE OUR ARRAY AS A HISTOGRAM, COUNTING EACH OCCURRENCE OF DICE ROLL
250 A(S1) = A(S1) + 1
260 B(S2) = B(S2) + 1
290 NEXT X
300 PRINT "THE INT(7*RND(1)) DISTRIBUTION:"
310 FOR I = 2 TO 12 :PRINT I,:NEXT:PRINT
320 FOR I = 2 TO 12 :PRINT A(I),:NEXT:PRINT
325 PRINT "THE INT(6*RND(1)+1) DISTRIBUTION"
330 FOR I = 2 TO 12 :PRINT I,:NEXT:PRINT
340 FOR I = 2 TO 12 :PRINT B(I),:NEXT:PRINT

View File

@@ -0,0 +1,3 @@
#### External Links
- Common Lisp: https://github.com/koalahedron/lisp-computer-games/blob/master/01%20Acey%20Ducey/common-lisp/acey-deucy.lisp
- PowerShell: https://github.com/eweilnau/basic-computer-games-powershell/blob/main/AceyDucey.ps1

View File

@@ -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 880
860 PRINT "HOW MUCH ";
870 INPUT Z1
876 IF A1<Z1 THEN 1522
880 LET W=1
890 LET X=1
900 LET Y=1
910 PRINT
920 PRINT "IT'S YOUR MOVE: ";
930 INPUT P,Q,R
940 IF P>W+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 1400
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

View File

@@ -0,0 +1,9 @@
Please refer to the `readme.md` in the parent folder.
Each subfolder represents a port of this program to a language which is _not_ one of the agreed upon 10 languages, which are intended to meet these three criteria:
1. Popular (by TIOBE index)
2. Memory safe
3. Generally considered a 'scripting' language
We welcome additional ports, but these additional ports are for educational purposes only.

View File

@@ -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 Y<B THEN PRINT "SOUTH";
530 IF X>A THEN PRINT "EAST";
540 IF X<A THEN PRINT "WEST";
550 IF Y<>B OR X<>A THEN PRINT " AND";
560 IF Z>C THEN PRINT " TOO LOW."
570 IF Z<C THEN PRINT " TOO HIGH."
580 IF Z=C THEN PRINT " DEPTH OK."
590 RETURN
600 END

View File

@@ -0,0 +1,9 @@
Please refer to the `readme.md` in the parent folder.
Each subfolder represents a port of this program to a language which is _not_ one of the agreed upon 10 languages, which are intended to meet these three criteria:
1. Popular (by TIOBE index)
2. Memory safe
3. Generally considered a 'scripting' language
We welcome additional ports, but these additional ports are for educational purposes only.

View File

@@ -0,0 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<LangVersion>10</LangVersion>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,22 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30114.105
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Diamond", "Diamond.csproj", "{44B406C8-70F0-4183-B19A-5B045A1AEBA4}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{44B406C8-70F0-4183-B19A-5B045A1AEBA4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{44B406C8-70F0-4183-B19A-5B045A1AEBA4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{44B406C8-70F0-4183-B19A-5B045A1AEBA4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{44B406C8-70F0-4183-B19A-5B045A1AEBA4}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal

View File

@@ -1,3 +1,3 @@
Original source downloaded [from Vintage Basic](http://www.vintage-basic.net/games.html)
Conversion to [Pascal](https://en.wikipedia.org/wiki/Pascal_(programming_language))
Conversion to [Microsoft C#](https://docs.microsoft.com/en-us/dotnet/csharp/)

View File

@@ -0,0 +1,27 @@
1 PRINT TAB(33);"DIAMOND"
2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
3 PRINT:PRINT:PRINT
4 PRINT "FOR A PRETTY DIAMOND PATTERN,"
5 INPUT "TYPE IN AN ODD NUMBER BETWEEN 5 AND 21";R:PRINT
6 Q=INT(60/R):A$="CC"
8 FOR L=1 TO Q
10 X=1:Y=R:Z=2
20 FOR N=X TO Y STEP Z
25 PRINT TAB((R-N)/2);
28 FOR M=1 TO Q
29 C=1
30 FOR A=1 TO N
32 IF C>LEN(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

View File

@@ -0,0 +1,163 @@
import java.util.Scanner;
/**
* Game of Diamond
* <p>
* Based on the BASIC game of Diamond here
* https://github.com/coding-horror/basic-computer-games/blob/main/32%20Diamond/diamond.bas
* <p>
* Note: The idea was to create a version of the 1970's BASIC game in Java, without introducing
* new features - no additional text, error checking, etc has been added.
*
* Converted from BASIC to Java by Darren Cardenas.
*/
public class Diamond {
private static final int LINE_WIDTH = 60;
private static final String PREFIX = "CC";
private static final char SYMBOL = '!';
private final Scanner scan; // For user input
public Diamond() {
scan = new Scanner(System.in);
} // End of constructor Diamond
public void play() {
showIntro();
startGame();
} // End of method play
private void showIntro() {
System.out.println(" ".repeat(32) + "DIAMOND");
System.out.println(" ".repeat(14) + "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY");
System.out.println("\n\n");
} // End of method showIntro
private void startGame() {
int body = 0;
int column = 0;
int end = 0;
int fill = 0;
int increment = 2;
int numPerSide = 0;
int prefixIndex = 0;
int row = 0;
int start = 1;
int userNum = 0;
String lineContent = "";
// Get user input
System.out.println("FOR A PRETTY DIAMOND PATTERN,");
System.out.print("TYPE IN AN ODD NUMBER BETWEEN 5 AND 21? ");
userNum = scan.nextInt();
System.out.println("");
// Calcuate number of diamonds to be drawn on each side of screen
numPerSide = (int) (LINE_WIDTH / userNum);
end = userNum;
// Begin loop through each row of diamonds
for (row = 1; row <= numPerSide; row++) {
// Begin loop through top and bottom halves of each diamond
for (body = start; increment < 0 ? body >= end : body <= end; body += increment) {
lineContent = "";
// Add whitespace
while (lineContent.length() < ((userNum - body) / 2)) {
lineContent += " ";
}
// Begin loop through each column of diamonds
for (column = 1; column <= numPerSide; column++) {
prefixIndex = 1;
// Begin loop that fills each diamond with characters
for (fill = 1; fill <= body; fill++) {
// Right side of diamond
if (prefixIndex > PREFIX.length()) {
lineContent += SYMBOL;
}
// Left side of diamond
else {
lineContent += PREFIX.charAt(prefixIndex - 1);
prefixIndex++;
}
} // End loop that fills each diamond with characters
// Column finished
if (column == numPerSide) {
break;
}
// Column not finishd
else {
// Add whitespace
while (lineContent.length() < (userNum * column + (userNum - body) / 2)) {
lineContent += " ";
}
}
} // End loop through each column of diamonds
System.out.println(lineContent);
} // End loop through top and bottom half of each diamond
if (start != 1) {
start = 1;
end = userNum;
increment = 2;
}
else {
start = userNum - 2;
end = 1;
increment = -2;
row--;
}
} // End loop through each row of diamonds
} // End of method startGame
public static void main(String[] args) {
Diamond diamond = new Diamond();
diamond.play();
} // End of method main
} // End of class Diamond

View File

@@ -1,3 +1,3 @@
Original source downloaded [from Vintage Basic](http://www.vintage-basic.net/games.html)
Conversion to [Pascal](https://en.wikipedia.org/wiki/Pascal_(programming_language))
Conversion to [Oracle Java](https://openjdk.java.net/)

View File

@@ -0,0 +1,3 @@
Original source downloaded [from Vintage Basic](http://www.vintage-basic.net/games.html)
Conversion to [JavaScript](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Shells)

View File

@@ -0,0 +1,9 @@
<html>
<head>
<title>DIAMOND</title>
</head>
<body>
<pre id="output" style="font-size: 12pt;"></pre>
<script src="diamond.js"></script>
</body>
</html>

View File

@@ -0,0 +1,94 @@
// DIAMOND
//
// Converted from BASIC to Javascript by Oscar Toledo G. (nanochess)
//
function print(str)
{
document.getElementById("output").appendChild(document.createTextNode(str));
}
function input()
{
var input_element;
var input_str;
return new Promise(function (resolve) {
input_element = document.createElement("INPUT");
print("? ");
input_element.setAttribute("type", "text");
input_element.setAttribute("length", "50");
document.getElementById("output").appendChild(input_element);
input_element.focus();
input_str = undefined;
input_element.addEventListener("keydown", function (event) {
if (event.keyCode == 13) {
input_str = input_element.value;
document.getElementById("output").removeChild(input_element);
print(input_str);
print("\n");
resolve(input_str);
}
});
});
}
function tab(space)
{
var str = "";
while (space-- > 0)
str += " ";
return str;
}
// Main program
async function main()
{
print(tab(33) + "DIAMOND\n");
print(tab(15) + "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY\n");
print("\n");
print("\n");
print("\n");
print("FOR A PRETTY DIAMOND PATTERN,\n");
print("TYPE IN AN ODD NUMBER BETWEEN 5 AND 21");
r = parseInt(await input());
q = Math.floor(60 / r);
as = "CC"
x = 1;
y = r;
z = 2;
for (l = 1; l <= q; l++) {
for (n = x; z < 0 ? n >= y : n <= y; n += z) {
str = "";
while (str.length < (r - n) / 2)
str += " ";
for (m = 1; m <= q; m++) {
c = 1;
for (a = 1; a <= n; a++) {
if (c > as.length)
str += "!";
else
str += as[c++ - 1];
}
if (m == q)
break;
while (str.length < r * m + (r - n) / 2)
str += " ";
}
print(str + "\n");
}
if (x != 1) {
x = 1;
y = r;
z = 2;
} else {
x = r - 2;
y = 1;
z = -2;
l--;
}
}
}
main();

View File

@@ -1,3 +1,3 @@
Original source downloaded [from Vintage Basic](http://www.vintage-basic.net/games.html)
Conversion to [Pascal](https://en.wikipedia.org/wiki/Pascal_(programming_language))
Conversion to [Perl](https://www.perl.org/)

Some files were not shown because too many files have changed in this diff Show More