Go Fish/Locomotive Basic: Difference between revisions
Content added Content deleted
(Created page with "<lang locobasic>10 cls:randomize time:defint a-z 20 dim play(13),compu(13),deck(13),guess(13),poss(13) 30 card$="A234567890JQK" 40 remca=4*13-2*9 50 for i=1 to 13:deck(i)=4:next ...") |
(improved dealing and AI) |
||
Line 1: | Line 1: | ||
<lang locobasic>10 cls:randomize time:defint a-z |
<lang locobasic>10 cls:randomize time:defint a-z |
||
20 dim play(13),compu(13),deck(13),guess(13),poss(13) |
20 dim play(13),compu(13),deck(13),guess(13),poss(13),asked(13) |
||
30 card$="A234567890JQK" |
30 card$="A234567890JQK" |
||
40 remca=4*13 |
40 remca=4*13 |
||
50 for i=1 to 13:deck(i)=4:next |
50 for i=1 to 13:deck(i)=4:next |
||
60 for i=1 to 9 |
60 for i=1 to 9 |
||
70 |
70 gosub 1250 |
||
80 k= |
80 deck(k)=deck(k)-1 |
||
90 |
90 compu(k)=compu(k)+1 |
||
⚫ | |||
⚫ | |||
110 |
110 deck(k)=deck(k)-1 |
||
⚫ | |||
120 ' RND_PLAY |
|||
130 |
130 next i |
||
140 |
140 print "Go Fish" |
||
150 |
150 print "=======" |
||
⚫ | |||
⚫ | |||
170 input "What is your name";name$ |
|||
170 next i |
|||
180 |
180 ' PRINT_HAND |
||
⚫ | |||
⚫ | |||
200 print |
200 print ,remca"cards remaining" |
||
210 |
210 print "Your hand: "; |
||
220 |
220 for i=1 to 13 |
||
⚫ | |||
⚫ | |||
240 for j=1 to play(i) |
|||
240 print ,remca"cards remaining" |
|||
250 print " |
250 print mid$(card$,i,1);" "; |
||
260 |
260 next j |
||
270 ' NEXT_CARD |
|||
⚫ | |||
280 |
280 next i |
||
290 print |
290 print |
||
300 |
300 ' ASK_CARD |
||
310 |
310 gosub 1100 |
||
320 |
320 s$=name$ |
||
⚫ | |||
⚫ | |||
340 |
340 if c$="" then 310 |
||
⚫ | |||
⚫ | |||
⚫ | |||
360 s$=name$ |
|||
370 if play(cn)=0 then print "You do not have that card!":goto 310 |
|||
⚫ | |||
380 guess(cn)=1 |
|||
⚫ | |||
390 if cn=0 then print " |
390 if compu(cn)=0 then print s$", go fish!":print s$" draws a ";:gosub 800:gosub 920:goto 470 |
||
⚫ | |||
⚫ | |||
410 |
410 compu(cn)=0 |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
440 |
440 gosub 920 |
||
⚫ | |||
⚫ | |||
460 ' COMPUTER_TURN_1 |
|||
⚫ | |||
470 |
470 s$="Computer" |
||
480 |
480 for i=1 to 13 |
||
490 |
490 asked(i)=0 |
||
500 |
500 next |
||
510 ' COMPUTER_TURN_2 |
|||
⚫ | |||
520 |
520 gosub 1100 |
||
⚫ | |||
530 if (compu(i)>0) and (guess(i)>0) then poss(i)=1:po=po+1 |
|||
540 |
540 for i=1 to 13 |
||
550 if |
550 if (compu(i)>0) and (guess(i)>0) then poss(i)=1:po=po+1 |
||
560 |
560 next |
||
570 |
570 if po=0 then 650 |
||
580 ' DRAW_GUESS |
|||
⚫ | |||
590 |
590 k=rnd*12+1 |
||
⚫ | |||
⚫ | |||
610 |
610 guess(k)=0 |
||
620 k= |
620 asked(k)=1 |
||
⚫ | |||
⚫ | |||
640 ' |
640 ' DRAW_RAND |
||
650 k=rnd*12+1 |
|||
⚫ | |||
⚫ | |||
660 if play(k)=0 then print s$", go fish!":print s$" draws a ";:gosub 840:gosub 1010:goto 230 |
|||
670 |
670 ' MAKE_TURN |
||
⚫ | |||
⚫ | |||
690 |
690 asked(k)=1 |
||
⚫ | |||
⚫ | |||
710 |
710 v=play(k) |
||
720 |
720 play(k)=0 |
||
730 compu(k)=compu(k)+v |
|||
⚫ | |||
⚫ | |||
⚫ | |||
750 |
750 gosub 1010 |
||
760 |
760 goto 520 |
||
770 goto 190 |
|||
⚫ | |||
⚫ | |||
⚫ | |||
790 ' DRAW_CARD_P |
|||
790 deck(k)=deck(k)-1 |
|||
800 gosub 1250 |
|||
800 play(k)=play(k)+1 |
|||
⚫ | |||
⚫ | |||
⚫ | |||
820 return |
|||
⚫ | |||
⚫ | |||
840 |
840 return |
||
⚫ | |||
850 if deck(k)=0 then 840 |
|||
860 |
860 gosub 1250 |
||
⚫ | |||
870 deck(k)=deck(k)-1 |
|||
880 |
880 deck(k)=deck(k)-1 |
||
890 |
890 compu(k)=compu(k)+1 |
||
900 return |
900 return |
||
910 ' CHECK_BOOK_P |
910 ' CHECK_BOOK_P |
||
920 for i=1 to 13 |
920 for i=1 to 13 |
||
930 if play(i)<>4 then 980 |
930 if play(i)<>4 then 980 |
||
940 print s$" completes book of "mid$(card$,i,1)"'s" |
940 print s$" completes book of "mid$(card$,i,1)"'s." |
||
950 play(i)=0 |
950 play(i)=0 |
||
960 score(0)=score(0)+1 |
960 score(0)=score(0)+1 |
||
Line 101: | Line 101: | ||
1010 for i=1 to 13 |
1010 for i=1 to 13 |
||
1020 if compu(i)<>4 then 1070 |
1020 if compu(i)<>4 then 1070 |
||
1030 print s$" completes book of "mid$(card$,i,1)"'s" |
1030 print s$" completes book of "mid$(card$,i,1)"'s." |
||
1040 compu(i)=0 |
1040 compu(i)=0 |
||
1050 score(1)=score(1)+1 |
1050 score(1)=score(1)+1 |
||
Line 119: | Line 119: | ||
1190 print "*** Game over! ***" |
1190 print "*** Game over! ***" |
||
1200 print |
1200 print |
||
1210 if score(0)>score(1) then print name$" has won":end |
1210 if score(0)>score(1) then print name$" has won.":end |
||
1220 if score(0)<score(1) then print "The computer has won":end |
1220 if score(0)<score(1) then print "The computer has won.":end |
||
1230 print "It's a tie!":end |
1230 print "It's a tie!":end |
||
1240 ' DEAL_CARD |
|||
⚫ | |||
1260 sc=remca*rnd+1 |
|||
1270 for k=1 to 13 |
|||
1280 sc=sc-deck(k) |
|||
⚫ | |||
1300 next</lang> |
|||
Note: 10's are called 0's here to get single-letter rank names. |
Note: 10's are called 0's here to get single-letter rank names. |