1
0
mirror of https://github.com/rfivet/BCG101.git synced 2024-12-17 23:56:24 -05:00

Compare commits

..

2 Commits

Author SHA1 Message Date
80eca63a73 Add HORSES. 2024-06-04 13:16:19 +08:00
494edc598c Fix typos. 2024-06-04 13:15:36 +08:00
4 changed files with 226 additions and 2 deletions

View File

@ -116,7 +116,7 @@
11600 FOR F=1TOP
11700 IF R(F)=J THEN 12000
11800 NEXT F
11900 NEXTJ
11900 NEXT J
12000 LET K=F+P
12100 GOSUB 2300
12200 RETURN

112
dec/HORSES.BAS Normal file
View File

@ -0,0 +1,112 @@
1 DIM V(10),U(10),T(10),M(8),O(8),H(8),B(8),P(6)
2 RANDOMIZE \ PRINT "HORSE RACE"
3 PRINT "EXAMPLE OF BET; 1,2,200,0 ."
5 PRINT \ PRINT" SEVENTH - 1 MILE, 3 YR. OLDS POST 2:35"
6 PRINT
7 FOR I=1 TO 8
8 B(I)=I \ GOSUB 210
9 READ O(I) \ PRINT O(I)":1"
10 M(I)=(100+50*O(I)) / (O(I)+1)
11 NEXT I
12 PRINT
13 PRINT"ENTER HORSE(1-8);TO WIN,PLACE,SHOW(1,2,3);AND THE WAGER."
14 PRINT "AND 0 FOR NO MORE BETTING OR 1 OR MORE BETTING."
15 LET S = 0
16 PRINT
17 LET S = S + 1
18 PRINT"BET NO. ";S;
19 INPUT T(S),U(S),V(S),M
20 LET T(S)=ABS(INT(T(S)))
21 IF T(S)>8 THEN 26
22 IF T(S)<1 THEN 26
23 LET U(S)=ABS(INT(U(S)))
24 IF U(S)>3 THEN 26
25 IF U(S)>0 THEN 28
26 PRINT"HORSE NO. OR WIN-PLACE-SHOW IN ERROR" \ GO TO 18
28 IF V(S)<2 THEN 30
29 IF V(S)<=300 THEN 33
30 PRINT"BET MUST BE >$2 AND <$300, BET AGAIN";
31 INPUT V(S) \ GO TO 28
33 IF M = 1 THEN 17
35 PRINT \ PRINT" THEY'RE OFF AND RUNNING -" \ PRINT
36 FOR I=1 TO 8 \ H(I)=0 \ NEXT I
40 FOR K=1 TO 8
42 SLEEP 6
44 FOR J=1 TO 8
46 H(J)=H(J)+RND(0)*M(J)
48 NEXT J
52 FOR I=8 TO 1 STEP -1
54 FOR J=2 TO I
56 ON SGN(H(B(J-1))-H(B(J)))+2 GO TO 60,58,62
58 IF RND(0)>.5 THEN 62
60 Z=B(J-1) \ B(J-1)=B(J) \ B(J)=Z
62 NEXT J
64 NEXT I
68 PRINT \ PRINT " ";
70 ON K GOTO 72,74,76,78,80,82,84,86
72 PRINT "AS THEY BREAK FROM THE GATE" \ GO TO 88
74 PRINT "AT THE 1/4 MILE POLE" \ GO TO 88
76 PRINT "NEARING THE HALF MARK" \ GO TO 88
78 PRINT "MIDWAY IN THE RACE" \ GO TO 88
80 PRINT "AT 5/8 OF A MILE" \ GO TO 88
82 PRINT "ROUNDING THE TURN" \ GO TO 88
84 PRINT "COMING DOWN THE STRETCH" \ GO TO 88
86 PRINT " FINISH"
88 REM
90 GO SUB 200
92 NEXT K
96 PRINT \ PRINT \ PRINT "$2 MUTUELS PAID:"
98 PRINT " STRAIGHT PLACE SHOW"
100 K=0
102 FOR I=1 TO 3
104 GO SUB 215
106 FOR J=I TO 3
108 L=2*I+J-3 \ P(L)=1.5+.1*INT(.1*INT((4*O(B(I))/(J*(J+1))+RND(0))*100+5))
110 PRINT TAB(3+10*J); \ B=-16
112 FOR M=3 TO -1 STEP -1
114 P=INT(P(L)/(10^M))
116 P=P-10*INT(P/10)
117 IF P=0 THEN 118 \ B=0
118 PRINT CHR$(48+P+B);
138 IF M<>0 THEN 139 \ PRINT ".";
139 NEXT M
140 PRINT "0";
142 NEXT J
144 PRINT
146 NEXT I
150 PRINT \ Q=0
152 FOR J=1 TO S
154 PRINT "BET NO. "; J
156 P=0
158 FOR I=1 TO 8 \ H(B(I))=I \ NEXT I
160 IF U(J)<H(T(J)) THEN 166
162 P= .01*INT((V(J)*50)*P(U(J)+H(T(J))*2-3))
164 PRINT "YOU COLLECT" P "ON "; \ GO TO 172
166 IF H(T(J))>3 THEN 168 \ PRINT "NEXT TIME, BUY A SHOW"; \ GO TO 170
168 PRINT "TEAR UP YOUR";
170 PRINT " TICKET ON ";
172 I=0 \ B(0)=T(J) \ GOSUB 215 \ PRINT
174 Q=Q+P-V(J)
176 NEXT J
178 IF Q<0 THEN 182
180 PRINT "YOUR TOTAL WINNINGS AMOUNT TO $" Q \ STOP
182 PRINT "YOUR TOTAL LOSSES AMOUNT TO $" ABS(Q) \ STOP
200 PRINT "POS. HORSE LENGTHS BEHIND"
205 FOR I=1 TO 8
210 PRINT I;
215 ON B(I) GOTO 220,222,224,226,228,230,232,234
220 PRINT "MAN O'WAR "; \ GO TO 240
222 PRINT "CITATION "; \ GO TO 240
224 PRINT "WHIRLAWAY "; \ GO TO 240
226 PRINT "ASSAULT "; \ GO TO 240
228 PRINT "SEABISCUIT "; \ GO TO 240
230 PRINT "GALLANT FOX"; \ GO TO 240
232 PRINT "STYMIE "; \ GO TO 240
234 PRINT "COALTOWN ";
240 IF K=0 THEN 260
245 IF I>1 THEN 250 \ PRINT \ GO TO 255
250 PRINT .1*INT(H(B(1))-H(B(I)))
255 NEXT I
260 RETURN
301 DATA 3,4,5,8,9,11,20,30
999 END

