Dominos pour Sharp PC1500 ( pas de programme )
tir du magazine Hebdogiciel N16

	Ncessite l'extension PETOOLS.

	Un jeu vieux comme le monde sur une machine du 20 sicle : saurez-vous battre votre PC1500 aux dominos?

Mode d'emploi :
	2 faons de jouer suivant la rponse  la question : "je distribue (o/n)?"
a) "O" puis "RETURN"
	Le PC affiche ses 7 dominos et les votres ( que vous notez ). "RETURN" puis "veux-tu commencer(o/n)?". Si "RETURN":"moi:" affichage graphique qui va au centre. "toi" faire x,y,RETURN, le domino s'ajoute au premier. Seuls restent les 2 bouts de la ligne joue. Si le PC ne peut jouer, il va  la pche, affiche ce qu'il sort ou continue de pcher. Pour pcher, faites 9.

Programme :
10 CLEAR:DIM A$(6),A(16),B(28),B$(1)*50,C$(0)*32:RANDOM
20 A$="7F",A$(0)="41414141414141",A$(1)="41414149414141"
30 A$(2)="41434141416141",A$(3)="41434149416141",A$(4)="41634141416341"
40 A$(5)="41634149416341",A$(6)="41634163416341"
50 WAIT 0:A=7,B=7,C=14,E=1:INPUT "je distribue (o/n)?";Y$:IF Y$="o" THEN 70
60 GOTO 150
70 B(1)=0,B(2)=1,B(3)=2,B(4)=3,B(5)=4,B(6)=5,B(7)=6,B(8)=1.1,B(9)=1.2,B(10)=1.3
80 B(11)=1.4,B(12)=1.5,B(13)=1.6,B(14)=2.2,B(15)=2.3,B(16)=2.4,B(17)=2.5
90 B(18)=2.6,B(19)=3.3,B(20)=3.4,B(21)=3.5,B(22)=3.6,B(23)=4.4,B(24)=4.5
100 B(25)=4.6,B(26)=5.5,B(27)=5.6,B(28)=6.6:PRINT "moi:";:FOR V=1 TO 7:GOSUB 120
110 CLS:PRINT "toi:";:F=1:FOR V=1 TO 7:GOSUB 120:WAIT:PRINT ".":F=0:CLS:GOTO 220
120 IF C LET J=RND 28:IF B(J)<0 THEN 120
130 IF C<=0 RETURN
140 W=B(J),B(J)=-1:GOTO 160
150 FOR V=1 TO 7:PRINT V;:INPUT "e domino ?";W:CLS
160 X=INT W,Y=10*(W-X):IF F THEN 200
170 IF L CURSOR 0:GPRINT A$+A$(X)+A$(Y)+A$:RETURN
180 A(X)=A(X)+1.1:IF X<>Y LET A(Y)=A(Y)+1.1
190 A(X+10)=A(X+10)+10^Y:IF X<>Y LET A(Y+10)=A(Y+10)+10^X
200 IF Y$="o" GPRINT A$+A$(X)+A$(Y)+A$;
210 NEXT V:IF Y$="o" RETURN
220 WAIT 100:INPUT "veux-tu commencer (o/n)?";Z$:CLS:IF Z$="o" THEN 240
230 CLS:Z=-9,P=7:FOR O=0 TO 6:GOSUB 280:NEXT O:H=X,I=Y:GOTO 390
240 CURSOR 0:B=6,E=E-1:INPUT "toi ?";W:H=INT W,I=10*(W-H),M=1:GOSUB 700
250 A(H)=A(H)+1:IF H<>I LET A(1)=A(1)+1
260 Z=-99,T=0:IF H<>I LET O=H,P=1:GOSUB 280
270 O=I,P=H:GOSUB 280:GOTO 370
280 R=A(O+10):FOR V=0 TO 6:R=INT R/10:IF R-INT R=0 THEN 360
290 U=-10,S=10*(A(V)-INT A(V)):IF A(V)<7 THEN 320
300 IF S>=2 LET U=10+S
310 GOTO 340
320 U=S:IF S=1 LET U=-10
330 IF A(U+10)-INT A(V+10)<>0 LET U=50
340 K=0:IF P=O OR P=V LET K=1
350 G=INT A(V)+U+INT A(P)+10*(A(P)-INT A(P))-K:IF G>Z LET Z=G,X=O,Y=U
360 NEXT V:RETURN
370 IF Z=-99 THEN 590
380 GOSUB 650
390 A=A-1,A(X)=A(X)-.1:IF X<>Y LET A(Y)=A(Y)-.1
400 E=E-1,A(X+10)=A(X+10)-10^Y:IF X<>YY LET A(Y+10)=A(Y+10)-10^X
410 CURSOR 0:WAIT 100:PRINT "        ":IF H=1 AND X<>Y AND E<0 GOSUB 880
420 CURSOR 0:PRINT "moi:";:GPRINT A$+A$(X)+A$(Y)+A$;:GOSUB 700
430 F=0:IF A=0 WAIT:CURSOR 0:PRINT "je gagne!il t'en reste";B:END
440 CURSOR 0:PRINT "         ":CURSOR 0:INPUT "toi ?";W:X=INT W,Y=10*(W-X):IF Y$="" AND W=9 THEN 520
450 IF Y$="O" AND W=9 LET L=1:CURSOR 0:PRINT "      ":GOSUB 120:GOTO 520
460 B=B-1,A(X)=A(X)+1:IF X<>Y LET A(Y)=A(Y)+I
470 IF H*I+H+I=X*Y+X+Y AND X<>Y CURSOR 0:PRINT "         ":CURSOR 0:INPUT "ex.?";H:I=H:GOSUB 880
480 GOSUB 700:IF F LET F=0:GOTO 500
490 GOSUB 650
500 IF B<>0 THEN 260
510 WAIT:CURSOR 0:PRINT "tu gagnes!il m'en reste";A:END
520 A(H+10)=INT A(H+10)+.1:IF H<>I LET A(I+10)=INT A(I+10)+.1
530 IF C=0 AND J=1 THEN 870
540 IF C=0 THEN 260
550 B=B+1,C=C-1,T=T+1:IF T<>2 THEN 440
560 FOR D=10 TO 16:A(D)=INT A(D):NEXT D
570 A(H+10)=INT A(H+10)+.1:IF H<>I LET A(I+10)=INT A(I+10)+.1
580 GOTO 440
590 IF C=0 LET J=1:GOTO 440
600 CURSOR 0:PRINT "         ":IF Y$="o" LET L=1:GOSUB 120:GOTO 620
610 CURSOR 0:INPUT "moi ?";W:X=INT W,Y=10*(W-X)
620 A=A+1,C=C-1,A(X)=A(X)+1.1:IF X<>1 LET A(Y)=A(Y)+1.1
630 A(X+10)=A(X+10)+10^Y:IF X<>Y LET A(Y+10)=A(Y+10)+10^X
640 GOTO 260
650 IF H=X LET H=Y:RETURN
660 IF I=X LET I=Y:RETURN
670 IF H=Y LET H=X:RETURN
680 IF I=Y LET I=X:RETURN
690 PRINT "erreur!!!":B=B+1:GOTO 440
700 IF M LET X=H,Y=1
710 C$(0)=A$(X)+A$(Y)
720 IF F THEN 720+F*20
730 IF B$(0)="" LET B$(0)=A$+C$(0)+A$,A1=X,A2=Y:GOSUB 790:GOTO 810
740 B$=MID$(B$(0),3,14):IF B$=A$(X) LET A1=Y:GOSUB 820:GOTO 830
750 IF B$=A$(Y) LET A1=X:GOTO 840
760 N=LEN B$(1)-15,B$=MID$(B$(1),N,14):IF B$=A$(X) LET A2=Y:GOTO 850
770 IF B$=A$(Y) LET A2=X:GOSUB 820:GOTO 860
780 GOTO 690
790 WAIT 100:CURSOR 12:GPRINT B$(0);:CURSOR 20:GPRINT B$(1);:IF M LET H=X,Y=1,M=0
800 RETURN
810 B$(1)=RIGHT$(B$(0),18),B$(0)=LEFT$(B$(0),18):RETURN
820 C$(0)=A$+A$(Y)+A$(X)+A$:RETURN
830 B$(0)=C$(0)+B$:GOTO 790
840 B$(0)=A$+C$(0)+A$+B$:GOTO 790
850 B$(1)=B$+A$+C$(0)+A$:GOTO 790
860 B$(1)=B$+A$(0):GOTO 790
870 WAIT:CLS:PAUSE "partie nulle":PRINT "il te reste ";B;" et moi ";A:END
880 IF H=A1 LET F=2:RETURN
890 F=1:RETURN