10 REM      * * * DADOS * * *
20 REM      * por J.Riveros *
30 REM
40
50 GOSUB 1750
60 GOSUB 150:GOSUB 260
70 GOSUB 430:GOSUB 570:GOSUB 750
80 WHILE fin
90 FOR turno=1 TO nj
100 GOSUB 790
110 NEXT turno
120 WEND
130 GOSUB 1480
140 REM *** ESTABLECE MODO, TINTA, ETC ***
150 MODE 1:RANDOMIZE TIME:DEFINT a-z
160 BORDER 12:INK 0,12:INK 1,0:INK 2,26:INK 3,6
170 FOR x=1 TO 6
180 d$(x)=MID$("NRJQKA",x,1)
190 NEXT x
200 REM *** VENTANAS ***
210 WINDOW #1,11,14,8,10:WINDOW #2,15,18,8,10:WINDOW #3,19,22,8,10
220 WINDOW #4,23,26,8,10:WINDOW #5,27,30,8,10
230 WINDOW #6,2,39,14,22:WINDOW #7,2,39,24,24
240 RETURN
250 REM *** CREA CARACTERES DE DADOS ***
260 SYMBOL 240,0,0,0,15,31,31,31,31:SYMBOL 241,0,0,0,255,255,255,255,255
270 SYMBOL 242,0,0,0,240,248,248,248,248:SYMBOL 243,31,31,31,31,31,31,31,31
280 SYMBOL 244,248,248,248,248,248,248,248,248:SYMBOL 245,31,31,31,31,15,0,0,0
290 SYMBOL 246,255,255,255,255,255,0,0,0:SYMBOL 247,248,248,248,248,240,0,0,0
300 SYMBOL 248,0,60,126,126,126,126,60,0:SYMBOL 249,219,219,0,24,24,0,219,219
310 SYMBOL 250,219,219,0,102,102,0,219,219
320 REM *** DADO SIN SIMBOLO ***
330 dado$="":FOR x=1 TO 19:READ caracter
340 dado$=dado$+CHR$(caracter):NEXT x
350 REM *** DADO CON SIMBOLO ***
360 FOR x=1  TO 6
370 simbolo$(x)="":FOR y=1 TO 8:READ caracter
380 simbolo$(x)=simbolo$(x)+CHR$(caracter):NEXT y
390 dado$(x)=dado$+simbolo$(x)
400 NEXT x
410 RETURN
420 REM *** DADOS DE LOS JUGADORES ***
430 PAPER 0:PEN 1
440 CLS:LOCATE 2,12
450 INPUT "Numero de jugadores (max. 4)";nj
460 IF nj<1 OR nj>4 THEN CLS:LOCATE 10,12:PRINT"ENTRADA INCORRECTA":FOR x=1 TO 3000:NEXT x:GOTO 440
470 PRINT CHR$(7);
480 FOR x=1 TO nj
490 CLS:LOCATE 2,12
500 PRINT"Nombre del jugador n.";x;"(Max. 8 letras)"
510 LOCATE 12,14:INPUT nombre$(x)
520 IF LEN(nombre$(x))>8 OR nombre$(x)="" THEN 490
530 nombre$(x)=UPPER$(nombre$(x)):SOUND 1,200*x,10,7
540 NEXT x
550 RETURN
560 REM *** PANTALLA ***
570 CLS:PEN 2:LOCATE 3,1
580 PRINT"JUGADORES" SPC(6) "A" SPC(2) "K" SPC(2) "Q" SPC(2) "J" SPC(2) "R" SPC(2) "N TOTAL"
590 LOCATE 2,2
600 PRINT CHR$(150);STRING$(37,CHR$(154));CHR$(156)
610 FOR x=1 TO nj
620 LOCATE 2,2+x:PEN 2:PRINT CHR$(149) SPC (37) CHR$(149)
630 LOCATE 3,2+x:PEN 1:PRINT x;CHR$(8)+"-";nombre$(x)
640 NEXT x
650 LOCATE 2,3+nj:PEN 2:PRINT CHR$(147);STRING$(37,CHR$(154));CHR$(153)
660 ORIGIN 4,40:DRAWR 630,0,1:DRAWR 0,170:DRAWR -630,0:DRAWR 0,-170
670 PAPER #6,0:CLS #6:PEN #6,1
680 LOCATE #6,2,1:PRINT #6,"Turno para";STRING$(15,".")
690 LOCATE #6,2,3:PRINT #6,"Te faltan";STRING$(16,".")
700 LOCATE #6,2,5:PRINT #6,"Tirada";STRING$(19,".")
710 LOCATE #6,2,7:PRINT #6,"Eleccion";STRING$(17,".")
720 LOCATE #6,2,9:PRINT #6,"Acumulas";STRING$(17,".")
730 RETURN
740 REM *** INICIA VARIABLES ***
750 FOR x=1 TO nj:total(x)=0:tienes$(x)="":el(x)=0:faltan$(x)="":NEXT x:fin=1:finj=0
760 FOR x=1 TO 6:FOR y=1 TO nj:t$(y,x)=d$(x):NEXT y:NEXT x
770 RETURN
780 REM *** RUTINA PRINCIPAL ***
790 nd=5:tirada=0:acuerdo=0:acum=0:dobla=0
800 LOCATE #6,29,1:PRINT #6,SPACE$(8):LOCATE #6,29,1:PRINT #6,nombre$(turno)
810 tienes$(turno)=tienes$(turno)+d$(el(turno))
820 t$(turno,el(turno))="-"
830 faltan$(turno)=t$(turno,6)+t$(turno,5)+t$(turno,4)+t$(turno,3)+t$(turno,2)+t$(turno,1)
840 LOCATE #6,29,3:PRINT #6,SPACE$(3):LOCATE #6,29,3:PRINT #6,faltan$(turno)
850 LOCATE #6,28,7:PRINT #6,SPACE$(3)
860 LOCATE #6,28,9:PRINT #6,SPACE$(3)
870 REM *** TIRADAS ***
880 WHILE tirada<3
890 tirada=tirada+1
900 PEN 1
910 LOCATE #6,28,5:PRINT #6,tirada
920 FOR x=1 TO 5
930 PAPER #x,0:CLS #x
940 NEXT x
950 PAPER #7,0:CLS #7:PEN #7,3
960 PRINT #7,"Pulsa <ESPACIO> para tirar los dados"
970 WHILE INKEY(47)<>0:WEND
980 CLS #7
990 REM *** TIRA DADOS ***
1000 FOR t=1 TO nd
1010 valor(t)=RND*5+1
1020 PRINT #t,dado$(valor(t)):SOUND 1,100*t,2,7
1030 NEXT t
1040 IF tirada<>1 AND elec<>0 THEN 1160
1050 REM *** ELEGIR ***
1060 FOR x=1 TO 2000:NEXT x
1070 CLS #7:PEN #7,1
1080 CALL &BB03:INPUT #7,"Elige (A,K,Q,J,R,N,0)";el$:IF el$="" OR LEN(el$)>1 THEN 1080
1090 CLS #7
1100 el$=UPPER$(el$)
1110 elec=INSTR("0NRJQKA",el$)
1120 IF elec=0 THEN CLS #7:PRINT #7,"ELECCION INCORRECTA":GOTO 1060
1130 elec=elec-1
1140 IF tirada=3 AND elec=0 THEN CLS #7:PRINT #7,"TIENES QUE ELEGIR ALGO":GOTO 1060
1150 IF INSTR(tienes$(turno),el$)<>0 AND el$<>"" THEN CLS #7:PRINT #7,"YA LO TIENES":GOTO 1060
1160 el(turno)=elec:SOUND 1,300,15,5
1170 LOCATE #6,29,7:PRINT #6,SPACE$(3):LOCATE #6,29,7:PRINT #6,el$
1180 FOR x=1 TO nd
1190 IF elec=valor(x) OR 6=valor(x) THEN 1200 ELSE 1210
1200 acuerdo=acuerdo+1
1210 NEXT x
1220 nd=nd-acuerdo:acum=acum+acuerdo:acuerdo=0
1230 LOCATE #6,28,9:PRINT #6,SPACE$(3):LOCATE #6,28,9:PRINT #6,acum
1240 IF nd=0 THEN nd=5
1250 REM *** MARCADOR ***
1260 puntos(elec)=acum*elec
1270 loc=6-elec
1280 IF tirada=3 THEN PEN 1 ELSE PEN 2
1290 IF elec<>0 THEN LOCATE (3*loc)+17,2+turno:PRINT #0,USING"##";puntos(elec)
1300 IF tirada=3 THEN total(turno)=total(turno)+puntos(el(turno)):LOCATE 35,2+turno:PEN 3:PRINT #0,USING"##";total(turno):SOUND 1,300,10,5
1310 REM *** MENSAJES ***
1320 PEN #7,2
1330 IF tirada<>3 AND acum=10 THEN CLS #7:PRINT #7:"ENHORABUENA, TE DOBLAS DE NUEVO"
1340 IF tirada<>3 AND acum=5 AND dobla=0 THEN CLS #7:PRINT #7,"ENHORABUENA, TE DOBLAS":dobla=1
1350 IF tirada=3 AND acum=0 THEN CLS #7:PRINT #7,"QUE HORROR !!!"
1360 IF tirada=3 AND (el$<>"A" AND (acum=1 OR acum=2) OR (el$="A" AND acum=1)) THEN CLS #7:PRINT #7,"PINCHASTE, ";nombre$(turno)
1370 IF tirada=3 AND ((el$<>"A" AND acum=3) OR (el$="A" AND acum=2)) THEN CLS #7:PRINT #7,"REGULAR..."
1380 IF (tirada=3 AND el$="A" AND acum=3) OR (tirada=3 AND el$<>"A" AND acum=4) THEN CLS #7:PRINT #7,"BIEN !"
1390 IF tirada=3 AND ((el$<>"A" AND acum=5) OR (el$="A" AND acum=4)) THEN  CLS #7:PRINT #7,"MUY BIEN, ";nombre$(turno)
1400 IF tirada=3 AND ((el$<>"A" AND acum>5) OR (el$="A" AND acum=4)) THEN CLS #7:PRINT #7,"EXCELENTE TIRADA"
1410 FOR x=1 TO 3000:NEXT x
1420 WEND
1430 REM *** DETECTA FIN PARTIDA ***
1440 finj=finj+1
1450 IF finj=6*nj AND tirada=3 THEN fin=0
1460 RETURN
1470 REM *** FIN ***
1480 PAPER #7,2:CLS #7:PEN #7,1
1490 PRINT #7,TAB(10)"FIN DE LA PARTIDA"
1500 FOR x=1 TO 5:CLS #x:NEXT x
1510 REM *** CLASIFICACION ***
1520 CLS #6:PRINT #6,TAB(13)"CLASIFICACION"
1530 PRINT #6:PRINT #6:PRINT #6
1540 invert=0
1550 FOR x=1 TO nj-1
1560 IF total(x)<total(x+1) THEN GOSUB 1690
1570 NEXT x
1580 IF invert=1 THEN 1540
1590 FOR x=1 TO nj
1600 pun(x)=15-LEN(nombre$(x))
1610 PRINT #6,TAB(5);"-";nombre$(x);STRING$(pun(x),".");total(x);"Puntos"
1620 NEXT x
1630 FOR x=1 TO 3000:NEXT x
1640 CLS #7
1650 PRINT #7,TAB(10)"NUEVA PARTIDA (S/N)?"
1660 sn$=UPPER$(INKEY$):IF sn$<>"S" AND sn$<>"N" THEN 1660
1670 IF sn$="S" THEN 70
1680 CLS:PEN 1:CALL &BBFF:END
1690 g=total(x):n$=nombre$(x)
1700 total(x)=total(x+1):nombre$(x)=nombre$(x+1)
1710 total(x+1)=g:nombre$(x+1)=n$
1720 invert=1
1730 RETURN
1740 REM *** PRESENTACION ***
1750 MODE 1:INK 0,0:INK 1,0:INK 2,26:INK 3,2:BORDER 0
1760 y=18
1770 LOCATE 1,25:PEN 1:PRINT"DA-2"
1780 WHILE y
1790 y=y-2
1800 FOR x=0 TO 60 STEP 2
1810 IF TEST (x,y) THEN PEN INT(RND*2)+2:LOCATE x/2+4,(-y+17)/2:PRINT CHR$(233):SOUND 1,1000,2,7,0,0,1:FOR retardo=1 TO 10:NEXT
1820 NEXT
1830 WEND
1840 LOCATE 14,13:PEN 3:PRINT STRING$(13,"*")
1850 LOCATE 14,15:PEN 2:PRINT "Por J.Laborda"
1860 LOCATE 14,17:PEN 3:PRINT STRING$(13,"*")
1870 LOCATE 12,22:PEN 2:PRINT "(Pulsa una tecla)"
1880 WHILE INKEY$="":WEND
1890 MODE 0
1900 LOCATE 3,12:PEN 3
1910 PRINT"Buena suerte !"
1920 SOUND 1,300,10,7:SOUND 1,0,2,7:SOUND 1,800,10,7:SOUND 1,0,2,7:SOUND 1,200,10,7
1930 FOR x=1 TO 2000:NEXT
1940 RETURN
1950 REM *** DATA DE LOS DADOS ***
1960 DATA 15,2,240,241,242,8,8,8,10,243,143,244,8,8,8,10,245,246,247
1970 DATA 15,1,22,1,11,8,8,249
1980 DATA 15,3,22,1,11,8,8,250
1990 DATA 15,1,22,1,11,8,8,74
2000 DATA 15,1,22,1,11,8,8,81
2010 DATA 15,3,22,1,11,8,8,75
2020 DATA 15,3,22,1,11,8,8,248