View File

@ -17,7 +17,7 @@
<ul>
<li>Proof read code from 1975 3rd printing.</li>
<li>Quick port to EDUSystem 50 for testing.</li>
<li>Refactor to take adantage of BASIC implementation.</li>
<li>Refactor to take advantage of BASIC implementation.</li>
</ul>
<h3>Book Covers:</h3>
<img src="img/1973.jpg" /> 1973 $5<br>

112
port/HORSES.BAS Normal file
View File

@ -0,0 +1,112 @@
1 DIM V(10),U(10),T(10),M(8),O(8),H(8),B(8),P(6)
2 RANDOMIZE \ PRINT "HORSE RACE"
3 PRINT "EXAMPLE OF BET; 1,2,200,0 ."
5 PRINT \ PRINT" SEVENTH - 1 MILE, 3 YR. OLDS POST 2:35"
6 PRINT
7 FOR I=1 TO 8
8 B(I)=I \ GOSUB 210
9 READ O(I) \ PRINT O(I)":1"
10 M(I)=(100+50*O(I)) / (O(I)+1)
11 NEXT I
12 PRINT
13 PRINT"ENTER HORSE(1-8);TO WIN,PLACE,SHOW(1,2,3);AND THE WAGER."
14 PRINT "AND 0 FOR NO MORE BETTING OR 1 FOR MORE BETTING."
15 LET S = 0
16 PRINT
17 LET S = S + 1
18 PRINT"BET NO. ";S;
19 INPUT T(S),U(S),V(S),M
20 LET T(S)=ABS(INT(T(S)))
21 IF T(S)>8 THEN 26
22 IF T(S)<1 THEN 26
23 LET U(S)=ABS(INT(U(S)))
24 IF U(S)>3 THEN 26
25 IF U(S)>0 THEN 28
26 PRINT"HORSE NO. OR WIN-PLACE-SHOW IN ERROR" \ GO TO 18
28 IF V(S)<2 THEN 30
29 IF V(S)<=300 THEN 33
30 PRINT"BET MUST BE >$2 AND <$300, BET AGAIN";
31 INPUT V(S) \ GO TO 28
33 IF M = 1 THEN 17
35 PRINT \ PRINT" THEY'RE OFF AND RUNNING -" \ PRINT
36 FOR I=1 TO 8 \ H(I)=0 \ NEXT I
40 FOR K=1 TO 8
42 SLEEP 6
44 FOR J=1 TO 8
46 H(J)=H(J)+RND(0)*M(J)
48 NEXT J
52 FOR I=8 TO 1 STEP -1
54 FOR J=2 TO I
56 ON SGN(H(B(J-1))-H(B(J)))+2 GO TO 60,58,62
58 IF RND(0)>.5 THEN 62
60 Z=B(J-1) \ B(J-1)=B(J) \ B(J)=Z
62 NEXT J
64 NEXT I
68 PRINT \ PRINT " ";
70 ON K GOTO 72,74,76,78,80,82,84,86
72 PRINT "AS THEY BREAK FROM THE GATE" \ GO TO 88
74 PRINT "AT THE 1/4 MILE POLE" \ GO TO 88
76 PRINT "NEARING THE HALF MARK" \ GO TO 88
78 PRINT "MIDWAY IN THE RACE" \ GO TO 88
80 PRINT "AT 5/8 OF A MILE" \ GO TO 88
82 PRINT "ROUNDING THE TURN" \ GO TO 88
84 PRINT "COMING DOWN THE STRETCH" \ GO TO 88
86 PRINT " FINISH"
88 REM
90 GO SUB 200
92 NEXT K
96 PRINT \ PRINT \ PRINT "$2 MUTUELS PAID:"
98 PRINT " STRAIGHT PLACE SHOW"
100 K=0
102 FOR I=1 TO 3
104 GO SUB 215
106 FOR J=I TO 3
108 L=2*I+J-3 \ P(L)=1.5+.1*INT(.1*INT((4*O(B(I))/(J*(J+1))+RND(0))*100+5))
110 PRINT TAB(3+10*J); \ B=-16
112 FOR M=3 TO -1 STEP -1
114 P=INT(P(L)/(10^M))
116 P=P-10*INT(P/10)
117 IF P=0 THEN 118 \ B=0
118 PRINT CHR$(48+P+B);
138 IF M<>0 THEN 139 \ PRINT ".";
139 NEXT M
140 PRINT "0";
142 NEXT J
144 PRINT
146 NEXT I
150 PRINT \ Q=0
152 FOR J=1 TO S
154 PRINT "BET NO. "; J
156 P=0
158 FOR I=1 TO 8 \ H(B(I))=I \ NEXT I
160 IF U(J)<H(T(J)) THEN 166
162 P= .01*INT((V(J)*50)*P(U(J)+H(T(J))*2-3))
164 PRINT "YOU COLLECT" P "ON "; \ GO TO 172
166 IF H(T(J))>3 THEN 168 \ PRINT "NEXT TIME, BUY A SHOW"; \ GO TO 170
168 PRINT "TEAR UP YOUR";
170 PRINT " TICKET ON ";
172 I=0 \ B(0)=T(J) \ GOSUB 215 \ PRINT
174 Q=Q+P-V(J)
176 NEXT J
178 IF Q<0 THEN 182
180 PRINT "YOUR TOTAL WINNINGS AMOUNT TO $" Q \ STOP
182 PRINT "YOUR TOTAL LOSSES AMOUNT TO $" ABS(Q) \ STOP
200 PRINT "POS. HORSE LENGTHS BEHIND"
205 FOR I=1 TO 8
210 PRINT I;
215 ON B(I) GOTO 220,222,224,226,228,230,232,234
220 PRINT "MAN O'WAR "; \ GO TO 240
222 PRINT "CITATION "; \ GO TO 240
224 PRINT "WHIRLAWAY "; \ GO TO 240
226 PRINT "ASSAULT "; \ GO TO 240
228 PRINT "SEABISCUIT "; \ GO TO 240
230 PRINT "GALLANT FOX"; \ GO TO 240
232 PRINT "STYMIE "; \ GO TO 240
234 PRINT "COALTOWN ";
240 IF K=0 THEN 260
245 IF I>1 THEN 250 \ PRINT \ GO TO 255
250 PRINT .1*INT(H(B(1))-H(B(I)))
255 NEXT I
260 RETURN
301 DATA 3,4,5,8,9,11,20,30
999 END