From f2a40617c55223eb12c3429bf013365becee6f6e Mon Sep 17 00:00:00 2001 From: Renaud Fivet Date: Sun, 12 May 2024 16:47:38 +0800 Subject: [PATCH] Add 1CHECK, BATNUM, CRAPS, GOMOKO. --- dec/1CHECK.BAS | 85 +++++++++++++++++++++++++++++++++++++ dec/BATNUM.BAS | 89 +++++++++++++++++++++++++++++++++++++++ dec/CRAPS.BAS | 110 ++++++++++++++++++++++++++++++++++++++++++++++++ dec/GOMOKO.BAS | 50 ++++++++++++++++++++++ port/1CHECK.BAS | 87 ++++++++++++++++++++++++++++++++++++++ port/BATNUM.BAS | 89 +++++++++++++++++++++++++++++++++++++++ port/CRAPS.BAS | 110 ++++++++++++++++++++++++++++++++++++++++++++++++ port/GOMOKO.BAS | 51 ++++++++++++++++++++++ 8 files changed, 671 insertions(+) create mode 100644 dec/1CHECK.BAS create mode 100644 dec/BATNUM.BAS create mode 100644 dec/CRAPS.BAS create mode 100644 dec/GOMOKO.BAS create mode 100644 port/1CHECK.BAS create mode 100644 port/BATNUM.BAS create mode 100644 port/CRAPS.BAS create mode 100644 port/GOMOKO.BAS diff --git a/dec/1CHECK.BAS b/dec/1CHECK.BAS new file mode 100644 index 0000000..bbe59b3 --- /dev/null +++ b/dec/1CHECK.BAS @@ -0,0 +1,85 @@ +5 PRINT +10 PRINT "SOLITAIRE CHECKER PUZZLE BY DAVID AHL" +15 PRINT +20 PRINT "48 CHECKERS ARE PLACED ON THE 2 OUTSIDE SPACES OF A" +25 PRINT "STANDARD 64-SQUARE CHECKERBOARD. THE OBJECT IS TO" +30 PRINT "REMOVE AS MANY CHECKERS AS POSSIBLE BY DIAGONAL JUMPS" +35 PRINT "(AS IN STANDARD CHECKERS). USE THE NUMBERED BOARD TO" +40 PRINT "INDICATE THE SQUARE YOU WISH TO JUMP FROM AND TO. ON" +45 PRINT "THE BOARD PRINTED OUT ON EACH TURN '1' INDICATES A" +50 PRINT "CHECKER AND '0' AN EMPTY SQUARE. WHEN YOU HAVE NO" +55 PRINT "POSSIBLE JUMPS REMAINING, INPUT A '0' IN RESPONSE TO" +60 PRINT "QUESTION 'JUMP FROM ?'" +62 PRINT +63 PRINT "HERE IS THE NUMERICAL BOARD:" +66 PRINT +68 DIM A(64) +70 FOR J=1 TO 57 STEP 8 +72 B$="## ## ## ## ## ## ## ##" +74 PRINT USING B$,J,J+1,J+2,J+3,J+4,J+5,J+6,J+7 +76 NEXT J +77 PRINT +78 PRINT "AND HERE IS THE OPENING POSITION OF THE CHECKERS:" +79 PRINT +80 FOR J=1 TO 64 +82 A(J)=1 +84 NEXT J +86 FOR J=19 TO 43 STEP 8 +88 FOR I=J TO J+3 +90 A(I)=0 +92 NEXT I +94 NEXT J +96 M=0 +98 GOTO 340 +100 INPUT "JUMP FROM";F +105 IF F=0 THEN 500 +110 INPUT "TO";T +112 PRINT +118 REM *** CHECK LEGALITY OF MOVE +120 F1=INT((F-1)/8) +130 F2=F-8*F1 +140 T1=INT((T-1)/8) +150 T2=T-8*T1 +160 IF F1>7 THEN 230 +170 IF T1>7 THEN 230 +180 IF F2>8 THEN 230 +190 IF T2>8 THEN 230 +200 IF ABS(F1-T1)<>2 THEN 230 +210 IF ABS(F2-T2)<>2 THEN 230 +212 IF A((T+F)/2)=0 THEN 230 +215 IF A(F)=0 THEN 230 +220 IF A(T)=1 THEN 230 +225 GOTO 250 +230 PRINT "ILLEGAL MOVE. TRY AGAIN..." +240 GOTO 100 +245 REM *** UPDATE BOARD +250 A(T)=1 +260 A(F)=0 +270 A((T+F)/2)=0 +290 M=M+1 +310 REM *** PRINT BOARD +340 FOR J=1 TO 57 STEP 8 +350 FOR I=J TO J+7 +360 PRINT A(I); +370 NEXT I +380 PRINT +390 NEXT J +400 PRINT +410 GOTO 100 +490 REM *** END GAME SUMMARY +500 S=0 +510 FOR I=1 TO 64 +520 S=S+A(I) +530 NEXT I +535 PRINT +540 PRINT "YOU MADE"M"JUMPS AND HAD"S"PIECES" +550 PRINT "REMAINING ON THE BOARD." +560 PRINT +562 INPUT "TRY AGAIN";A$ +570 IF A$="YES" THEN 70 +575 IF A$="NO" THEN 600 +580 PRINT "PLEASE ANSWER 'YES' OR 'NO'." +590 GOTO 562 +600 PRINT +610 PRINT "O.K. HOPE YOU HAD FUN!" +999 END diff --git a/dec/BATNUM.BAS b/dec/BATNUM.BAS new file mode 100644 index 0000000..26fa970 --- /dev/null +++ b/dec/BATNUM.BAS @@ -0,0 +1,89 @@ +110 PRINT "THIS PROGRAM IS A 'BATTLE OF NUMBERS'" +120 PRINT"GAME, WHERE THE COMPUTER IS YOUR OPPONENT." +130 PRINT +140 PRINT"THE GAME STARTS WITH AN ASSUMED PILE OF OBJECTS. YOU AND" +150 PRINT"YOUR OPPONENT ALTERNATLY REMOVE OBJECTS FROM THE PILE." +160 PRINT"WINNING IS DEFINED IN ADVANCE AS TAKING THE LAST OBJECT" +170 PRINT"OR NOT. YOU CAN ALSO SPECIFY SOME OTHER BEGINNING" +180 PRINT"CONDITIONS. DON'T USE ZERO, HOWEVER, IN PLAYING THE GAME." +200 PRINT +210 GOTO 330 +220 FOR I=1 TO 10 +230 PRINT +240 NEXT I +330 PRINT"ENTER PILE SIZE:"; +340 INPUT N +350 IF N<>0 THEN 370 +360 GOTO 330 +370 IF N<>INT(N) THEN 220 +380 IF N<1 THEN 220 +390 PRINT "ENTER WIN OPTION - 1 TO TAKE LAST, 2 TO AVOID LAST: "; +400 INPUT M +410 IF M=1 THEN 430 +420 IF M<>2 THEN 390 +430 PRINT "ENTER MIN AND MAX: "; +440 INPUT 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 PRINT"ENTER START OPTION - 1 COMPUTER FIRST, 2 YOU FIRST:"; +500 INPUT S +510 IF S=1 THEN 530 +520 IF S<>2 THEN 490 +530 LET 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 LET Q=N +610 IF M=1 THEN 630 +620 LET Q=Q-1 +630 IF M=1 THEN 680 +640 IF N>A THEN 720 +650 LET W=1 +660 PRINT"COMPUTER TAKES";N;"AND LOSES." +670 RETURN +680 IF N>B THEN 720 +690 LET W=1 +700 PRINT "COMPUTER TAKES";N;"AND WINS." +710 RETURN +720 LET P=Q-C*INT(Q/C) +730 IF P>=A THEN 750 +740 LET P=A +750 IF P<=B THEN 770 +760 LET P=B +770 LET N=N-P +780 PRINT"COMPUTER TAKES";P;"AND LEAVES";N +790 LET W=0 +800 RETURN +810 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 LET 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 LET N=N-P +950 IF N<>0 THEN 1030 +960 IF M=1 THEN 1000 +970 PRINT"TOUGH LUCK, YOU LOSE." +980 LET W=1 +990 RETURN +1000 PRINT"CONGRATULATIONS, YOU WIN." +1010 LET W=1 +1020 RETURN +1030 IF N>=0 THEN 1060 +1040 LET N=N+P +1050 GOTO 920 +1060 LET W=0 +1070 RETURN +1080 END diff --git a/dec/CRAPS.BAS b/dec/CRAPS.BAS new file mode 100644 index 0000000..5cb80b5 --- /dev/null +++ b/dec/CRAPS.BAS @@ -0,0 +1,110 @@ + 80 RANDOMIZE + 90 FOR I=1 TO 10\PRINT\NEXT I + 100 PRINT"THIS DEMONSTRATION SIMULATES A CRAP GAME WITH THE COMPUTER" + 110 PRINT"AS YOUR OPPONENT. THE RULES ARE SIMPLE:" + 120 PRINT + 130 PRINT" *A 7 OR 11 ON THE FIRST ROLL WINS" + 140 PRINT" *A 2, 3 OR 12 ON THE FIRST ROLL LOSES" + 150 PRINT + 160 PRINT"ANY OTHER NUMBER ROLLED BECOMES YOUR 'POINT'* YOU CONTINUE" + 170 PRINT"TO ROLL...IF YOU GET YOUR POINT, YOU WIN. IF YOU ROLL A 7," + 180 PRINT"YOU LOSE. THE DICE CHANGE HANDS WHEN THIS HAPPENS." + 185 PRINT "JUST BET $0 TO QUIT." + 190 PRINT + 200 PRINT + 210 LET Z=5*INT(10+11*RND(0)) + 215 PRINT "ARE YOU READY";\INPUT B$ + 216 IF B$="YES" THEN 220\IF B$="NO" THEN PRINT "I'LL REPEAT MYSELF THEN." + 217 GOTO 90 + 220 PRINT"SPLENDID......YOU ARE GIVEN ";Z;"DOLLARS TO PLAY WITH." + 230 PRINT + 240 PRINT + 250 IF N-2*INT(N/2)=0 THEN 310 + 260 LET W=-1 + 270 PRINT "I'LL ROLL FIRST....." + 280 PRINT + 290 PRINT + 300 GOTO 350 + 310 LET W=1 + 320 PRINT "YOU ROLL FIRST...." + 330 PRINT + 340 PRINT + 350 LET Q=0 + 360 PRINT "HOW MUCH DO YOU BET"; + 370 INPUT B + 380 PRINT + 390 IF B=INT(B) THEN 430 + 400 PRINT + 410 PRINT "NO COINS PERMITTED...JUST BILLS, PLEASE." + 420 GOTO 360 + 430 IF B=0 THEN 1090 + 440 IF B0 THEN 540 + 520 PRINT " I ROLL ";D1;"AND ";D2; + 530 GOTO 550 + 540 PRINT "YOU ROLL ";D1;"AND ";D2; + 550 IF Q<>1 THEN 860 + 560 IF (S-2)*(S-3)*(S-12)=0 THEN 640 + 570 IF (S-7)*(S-11)=0 THEN 710 + 580 IF W>0 THEN 610 + 590 PRINT "SO MY POINT IS";S + 600 GOTO 620 + 610 PRINT "SO YOUR POINT IS";S + 620 LET P=S + 630 GOTO 470 + 640 PRINT "AND CRAP OUT..." + 650 LET C=1 + 660 IF W>0 THEN 690 + 670 LET Z=Z+B + 680 GOTO 770 + 690 LET Z=Z-B + 700 GOTO 770 + 710 PRINT "AND PASS...." + 720 LET C=1 + 730 IF W>0 THEN 760 + 740 LET Z=Z-B + 750 GOTO 770 + 760 LET Z=Z+B + 770 PRINT + 780 IF Z<1 THEN 1060 + 790 PRINT "YOU NOW HAVE ";Z;"DOLLARS" + 800 IF C>0 THEN 830 + 810 PRINT "CHANGE DICE NOW..." + 820 PRINT + 830 LET W=W*C + 840 LET Q=0 + 850 GOTO 360 + 860 IF S<>7 THEN 940 + 870 PRINT "AND LOSE..." + 880 LET C=-1 + 890 IF W>0 THEN 920 + 900 LET Z=Z+B + 910 GOTO 770 + 920 LET Z=Z-B + 930 GOTO 770 + 940 IF S=P THEN 970 + 950 PRINT "...ROLL AGAIN." + 960 GOTO 470 + 970 IF W>0 THEN 1020 + 980 PRINT "AND MAKE MY POINT" + 990 LET C=1 +1000 LET Z=Z-B +1010 GOTO 770 +1020 PRINT "AND MAKE YOUR POINT" +1030 LET C=1 +1040 LET Z=Z+B +1050 GOTO 770 +1060 PRINT +1070 PRINT "YOU HAVE RUN OUT OF MONEY....SORRY ABOUT THAT." +1080 GOTO 1110 +1090 PRINT "THANKS FOR THE GAME. AND CONGRATULATIONS" +1100 PRINT "FOR BEING ABLE TO QUIT WHILE YOU WERE AHEAD." +1110 PRINT\PRINT\PRINT +1120 CHAIN$ "DEMOES" +1130 END diff --git a/dec/GOMOKO.BAS b/dec/GOMOKO.BAS new file mode 100644 index 0000000..11f4557 --- /dev/null +++ b/dec/GOMOKO.BAS @@ -0,0 +1,50 @@ +10 PRINT\PRINT "WELCOME TO THE ORIENTAL GAME OF GOMOKO" +20 PRINT\PRINT "THE GAME IS PLAYED ON AN N BY N GRID OF A SIZE" +30 PRINT "THAT YOU SPECIFY. DURING YOUR PLAY, YOU MAY COVER ONE GRID" +40 PRINT "INTERSECTION WITH A MARKER. THE OBJECT OF THE GAME IS TO GET" +50 PRINT "5 ADJACENT MARKERS IN A ROW -- HORIZONTALLY, VERTICALLY, OR" +60 PRINT "ALONG EITHER DIAGONAL. ON THE BOARD DIAGRAM, YOUR MOVES ARE" +70 PRINT "MARKED WITH A '1', AND THE COMPUTER MOVES WITH A '2'." +80 PRINT\PRINT "THE COMPUTER DOES NOT KEEP TRACK OF WHO HAS WON." +90 PRINT "TO END THE GAME, TYPE '-1,-1' FOR YOUR MOVE"\PRINT +110 PRINT "WHAT IS YOUR BOARD SIZE (MIN =7, MAX = 19)";\INPUT N +115 IF N>6 THEN 117 +116 GOTO 120 +117 IF N<20 THEN 300 +120 PRINT "I SAID, THE MINIMUM SIZE IS 7, AND THE MAXIMUM IS 19."\GOTO 110 +210 FOR I=1 TO N\FOR J=1 TO N\A(X,Y)=0\NEXT J\NEXT I +300 PRINT\PRINT "WE ALTERNATE MOVES. YOU GO FIRST..."\PRINT +310 PRINT "YOUR PLAY (I,J)";\INPUT I,J +320 IF I=-1 THEN 980 +330 X=I\Y=J\GOSUB 910\IF L=1 THEN 410 +340 PRINT "ILLEGAL MOVE. TRY AGAIN..."\GOTO 310 +410 IF A(I,J)=0 THEN 440 +420 PRINT "SQUARE OCCUPIED. TRY AGAIN..."\GOTO 310 +440 A(I,J)=1 +500 REM *** COMPUTER TRIES AN 'INTELLIGENT' MOVE *** +510 FOR E=-1 TO 1\ FOR F=-1 TO 1\ IF E+F-E*F=0 THEN 590 +540 LET X=I+E\Y=J+F\GOSUB 910 +570 IF L=0 THEN 590 +580 IF A(X,Y)=1 THEN 710 +590 NEXT F\NEXT E +600 REM *** COMPUTER TRIES A RANDOM MOVE *** +610 LET X=INT(N*RND(0)+1)\LET Y=INT(N*RND(0)+1)\GOSUB 910\IF L=0 THEN 610 +650 IF A(X,Y)<>0 THEN 610 +660 A(X,Y)=2\GOSUB 810\GOTO 310 +710 X=I-E\Y=J-F\GOSUB 910 +750 IF L=0 THEN 610 +760 GOTO 650 +800 REM *** PRINT THE BOARD *** +810 FOR I=1 TO N\FOR J=1 TO N\PRINT A(I,J); +840 NEXT J\PRINT \NEXT I\PRINT \RETURN +900 REM *** CHECK WHETHER MOVE IS LEGAL *** +910 L=1\IF X<1 THEN 970 +920 IF X>N THEN 970 +930 IF Y<1 THEN 970 +940 IF Y>N THEN 970 +950 RETURN +970 L=0\RETURN +980 PRINT\PRINT "THANKS FOR THE GAME!!" +985 PRINT "PLAY AGAIN (1 FOR YES, 0 FOR NO)";\ INPUT Q +990 IF Q=1 THEN 110 +999 END diff --git a/port/1CHECK.BAS b/port/1CHECK.BAS new file mode 100644 index 0000000..c13238f --- /dev/null +++ b/port/1CHECK.BAS @@ -0,0 +1,87 @@ + 5 PRINT + 10 PRINT "SOLITAIRE CHECKER PUZZLE BY DAVID AHL" + 15 PRINT + 20 PRINT "48 CHECKERS ARE PLACED ON THE 2 OUTSIDE SPACES OF A" + 25 PRINT "STANDARD 64-SQUARE CHECKERBOARD. THE OBJECT IS TO" + 30 PRINT "REMOVE AS MANY CHECKERS AS POSSIBLE BY DIAGONAL JUMPS" + 35 PRINT "(AS IN STANDARD CHECKERS). USE THE NUMBERED BOARD TO" + 40 PRINT "INDICATE THE SQUARE YOU WISH TO JUMP FROM AND TO. ON" + 45 PRINT "THE BOARD PRINTED OUT ON EACH TURN '1' INDICATES A" + 50 PRINT "CHECKER AND '0' AN EMPTY SQUARE. WHEN YOU HAVE NO" + 55 PRINT "POSSIBLE JUMPS REMAINING, INPUT A '0' IN RESPONSE TO" + 60 PRINT "QUESTION 'JUMP FROM ?'" + 62 PRINT + 63 PRINT "HERE IS THE NUMERICAL BOARD:" + 66 PRINT + 68 DIM A(64) + 70 FOR J=1 TO 57 STEP 8 + 72 FOR I=0 TO 7 + 73 PRINT TAB(4*I);J+I; + 74 NEXT I + 75 PRINT + 76 NEXT J + 77 PRINT + 78 PRINT "AND HERE IS THE OPENING POSITION OF THE CHECKERS:" + 79 PRINT + 80 FOR J=1 TO 64 + 82 A(J)=1 + 84 NEXT J + 86 FOR J=19 TO 43 STEP 8 + 88 FOR I=J TO J+3 + 90 A(I)=0 + 92 NEXT I + 94 NEXT J + 96 M=0 + 98 GOTO 340 + 100 PRINT "JUMP FROM";\INPUT F + 105 IF F=0 THEN 500 + 110 PRINT "TO";\INPUT T + 112 PRINT + 118 REM *** CHECK LEGALITY OF MOVE + 120 F1=INT((F-1)/8) + 130 F2=F-8*F1 + 140 T1=INT((T-1)/8) + 150 T2=T-8*T1 + 160 IF F1>7 THEN 230 + 170 IF T1>7 THEN 230 + 180 IF F2>8 THEN 230 + 190 IF T2>8 THEN 230 + 200 IF ABS(F1-T1)<>2 THEN 230 + 210 IF ABS(F2-T2)<>2 THEN 230 + 212 IF A((T+F)/2)=0 THEN 230 + 215 IF A(F)=0 THEN 230 + 220 IF A(T)=1 THEN 230 + 225 GOTO 250 + 230 PRINT "ILLEGAL MOVE. TRY AGAIN..." + 240 GOTO 100 + 245 REM *** UPDATE BOARD + 250 A(T)=1 + 260 A(F)=0 + 270 A((T+F)/2)=0 + 290 M=M+1 + 310 REM *** PRINT BOARD + 340 FOR J=1 TO 57 STEP 8 + 350 FOR I=J TO J+7 + 360 PRINT A(I); + 370 NEXT I + 380 PRINT + 390 NEXT J + 400 PRINT + 410 GOTO 100 + 490 REM *** END GAME SUMMARY + 500 S=0 + 510 FOR I=1 TO 64 + 520 S=S+A(I) + 530 NEXT I + 535 PRINT + 540 PRINT "YOU MADE"M"JUMPS AND HAD"S"PIECES" + 550 PRINT "REMAINING ON THE BOARD." + 560 PRINT + 562 PRINT "TRY AGAIN";\INPUT A$ + 570 IF A$="YES" THEN 70 + 575 IF A$="NO" THEN 600 + 580 PRINT "PLEASE ANSWER 'YES' OR 'NO'." + 590 GOTO 562 + 600 PRINT + 610 PRINT "O.K. HOPE YOU HAD FUN!" + 999 END diff --git a/port/BATNUM.BAS b/port/BATNUM.BAS new file mode 100644 index 0000000..afa98e4 --- /dev/null +++ b/port/BATNUM.BAS @@ -0,0 +1,89 @@ + 110 PRINT "THIS PROGRAM IS A 'BATTLE OF NUMBERS'" + 120 PRINT"GAME, WHERE THE COMPUTER IS YOUR OPPONENT." + 130 PRINT + 140 PRINT"THE GAME STARTS WITH AN ASSUMED PILE OF OBJECTS. YOU AND" + 150 PRINT"YOUR OPPONENT ALTERNATLY REMOVE OBJECTS FROM THE PILE." + 160 PRINT"WINNING IS DEFINED IN ADVANCE AS TAKING THE LAST OBJECT" + 170 PRINT"OR NOT. YOU CAN ALSO SPECIFY SOME OTHER BEGINNING" + 180 PRINT"CONDITIONS. DON'T USE ZERO, HOWEVER, IN PLAYING THE GAME." + 200 PRINT + 210 GOTO 330 + 220 FOR I=1 TO 10 + 230 PRINT + 240 NEXT I + 330 PRINT"ENTER PILE SIZE:"; + 340 INPUT N + 350 IF N<>0 THEN 370 + 360 GOTO 330 + 370 IF N<>INT(N) THEN 220 + 380 IF N<1 THEN 220 + 390 PRINT "ENTER WIN OPTION - 1 TO TAKE LAST, 2 TO AVOID LAST: "; + 400 INPUT M + 410 IF M=1 THEN 430 + 420 IF M<>2 THEN 390 + 430 PRINT "ENTER MIN AND MAX: "; + 440 INPUT 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 PRINT"ENTER START OPTION - 1 COMPUTER FIRST, 2 YOU FIRST:"; + 500 INPUT S + 510 IF S=1 THEN 530 + 520 IF S<>2 THEN 490 + 530 LET 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 LET Q=N + 610 IF M=1 THEN 630 + 620 LET Q=Q-1 + 630 IF M=1 THEN 680 + 640 IF N>A THEN 720 + 650 LET W=1 + 660 PRINT"COMPUTER TAKES";N;"AND LOSES." + 670 RETURN + 680 IF N>B THEN 720 + 690 LET W=1 + 700 PRINT "COMPUTER TAKES";N;"AND WINS." + 710 RETURN + 720 LET P=Q-C*INT(Q/C) + 730 IF P>=A THEN 750 + 740 LET P=A + 750 IF P<=B THEN 770 + 760 LET P=B + 770 LET N=N-P + 780 PRINT"COMPUTER TAKES";P;"AND LEAVES";N + 790 LET W=0 + 800 RETURN + 810 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 LET 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 LET N=N-P + 950 IF N<>0 THEN 1030 + 960 IF M=1 THEN 1000 + 970 PRINT"TOUGH LUCK, YOU LOSE." + 980 LET W=1 + 990 RETURN +1000 PRINT"CONGRATULATIONS, YOU WIN." +1010 LET W=1 +1020 RETURN +1030 IF N>=0 THEN 1060 +1040 LET N=N+P +1050 GOTO 920 +1060 LET W=0 +1070 RETURN +1080 END diff --git a/port/CRAPS.BAS b/port/CRAPS.BAS new file mode 100644 index 0000000..5b6a688 --- /dev/null +++ b/port/CRAPS.BAS @@ -0,0 +1,110 @@ + 80 RANDOMIZE + 90 FOR I=1 TO 10\PRINT\NEXT I + 100 PRINT"THIS DEMONSTRATION SIMULATES A CRAP GAME WITH THE COMPUTER" + 110 PRINT"AS YOUR OPPONENT. THE RULES ARE SIMPLE:" + 120 PRINT + 130 PRINT" *A 7 OR 11 ON THE FIRST ROLL WINS" + 140 PRINT" *A 2, 3 OR 12 ON THE FIRST ROLL LOSES" + 150 PRINT + 160 PRINT"ANY OTHER NUMBER ROLLED BECOMES YOUR 'POINT'* YOU CONTINUE" + 170 PRINT"TO ROLL...IF YOU GET YOUR POINT, YOU WIN. IF YOU ROLL A 7," + 180 PRINT"YOU LOSE. THE DICE CHANGE HANDS WHEN THIS HAPPENS." + 185 PRINT "JUST BET $0 TO QUIT." + 190 PRINT + 200 PRINT + 210 LET Z=5*INT(10+11*RND(0)) + 215 PRINT "ARE YOU READY";\INPUT B$ + 216 IF B$="YES" THEN 220\IF B$<>"NO" THEN 215\PRINT "I'LL REPEAT MYSELF THEN." + 217 GOTO 90 + 220 PRINT"SPLENDID......YOU ARE GIVEN ";Z;"DOLLARS TO PLAY WITH." + 230 PRINT + 240 PRINT + 250 IF N-2*INT(N/2)=0 THEN 310 + 260 LET W=-1 + 270 PRINT "I'LL ROLL FIRST....." + 280 PRINT + 290 PRINT + 300 GOTO 350 + 310 LET W=1 + 320 PRINT "YOU ROLL FIRST...." + 330 PRINT + 340 PRINT + 350 LET Q=0 + 360 PRINT "HOW MUCH DO YOU BET"; + 370 INPUT B + 380 PRINT + 390 IF B=INT(B) THEN 430 + 400 PRINT + 410 PRINT "NO COINS PERMITTED...JUST BILLS, PLEASE." + 420 GOTO 360 + 430 IF B<=0 THEN 1090 + 440 IF B0 THEN 540 + 520 PRINT " I ROLL ";D1;"AND ";D2; + 530 GOTO 550 + 540 PRINT "YOU ROLL ";D1;"AND ";D2; + 550 IF Q<>1 THEN 860 + 560 IF (S-2)*(S-3)*(S-12)=0 THEN 640 + 570 IF (S-7)*(S-11)=0 THEN 710 + 580 IF W>0 THEN 610 + 590 PRINT "SO MY POINT IS";S + 600 GOTO 620 + 610 PRINT "SO YOUR POINT IS";S + 620 LET P=S + 630 GOTO 470 + 640 PRINT "AND CRAP OUT..." + 650 LET C=1 + 660 IF W>0 THEN 690 + 670 LET Z=Z+B + 680 GOTO 770 + 690 LET Z=Z-B + 700 GOTO 770 + 710 PRINT "AND PASS...." + 720 LET C=1 + 730 IF W>0 THEN 760 + 740 LET Z=Z-B + 750 GOTO 770 + 760 LET Z=Z+B + 770 PRINT + 780 IF Z<1 THEN 1060 + 790 PRINT "YOU NOW HAVE ";Z;"DOLLARS" + 800 IF C>0 THEN 830 + 810 PRINT "CHANGE DICE NOW..." + 820 PRINT + 830 LET W=W*C + 840 LET Q=0 + 850 GOTO 360 + 860 IF S<>7 THEN 940 + 870 PRINT "AND LOSE..." + 880 LET C=-1 + 890 IF W>0 THEN 920 + 900 LET Z=Z+B + 910 GOTO 770 + 920 LET Z=Z-B + 930 GOTO 770 + 940 IF S=P THEN 970 + 950 PRINT "...ROLL AGAIN." + 960 GOTO 470 + 970 IF W>0 THEN 1020 + 980 PRINT "AND MAKE MY POINT" + 990 LET C=1 +1000 LET Z=Z-B +1010 GOTO 770 +1020 PRINT "AND MAKE YOUR POINT" +1030 LET C=1 +1040 LET Z=Z+B +1050 GOTO 770 +1060 PRINT +1070 PRINT "YOU HAVE RUN OUT OF MONEY....SORRY ABOUT THAT." +1080 GOTO 1110 +1090 PRINT "THANKS FOR THE GAME. AND CONGRATULATIONS" +1100 PRINT "FOR BEING ABLE TO QUIT WHILE YOU WERE AHEAD." +1110 PRINT\PRINT\PRINT +1120 CHAIN "DEMOES" +1130 END diff --git a/port/GOMOKO.BAS b/port/GOMOKO.BAS new file mode 100644 index 0000000..6eff209 --- /dev/null +++ b/port/GOMOKO.BAS @@ -0,0 +1,51 @@ + 10 PRINT\PRINT "WELCOME TO THE ORIENTAL GAME OF GOMOKO" + 20 PRINT\PRINT "THE GAME IS PLAYED ON AN N BY N GRID OF A SIZE" + 30 PRINT "THAT YOU SPECIFY. DURING YOUR PLAY, YOU MAY COVER ONE GRID" + 40 PRINT "INTERSECTION WITH A MARKER. THE OBJECT OF THE GAME IS TO GET" + 50 PRINT "5 ADJACENT MARKERS IN A ROW -- HORIZONTALLY, VERTICALLY, OR" + 60 PRINT "ALONG EITHER DIAGONAL. ON THE BOARD DIAGRAM, YOUR MOVES ARE" + 70 PRINT "MARKED WITH A '1', AND THE COMPUTER MOVES WITH A '2'." + 80 PRINT\PRINT "THE COMPUTER DOES NOT KEEP TRACK OF WHO HAS WON." + 90 PRINT "TO END THE GAME, TYPE '-1,-1' FOR YOUR MOVE"\PRINT + 100 DIM A(16,16)\RANDOMIZE + 110 PRINT "WHAT IS YOUR BOARD SIZE (MIN =7, MAX = 16)";\INPUT N + 115 IF N>6 THEN 117 + 116 GOTO 120 + 117 IF N<17 THEN 200 + 120 PRINT "I SAID, THE MINIMUM SIZE IS 7, AND THE MAXIMUM IS 16."\GOTO 110 + 200 FOR I=1 TO N\FOR J=1 TO N\A(I,J)=0\NEXT J\NEXT I + 300 PRINT\PRINT "WE ALTERNATE MOVES. YOU GO FIRST..."\PRINT + 310 PRINT "YOUR PLAY (I,J)";\INPUT I,J + 320 IF I=-1 THEN 980 + 330 X=I\Y=J\GOSUB 910\IF L=1 THEN 410 + 340 PRINT "ILLEGAL MOVE. TRY AGAIN..."\GOTO 310 + 410 IF A(I,J)=0 THEN 440 + 420 PRINT "SQUARE OCCUPIED. TRY AGAIN..."\GOTO 310 + 440 A(I,J)=1 + 500 REM *** COMPUTER TRIES AN 'INTELLIGENT' MOVE *** + 510 FOR E=-1 TO 1\ FOR F=-1 TO 1\ IF E+F-E*F=0 THEN 590 + 540 LET X=I+E\Y=J+F\GOSUB 910 + 570 IF L=0 THEN 590 + 580 IF A(X,Y)=1 THEN 710 + 590 NEXT F\NEXT E + 600 REM *** COMPUTER TRIES A RANDOM MOVE *** + 610 LET X=INT(N*RND(0)+1)\LET Y=INT(N*RND(0)+1)\GOSUB 910\IF L=0 THEN 610 + 650 IF A(X,Y)<>0 THEN 610 + 660 A(X,Y)=2\GOSUB 810\GOTO 310 + 710 X=I-E\Y=J-F\GOSUB 910 + 750 IF L=0 THEN 610 + 760 GOTO 650 + 800 REM *** PRINT THE BOARD *** + 810 FOR I=1 TO N\FOR J=1 TO N\PRINT A(I,J); + 840 NEXT J\PRINT \NEXT I\PRINT \RETURN + 900 REM *** CHECK WHETHER MOVE IS LEGAL *** + 910 L=1\IF X<1 THEN 970 + 920 IF X>N THEN 970 + 930 IF Y<1 THEN 970 + 940 IF Y>N THEN 970 + 950 RETURN + 970 L=0\RETURN + 980 PRINT\PRINT "THANKS FOR THE GAME!!" + 985 PRINT "PLAY AGAIN (1 FOR YES, 0 FOR NO)";\ INPUT Q + 990 IF Q=1 THEN 110 + 999 END