1
0
mirror of https://github.com/rfivet/BCG101.git synced 2025-07-26 11:24:36 -04:00
BCG101/port/DOGS.BAS
ssolle be491c715a
Biggest batch of fixes (#8)
* Update CRAPS.BAS

* Update CRAPS.BAS

Aligned with original listing

* Update CUBE.BAS

* Update CUBE.BAS

* Update DICE.BAS

* Update DICE.BAS

Very minor change to align more closely with original listing.

* Update DIGITS.BAS

* Update DIGITS.BAS

* Update DIGITS.BAS

* Update DOGS.BAS

* Update DOGS.BAS

Aligned with original program. I chose to not include the lack of dollar sign on line 315, due to it being present on line 300, thus making it most likely a typo, even though it's not necessarily objectively "wrong".

* Update EVEN.BAS

* Update EVEN.BAS

Aligned with original program. Using "O" on line 450 seems to work since undefined variables default to zero

* Update EVEN1.BAS

* Update EVEN1.BAS

* Update FIPFOP.BAS

* Update FIPFOP.BAS

* Update FIPFOP.BAS

* Update FOOTBL.BAS

Fixed a couple of bugs and typos. Transcription accuracy confirmed through https://bitsavers.org/pdp-11.trailing-edge.com/rsts11/rsts-11-013/FOOTBL.BAS

* Update FOOTBL.BAS

* Update FOTBAL.BAS

Bug fixed on line 1035 with the arrow pointing the wrong way, plus other typos.

* Update FOTBAL.BAS

Bug on line 1035 fixed + alignment with original listing

* Update FURS.BAS

* Update FURS.BAS

* Update GOMOKO.BAS

* Update GOMOKO.BAS

* Update GUESS.BAS

* Update GUESS.BAS

* Update GUNER1.BAS

On line 220, it looks to be a comma instead of a period.

* Update GUNER1.BAS

* Update HANG.BAS

* Update HANG.BAS

* Update HANG.BAS

* Update HELLO.BAS

* Update HELLO.BAS

Same changes as dec/, except for encyclopaedia.

* Update HI-Q.BAS

* Update HI-Q.BAS

* Update HMRABI.BAS

* Update HOCKEY.BAS

Added missing lines.

* Update HOCKEY.BAS

Added missing lines and fixed THEN-line number on line 196. Code is pretty much copy-pasted from the book, but it's compatible with EduSystem 50 BASIC as far as I know.

* Update HOCKEY.BAS

* Update HORSES.BAS

* Update HORSES.BAS

* Update HURKLE.BAS

* Update HURKLE.BAS

* Update HURKLE.BAS

Added a space to the beginning of every line to align with rfivet's original formatting of the port

* Update HURKLE.BAS

* Update KINEMA.BAS

* Update KINEMA.BAS

* Update LIFE.BAS

* Update MUGWMP.BAS

* Update MUGWMP.BAS

* Update MUGWMP.BAS

* Update NICOMA.BAS

* Update NICOMA.BAS

* Update NIM.BAS

* Update NIM.BAS

* Update NUMBER.BAS

* Update NUMBER.BAS

* Update ORBIT.BAS

I am nearly 100% certain that this ASCII art is now accurate, but cannot be bothered to triple-check it any further.

* Update ORBIT.BAS

* Update PIZZA.BAS

* Update PIZZA.BAS

* Update POET.BAS

* Update POETRY.BAS

* Update POETRY.BAS

One more space caught by checking https://bitsavers.org/pdp-11.trailing-edge.com/rsts11/rsts-11-014/POETRY.BAS

* Update POETRY.BAS

* Update POKER.BAS

* Update QUBIC.BAS

* Update QUEEN.BAS

* Update REVRSE.BAS

* Update REVRSE.BAS

* Update ROCKET.BAS

* Update ROCKET.BAS

* Update ROCKSP.BAS

* Update ROCKSP.BAS

* Update ROCKT1.BAS

* Update ROCKT1.BAS

* Update ROCKT2.BAS

* Update ROCKT2.BAS

A direct copy of my fixed transcription in dec/. "Travelling" with two L's is one of the two correct spellings of the word, so there is no need to change it.

* Update ROULET.BAS

* Update RUSROU.BAS

* Update RUSROU.BAS

Copied directly from dec/

* Update SALVO.BAS

* Update SALVO.BAS

* Update SALVO.BAS

Added NOEXTEND back

* Update SALVO1.BAS

* Update SALVO1.BAS

Same file as in dec/. Seems to work on TSS/8.

* Update SLOTS.BAS

* Update SLOTS.BAS

* Update SNOOPY.ASC

ASCII art was accurate, just aligned him to the left side.

* Rename SNOOPY.ASC to SNOPY1.ASC

Renamed to make room for the first ASCII art in the book.

* Create SNOOPY.ASC

Yes, he is very flattened. That's just how it is.

* Update SPLAT.BAS

* Update STARS.BAS

* Update STARS.BAS

* Update SPACWR.BAS

* Update SALVO1.BAS

Copied from LIST to fix formatting.

* Update RUSROU.BAS

Copied from LIST to fix formatting.

* Update ROCKT2.BAS

Copied from LIST to fix formatting.

* Update STOCK.BAS

* Update STOCK.BAS

* Update SYNONM.BAS

* Update SYNONM.BAS

* Update BASKET.BAS

Copied from LIST to fix formatting.

* Update SYNONM.BAS

* Update TARGET.BAS

* Update TARGET.BAS

* Update TICTAC.BAS

* Update TICTAC.BAS

Looking at the sample run in the book, these should be colons, not semicolons.

* Update TOWER.BAS

* Update TRAP.BAS

* Update TRAP.BAS

* Update WAR.BAS

* Update WAR.BAS

* Update WAR-2.BAS

* Update WAR-2.BAS

* Update WORD.BAS

* Update WORD.BAS

* Update YAHTZE.BAS

* Update 1CHECK.BAS

* Update 1CHECK.BAS

* Update HELLO.BAS

Copied from LIST command to fix formatting.
2025-03-27 14:45:11 +08:00

214 lines
6.2 KiB
QBasic

5 REM V.NAHIGIAN 8TH GRADE DOG RACE GAME
10 DIM S(10),C(10),J(20),W(10),A(10)
15 DIM N$(20),H$(10),P(20)
20 DIM Y(10),B(11),M5(20)
25 RECORD V
30 RECORD X
35 OPEN 8,"WINS"\OPEN 9,"LOSSES"
40 IF S9=6 THEN 70\I1=0\FOR I=1 TO 10\GET 8,25,I1
41 IF V=INT(V) THEN 43
42 I=11\V9=999\GOTO 44
43 V9=V9+V
44 NEXT I
45 IF V9<25 THEN 60\IF V9>200 THEN 55
50 GOTO 100
55 UNSAVE 8\UNSAVE 9\V9=0
60 PRINT "PLEASE WAIT, DISREGARD THE 25 BELLS"
65 PRINT\PRINT\PRINT\PRINT\PRINT\S9=6\GOTO 35
70 I1=0\I2=0\V=0\X=0\FOR I=1 TO 10\PUT 8,25,I1\PUT 9,30,I2\NEXT I
71 FOR I=1 TO 25-V9\RANDOMIZE\H=INT(10*RND(X))\H1=H\GET 8,25,H1
75 V=V+1\H1=H\PUT 8,25,H1\FOR T=0 TO 9\IF H=T THEN 85
80 T1=T\GET 9,30,T1\X=X+1\T1=T\PUT 9,30,T1
85 NEXT T
90 PRINT CHR$(135);
95 NEXT I
100 PRINT\PRINT\PRINT
105 PRINT TAB(10);"WELCOME TO ROOK-A-DAY RACE TRACK!!!"
110 PRINT\PRINT
115 PRINT "DO YOU WANT THE INSTRUCTIONS";\INPUT I$\GOTO 215
120 PRINT " THIS IS A DOG RACE GAME. THERE ARE 10 DOGS"
125 PRINT "WHICH RUN IN THIS RACE. THE WINS AND LOSSES OF"
130 PRINT "EACH DOG ARE RECORDED SO THAT EVEN AFTER YOU"
135 PRINT "LOG-OFF, THE WINS AND LOSSES OF THE DOGS WILL STILL"
140 PRINT "BE RECORDED."
145 PRINT " THE WINNER OF THE RACE WILL BE DETERMINED BY HOW"
150 PRINT "MANY WINS AND LOSSES EACH DOG HAS. AFTER THE WINS AND"
155PRINT "LOSSES OF EACH DOG HAVE BEEN POSTED, YOU WILL HAVE A "
160 PRINT "CHANCE TO BET. NO MORE THAN 19 PEOPLE ARE ALLOWED"
165 PRINT "TO BET IN THIS GAME. WHEN BETTING, YOU CANNOT BET OVER"
170 PRINT "$500.00 AND MUST BET AT LEAST $2.00. MORE THAN 1"
175 PRINT "PERSON MAY BET ON THE SAME DOG. AFTER THE BETS"
180 PRINT "ARE MADE THE ODDS WILL BE FIGURED AND POSTED AND THE "
185 PRINT "RACE WILL BEGIN."
190 PRINT " THE STRATEGY OF THIS GAME IS TO PICK THE WINNER"
195 PRINT "IN SUCH A WAY THAT THE ODDS ON THAT DOG ARE GOOD"
200 PRINT "IN YOUR FAVOR."
210 PRINT\PRINT TAB(10);"GOOD LUCK!!"\GOTO 220
215 IF I$="YES" THEN 120\GOTO 220
220 GOSUB 225\GOTO 255
225 PRINT\PRINT\PRINT "DOG","NUMBER","WINS","LOSSES"
230 I1=0\I2=0\FOR I=1 TO 10
235 READ H$(I)
240 GET 8,25,I1\GET 9,30,I2
245 PRINT H$(I),I,V,X
250 NEXT I\RETURN
255 PRINT\PRINT\PRINT "HOW MANY WISH TO BET";
260 INPUT Q\IF Q<20 THEN 270
265 PRINT "NO MORE THAN 19 ALLOWED"\PRINT\GOTO 255
270 FOR Z=1 TO Q
275 PRINT "BETTOR'S NAME";\INPUT N$(Z)
280 PRINT "DOG'S NUMBER";\INPUT J(Z)
285 PRINT "AND YOUR BET";\INPUT P(Z)
290 IF P(Z)<2 THEN 300\IF P(Z)>500 THEN 315
295 PRINT\NEXT Z\GOTO 325
300 PRINT "YOU MUST BET AT LEAST $2.00. TRY AGAIN "N$(Z)
305 PRINT "YOUR BET";\INPUT P(Z)
310 GOTO 290
315 PRINT "YOU CAN'T BET OVER $500.00 "N$(Z)" TRY AGAIN"
320 GOTO 305
325 FOR I=1 TO 10
330 B(11)=B(11)+P(I)
335 NEXT I
340 FOR I=1 TO Q 'AMOUNT OF PEOPLE PLAYING
345 FOR I3=1 TO 10'DOGS
350 IF J(I)<>I3 THEN 360
355 A(I3)=A(I3)+P(I)
360 NEXT I3
365 NEXT I
370 FOR I=1 TO 10
375 IF A(I)>=2 THEN 390
380 B(I)=INT(B(11)*RND(X))+1
385 GOTO 395
390 B(I)=INT((B(11)-A(I))/(A(I)-(.17*A(I))))
395 IF B(I)<=2 THEN 405
400 GOTO 410
405 B(I)=2
410 NEXT I
415 PRINT
420 PRINT "DOG","NUMBER","ODDS"
425 FOR I=1 TO 10
430 PRINT H$(I),I,B(I)": 1"
435 NEXT I
440 I1=0\I2=0\FOR I=1 TO 10
445 GET 8,25,I1\GET 9,30,I2\IF V+X<=0 THEN 470
450 RANDOMIZE
455 Y(I)=INT(V/ABS((V+X))+INT(V*RND(X))+1)
460 IF Y(I)<7 THEN 470
465 GOTO 475
470 Y(I)=INT(7*RND(X))+1
475 NEXT I
480 FOR R=1 TO 10
485 S(R)=0
490 NEXT R
495 PRINT
500 PRINT TAB(2);"-1 2 3 4 5 6 7 8 9 10","AND THEY'RE OFF!!!"
505 PRINT CHR$(135);CHR$(135);CHR$(135);CHR$(135);CHR$(135);
510 FOR R=1 TO 10
515 RANDOMIZE
520 C(R)=INT(Y(R)*RND(X))+1
525 S(R)=S(R)+C(R)
530 NEXT R
535 PRINT TAB(2);"XXXXXXXXSTARTXXXXXXXX"
540 FOR P=1 TO 20
545 FOR R=1 TO 10
550 IF P=S(R) THEN 580
555 IF S(R)>20 THEN 590
560 NEXT R
565 PRINT
570 NEXT P
575 GOTO 625
580 PRINT TAB(R*2);R;CHR$(141)
585 GOTO 560
590 IF W(1)<>0 THEN 605
595 W(1)=R
600 GOTO 560
605 D=2
610 W(D)=R
615 D=D+1
620 GOTO 560
625 PRINT TAB(2);"XXXXXXXFINISHXXXXXXXX"
630 IF W(1)=0 THEN 510
685 PRINT " ";
690 FOR I=2 TO 22\PRINT "*";\NEXT I\PRINT
695 IF D<=1 THEN 735
700 G=W(1)
705 FOR I2=1 TO D
710 IF S(W(I2))<S(W(I2+1)) THEN 725
715 NEXT I2
720 GOTO 735
725 G=W(I2+1)
730 GOTO 715
735 PRINT
740 PRINT
745 PRINT "AND THE WINNER IS DOG NUMBER";G,H$(G)
750 PRINT\GOTO 970
755 RESTORE
760 FOR E=1 TO Q
765 IF G=J(E) THEN 790
770 M5(E)=M5(E)-P(E)
775 N7=N7+P(E)
780 NEXT E
785 GOTO 835
790 IF B(G)=2 THEN 800
795 GOTO 805
800 B(G)=1
805 M=INT(100*(B(G)*P(E)+P(E))/100)
810 PRINT "CONGRATULATION "N$(E)" YOU HAVE WON $";M
815 M5(E)=M5(E)+M
820 N7=N7-M
825 PRINT
830 GOTO 780
835 PRINT "WOULD YOU AVID RACE FANS LIKE TO PLAY AGAIN";
840 INPUT L$
845 IF L$="YES" THEN 870
850 PRINT\PRINT "PERSON","AMOUNT"\FOR I=1 TO Q
855 PRINT N$(I),M5(I)\NEXT I\PRINT "COMP",N7
860 FOR I=1 TO 5\PRINT\NEXT I\GOTO 1085
865 GOTO 1085
870 FOR K=1 TO 10
875 A(K)=0
880 S(K)=0
885 W(K)=0
890 C(K)=0
895 J(K)=0
900 B(11)=0
905 B(K)=0
910 NEXT K\GOSUB 225
915 PRINT "ANY NEWCOMERS";\INPUT C$
920 FOR I=1 TO Q
925 PRINT N$(I)" YOUR DOGS NUMBER";\INPUT J(I)
930 PRINT "AND YOUR BET";\INPUT P(I)
935 IF P(I)<2 THEN 950\IF P(I)>500 THEN 960\NEXT I
940 IF C$="NO" THEN 325
945 GOTO 1025
950 PRINT "YOU MUST BET AT LEAST $2.00 "N$(I) " YOUR BET";
955 INPUT P(I)\GOTO 935
960 PRINT "YOU CAN'T BET OVER $500.00 "N$(I)" TRY AGAIN"
965 GOTO 930
970 FOR I=1 TO 10
975 I1=I-1\GET 8,25,I1\I2=I-1\GET 9,30,I2
980 IF I=G THEN 995
985 X=X+1\I2=I-1\PUT 9,30,I2
990 GO TO 1000
995 V=V+1\I1=I-1\PUT 8,25,I1
1000 NEXT I
1005 GOTO 755
1010 DATA "FASTER","ZELDA","SPEEDY","ZIFFLE","KILLER"
1015 DATA "BURBON","BUGZY","SNOOPY","LASSIE","WINNER"
1020 GOTO 1085
1025 PRINT\PRINT "HOW MANY NEWCOMERS";\Q4=0\INPUT J6\Q4=Q+J6
1030 IF Q4>20 THEN 1035\Q=Q4\Q4=0\GO TO 1040
1035 PRINT "NO MORE THAN 19 ALLOWED. YOU U NOW HAVE "Q\Q4=0\GOTO 1025
1040 FOR Z=I TO Q
1045 PRINT "BETTORS NAME";\INPUT N$(Z)
1050 PRINT "DOGS NUMBER";\INPUT J(Z)
1055 PRINT "AND YOUR BET";\INPUT P(Z)\IF P(Z)<2 THEN 1070
1060 IF P(Z)>500 THEN 1075
1065 PRINT\NEXT Z\GOTO 325
1070 PRINT "YOU MUST BET AT LEAST $2.00"\GOTO 1055
1075 PRINT "YOU CAN'T BET OVER $500.00"\GOTO 1055
1080 GOTO 325
1085 CLOSE 8\CLOSE 9
1090 REM
1095 END