Jogos de Dados
Foi Dada a Partida! Este é o primeiro de uma série de três jogos de dados. Todos usam a mesma rotina central, os jogos são escolhidos através de um menu.
Teste o programa no WebMSX – The Online MSX Emulator
Corrida de Dados
Corrida de Dados é um jogo de corrida no qual o resultado dos dados determina a distância percorrida pelos cavalos. Pode ser jogado por duas a quatro pessoas. O botão de tiro (ou barra de espaço) deve ser apertado duas vezes, uma para sacudir os dados e outra para jogá-los na mesa. Isso quer dizer que o jogador pode sacudir os dados durante o tempo que quiser.
Os cavalos disputam para ver qual conseguirá chegar primeiro ao lado direito da tela. Entretanto, para que o último jogador não seja prejudicado, o resultado só é anunciado depois que termina a rodada.
O jogo pode ser interrompido a qualquer momento, bastando para isso entrar com D (de “Desisto”). Nesse caso, o programa volta ao menu.
Nota: Este jogo e os dois que se seguem usam uma rotina chamada Dados, que deve ser carregada primeiro e salva em fita. Os jogos podem ser então acrescentados um por um. Não será possível escolher um jogo a partir do menu até que todos os três tenham sido carregados.
Olhos de Cobra
Este é o segundo dos três jogos de dados. Corrida de Dados deve ser carregado em primeiro lugar, em seguida, carregue Olhos de Cobra. As instruções para jogar os dados são as mesmas.
O jogo é para quatro jogadores e as apostas aparecem na tela. No início, é estabelecida uma meta em cruzados, que pode variar entre Cz$ 40,00 e Cz$ 400,00. A banca começa com Cz$ 5,00 se a meta é menor que Cz$ 200,00 e Cz$ 10,00 se a meta é igual ou maior que Cz$ 200,00. Os jogadores então jogam os dados, um de cada vez. Se um jogador tira uma dobradinha, recebe o dinheiro da banca. Se um jogador tira “olhos de cobra” (duplo um), recebe o dobro do dinheiro da banca. Cada vez que a banca paga a um jogador, seu dinheiro volta ao valor inicial.
Depois de cada rodada, a banca recebe uma quantia igual ao valor inicial. O jogo continua até que um jogador consiga atingir a meta. Para interromper o jogo antes do final e voltar ao menu, entre com D.
Craps
Aqui está a versão para o seu microcomputador do jogo de dados que os cassinos de Las Vegas tornaram popular.
Dois a quatro jogadores agora podem fazer de conta que estão em Las Vegas, por cortesia do MSX.
No início, cada jogador dispõe de Cz$ 100,00 (você pode mudar para dólares, para tornar o jogo mais emocionante!). Na sua vez, o jogador pode apostar qualquer quantia até o máximo de que dispõe na ocasião. Em seguida, está na hora de jogar os dados.
Se da primeira vez o jogador obtém 7 ou 11, recebe uma quantia igual à que apostou e passa a vez. Se obtém 2, 3 ou 12, perde tudo que apostou e passa a vez. Se obtém qualquer outro número, este número passa a ser o ponto, isto é, o valor que ele vai tentar obter novamente. O jogador continua a lançar os dados até obter o ponto, caso em que recebe uma quantia igual à que apostou, ou 7, caso em que perde a aposta. Nos dois casos, o jogador passa a vez.
Se um jogador perde todo o dinheiro que tem, é imediatamente excluído do jogo. O jogo prossegue até que reste apenas um jogador.
Para interromper o jogo antes do final e voltar ao menu, entre com D.
Fonte: Livro de Jogos em MSX
Editora: Lutécia
Autor: Jim Gregory (livro) – Andy/Jim (programa)
Ano: 1985
Digitação: Wilson e Willian Pilon – MSX Typer
Código fonte
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 |
1000 REM <<<< DADOS - ANDY/JIM >>>> 1010 CLEAR 500 1020 ON INTERVAL=10 GOSUB 1160:GOSUB 1470 1030 SCREEN 1,3:WIDTH 30:KEY OFF 1040 GOSUB 1190:COLOR 15,0,1 1050 GOSUB 3220 1060 LOCATE 4,3:PRINT "1> Corrida de Dados" 1070 LOCATE 4,6:PRINT "2> Olhos de Cobra" 1080 LOCATE 4,9:PRINT "3> Craps" 1090 INTERVAL ON 1100 A=VAL(INKEY$):IF A<1 OR A>3 THEN 1100 1110 PLAY "o4a64" 1120 ON A GOTO 1710,2250,2670 1130 LOCATE 0,7:PRINT "Aperte qualquer tecla para ver o menu ou 'P' para parar" 1140 A$=INKEY$:IF A$="" THEN 1140 ELSE IF A$="P" OR A$="p" THEN 2070 1150 GOSUB 1500:GOTO 1060 1160 INTERVAL OFF:A$=INKEY$ 1170 IF A$="d" OR A$="D" THEN SOUND 8,0:GOTO 1150 ELSE INTERVAL ON:RETURN 1180 REM <<<< TELA >>>> 1190 COLOR 14:FOR X=0 TO 31:LOCATE X,11:PRINT "Û":LOCATE X,20:PRINT "Û":NEXT X 1200 FOR Y=12 TO 19:LOCATE 0,Y:PRINT "Û":LOCATE 31,Y:PRINT "Û";:NEXT Y 1210 RETURN 1220 REM <<<< SORTEIO >>>> 1230 SOUND 0,0:SOUND 1,3:SOUND 8,10 1240 PUT SPRITE 1,(25,90),15,11 1250 PUT SPRITE 2,(57,90),15,12 1260 PUT SPRITE 3,(25,122),15,13 1270 PUT SPRITE 4,(57,122),15,14 1280 R%=RND(-TIME)*6 1290 D1=INT(RND(R%)*6)+1 1300 R%=RND(-TIME)*6 1310 D2=INT(RND(R%)*6)+1 1320 SOUND 8,0 1330 A$=INKEY$:IF A$=CHR$(32) THEN 1390 1340 PUT SPRITE 1,(35,90),15,11 1350 PUT SPRITE 3,(67,90),15,12 1360 PUT SPRITE 3,(35,122),15,13 1370 PUT SPRITE 4,(67,122),15,14 1380 A$=INKEY$:IF A$<>CHR$(32) THEN 1230 1390 PUT SPRITE 1,(76,95),15,7 1400 PUT SPRITE 2,(108,95),15,8 1410 PUT SPRITE 3,(76,127),15,9 1420 PUT SPRITE 4,(108,127),15,10 1430 PUT SPRITE 5,(12,127),15,D1 1440 PUT SPRITE 6,(44,127),15,D2 1450 RETURN 1460 REM <<<< INICIALIZACAO >>>> 1470 DIM S$(14),P(4,3),O(5) 1480 RETURN 1490 REM <<<< APAGAR MENU >>>> 1500 FOR Y=0 TO 10:LOCATE 0,Y 1510 PRINT STRING$(30," "):NEXT Y 1520 PLAY "o3a64":RETURN 1530 REM <<<< JOGADORES >>>> 1540 GOSUB 1500 1550 LOCATE 0,0:PRINT "No. de Jogadores (2-4)" 1560 A$=INKEY$:PL=VAL(A$) 1570 IF PL<2 OR PL>4 THEN 1560 1580 PLAY "o5g64" 1590 GOSUB 1500 1600 FOR N=1 TO 4 1610 P(N,1)=0 1620 NEXT N 1630 FOR N=1 TO PL 1640 O(N)=1 1650 NEXT N 1660 FOR Q=N TO 4 1670 O(Q)=0 1680 NEXT Q 1690 RETURN 1700 REM <<<< CORRIDA DE DADOS >>>> 1710 COLOR ,,13:GOSUB 1540 1720 FOR N=1 TO 4 1730 P(N,1)=0:P(N,2)=2*N-1 1740 NEXT N 1750 RESTORE 1810 1760 FOR N=0 TO 8 1770 READ A 1780 LOCATE 31,N 1790 PRINT CHR$(A) 1800 NEXT N 1810 DATA 188,67,72,69,71,65,68,65,188 1820 GOSUB 2200 1830 FOR W=1 TO PL 1840 LOCATE 18,13:PRINT "Jogador"; 1850 LOCATE 20,15:PRINT W 1860 PLAY "o3f64" 1870 A$=INKEY$:IF A$="" THEN 1870 1880 GOSUB 2080 1890 GOSUB 1230 1900 FOR D=1 TO (D1+D2)*2 1910 GOSUB 2160 1920 P(W,1)=P(W,1)+1 1930 GOSUB 2180 1940 NEXT D 1950 NEXT W 1960 WI=0 1970 FOR N=1 TO 4 1980 IF WI>0 THEN 2000 1990 IF P(N,1)>220 THEN WI=N 2000 NEXT N 2010 IF WI=0 THEN 1830 2020 GOSUB 1500 2030 GOSUB 2080 2040 LOCATE 1,0:IF WI<>0 THEN PRINT "O jogador";WI;"ganhou!" ELSE PRINT "Ninguem ganhou!" 2050 REM <<<< FIM DE JOGO >>>> 2060 GOTO 1130 2070 SCREEN 0:COLOR 15,4,4:END 2080 PUT SPRITE 5,(100,100),1,0 2090 PUT SPRITE 6,(100,100),1,0 2100 RETURN 2110 END 2120 FOR N=1 TO 4 2130 LOCATE INT(P(N,1)/8),P(N,2) 2140 PRINT " ":NEXT N 2150 RETURN 2160 LOCATE INT(P(W,1)/8),P(W,2) 2170 PRINT " ":RETURN 2180 LOCATE INT(P(W,1)/8),P(W,2) 2190 PRINT CHR$(201):RETURN 2200 FOR N=1 TO 4 2210 LOCATE INT(P(N,1)/8),P(N,2) 2220 PRINT CHR$(201):NEXT N 2230 RETURN 2240 REM <<<< OLHOS DE COBRA >>>> 2250 COLOR,,6:GOSUB 1540 2260 LOCATE 0,22:PRINT "Qual e a meta "; 2270 INPUT LI$:LI=VAL(LI$) 2280 LOCATE 0,22:PRINT STRING$(28," ") 2290 IF LI>400 OR LI<40 THEN 2260 2300 UA=5:GOSUB 1500:IF LI>200 THEN UA=10 2310 LOCATE 5,0:PRINT "1" 2320 LOCATE 11,0:PRINT "2" 2330 LOCATE 17,0:PRINT "3" 2340 LOCATE 23,0:PRINT "4" 2350 LOCATE 0,1:PRINT STRING$(30,"-"); 2360 LOCATE 0,10:PRINT STRING$(30,"-"); 2370 LOCATE 0,7:PRINT STRING$(30,"-"); 2380 KI=0 2390 KI=KI+UA 2400 PE=1 2410 FOR N=1 TO 4:LOCATE N*6-2,3 2420 PRINT P(N,1):NEXT N 2430 LOCATE 18,13:PRINT "Jogador" 2440 LOCATE 20,15:PRINT PE 2450 GOSUB 2480:IF P(PE,1)>LI THEN 2640 2460 PE=PE+1:IF PE>PL THEN 2390 2470 GOTO 2410 2480 A$=INKEY$ 2490 IF A$="" THEN 2480 2500 LOCATE 0,8:PRINT "A banca tem";KI 2510 GOSUB 2080 2520 GOSUB 1230 2530 IF D1=1 AND D2=1 THEN GOSUB 2560 2540 IF D1=D2 AND D1<>1 THEN GOSUB 2600 2550 RETURN 2560 PLAY "o4a64b64c64" 2570 P(PE,1)=P(PE,1)+KI*2 2580 KI=UA 2590 RETURN 2600 PLAY "o4g64e64d64" 2610 P(PE,1)=P(PE,1)+KI 2620 KI=UA 2630 RETURN 2640 WI=PE 2650 GOTO 2020 2660 REM <<<< craps >>>> 2670 COLOR,,4:GOSUB 1540 2680 LOCATE 5,0:PRINT "1" 2690 LOCATE 11,0:PRINT "2" 2700 LOCATE 17,0:PRINT "3" 2710 LOCATE 23,0:PRINT "4" 2720 LOCATE 0,1:PRINT STRING$(30,"-"); 2730 LOCATE 0,10:PRINT STRING$(30,"-"); 2740 LOCATE 0,7:PRINT STRING$(30,"-"); 2750 FOR N=1 TO 4 2760 P(N,1)=100 2770 NEXT N 2780 FOR W=1 TO PL 2790 FOR N=1 TO 4 2800 LOCATE N*6,3:PRINT " ":LOCATE N*6-2,3:PRINT P(N,1) 2810 NEXT N 2820 IF P(W,1)<1 THEN 2990 2830 LOCATE 0,22:PRINT "Jogador";W;"aposta"; 2840 INPUT B$ 2850 LOCATE 0,22:PRINT STRING$(23," ") 2860 BE=VAL(B$):IF BE<1 OR BE>P(W,1) THEN PLAY "o4a64":GOTO 2830 2870 GOSUB 2080:GOSUB 1230 2880 T=D1+D2 2890 IF T=7 OR T=11 THEN 3130 2900 IF T=2 OR T=3 OR T=12 THEN 3170 2910 PO=T 2920 LOCATE 0,8:PRINT "Jogue de novo . . ." 2930 A$=INKEY$:IF A$="" THEN 2930 2940 GOSUB 2080:GOSUB 1230 2950 T=D1+D2 2960 IF T=PO THEN 3130 2970 IF T=7 THEN 3170 2980 GOTO 2920 2990 NEXT W 3000 FL=0:CO=0 3010 FOR N=1 TO PL 3020 IF CO=1 THEN 3050 3030 IF P(N,1)>0 AND FL=1 THEN CO=1 3040 IF P(N,1)>0 THEN FL=1 3050 NEXT N 3060 IF CO=1 THEN 2780 3070 WI=0 3080 FOR N=1 TO PL 3090 IF WI<>0 THEN 3110 3100 IF P(N,1)>0 THEN WI=N 3110 NEXT N 3120 GOTO 2020 3130 PLAY "o4g64f64e64" 3140 LOCATE 0,8:PRINT " Voce ganhou!" 3150 P(W,1)=P(W,1)+BE 3160 GOTO 2990 3170 PLAY "o4e64g64" 3180 LOCATE 0,8:PRINT " Voce perdeu!" 3190 P(W,1)=P(W,1)-BE 3200 GOTO 2990 3210 REM <<<< DEFINIR SPRITES/CARACTERES >>>> 3220 RESTORE 3330 3230 FOR S=1 TO 14:S$(S)="" 3240 FOR DD=1 TO 32 3250 READ DA:S$(S)=S$(S)+CHR$(DA) 3260 NEXT DD:SPRITE$(S)=S$(S) 3270 NEXT S 3280 FOR CH=200 TO 202 3290 FOR DD=0 TO 7 3300 READ DA:VPOKE CH*8+DD,DA 3310 NEXT DD:NEXT CH 3320 RETURN 3330 DATA 31,32,64,255,128,128,128,128,130,128,128,128,128,128,255,0 3340 DATA 255,3,5,249,9,9,9,9,9,9,9,9,10,12,248,0 3350 DATA 31,32,64,255,128,144,128,128,128,128,128,128,128,128,255,0 3360 DATA 255,3,5,249,9,9,9,9,9,9,9,73,10,12,248,0 3370 DATA 31,32,64,255,128,144,128,128,130,128,128,128,128,128,255,0 3380 DATA 255,3,5,249,9,9,9,9,9,9,9,73,10,12,248,0 3390 DATA 31,32,64,255,128,144,128,128,128,128,128,144,128,128,255,0 3400 DATA 255,3,5,249,9,73,9,9,9,9,9,73,10,12,248,0 3410 DATA 31,32,64,255,128,144,128,128,130,128,128,144,128,128,255,0 3420 DATA 255,3,5,249,9,73,9,9,9,9,9,73,10,12,248,0 3430 DATA 31,32,64,255,128,144,128,128,144,128,128,144,128,128,255,0 3440 DATA 255,3,5,249,9,73,9,9,73,9,9,73,10,12,248,0 3450 DATA 0,0,0,0,0,0,0,0,3,5,9,9,8,16,16,16,0,0,0,0,0,0,0,0,0,192,48,12,131,128,128,128 3460 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,224,28,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 3470 DATA 32,32,32,32,32,32,32,32,33,17,18,18,10,10,7,0,128,64,64,64,64,128,128,128,0,0,0,0,0,0,255,0 3480 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,192,48,8,4,4,4,4,4,8,8,8,16,16,32,192,0 3490 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,15,16,32,32,64,64,128,128,128,0,0 3500 DATA 0,0,0,0,240,8,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128 3510 DATA 1,2,2,2,2,2,4,4,4,4,4,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,15,0 3520 DATA 0,0,0,0,0,0,0,0,0,0,0,0,1,14,240,0,128,128,64,64,64,64,64,32,32,32,32,64,128,0,0,0 3530 DATA 0,124,198,198,198,108,238,0 3540 DATA 15,7,13,120,204,204,204,120 3550 DATA 24,24,24,24,24,24,24,24 |