' NIM ' PARA ZX-81 E COMPATIVEL DECLARE SUB PRINTAT (L!,C!,TEXT$) CLS 1020 DIM X(21,5),S(21),L(21),T(21),N(5),C(21),K(21),V(21) 1100 PRINTAT 10,5,"QUANTAS LINHAS (2 A 20) INPUT P IF P>20 OR P>INT(P) OR P<1 GOTO 1140 GOTO 1170 1140 PRINTAT 10,5,"VALOR ILEGAL SLEEP 5 GOTO 1100 1170 FOR I=1 TO P 1180 CLS :PRINTAT 10,5,"OBJETOS NA LINHA"+STR$(I)+" (1 A 20) INPUT L(I) IF L(I)<=20 AND L(I) >=1 AND L(I)=INT(L(I)) THEN 1240 PRINTAT 10,5,"VALOR ILEGAL SLEEP 5 GOTO 1180 1240 NEXT I CLS 1260 G=0 F=0 FOR I=1 TO P S(I)=L(I) G=G+L(I) NEXT I PRINTAT 10,5,"QUER JOGAR PRIMEIRO (S/N) 1330 INPUT A$ A$=UCASE$(A$) IF A$="S" THEN 1570 IF A$="N" THEN 1810 GOTO 1330 1370 CLS IF G=0 THEN 1410 IF F=1 THEN 1810 GOTO 1570 1410 IF F=1 THEN 1540 PRINTAT 10,5," EU VENCI. QUER JOGAR DE NOVO (S/N) 1430 INPUT A$ A$=UCASE$(A$) IF A$="N" THEN 1470 IF A$="S" THEN 1480 GOTO 1430 1470 SYSTEM 1480 CLS PRINTAT 10,5,"MESMO ARRANJO (S/N) INPUT A$ A$=UCASE$(A$) IF A$="N" THEN 1020 IF A$="S" THEN 1260 GOTO 1480 1540 CLS PRINTAT 10,5,"VOCE VENCEU. QUER JOGAR DE NOVO (S/N) GOTO 1430 1570 CLS ?"LINHA NUMERO","OBJETOS FOR I=1 TO P IF S(I)=0 GOTO 1620 ?I,S(I) 1620 NEXT I ' MOVIMENTO JOGADOR 1640 PRINTAT 22,1,"QUAL LINHA VAI ALTERAR INPUT N IF N>P OR N>INT(N) OR S(N)=0 THEN 1680 GOTO 1710 1680 PRINTAT 22,1,"VALOR ILEGAL SLEEP 5 GOTO 1640 1710 PRINTAT 22,1," ":PRINTAT 22,1,"QUANTOS OBJETOS INPUT T IF T>S(N) OR T>INT(T) OR T<1 THEN 1750 GOTO 1760 1750 PRINTAT 22,1,"VALOR ILEGAL ":SLEEP 5:GOTO 1710 1760 S(N)=S(N)-T G=G-T PRINTAT 22,1,"UM MOMENTO ... F=1 GOTO 1370 1810 CLS ?"LINHA NUMERO","OBJETOS FOR I=1 TO P IF S(I)=0 GOTO 1860 ?I,S(I) 1860 NEXT I ' MOVIMENTO MAQUINA PRINTAT 22,1,"UM MOMENTO ... R=5 FOR I=1 TO 5 V(I)=0 NEXT I FOR I=1 TO P C(I)=S(I) FOR E=5 TO 1 STEP -1 IF S(I)<2^(E-1) THEN 1980 T(I)=T(I)+10^(E-1) S(I)=S(I)-2^(E-1) 1980 NEXT E FOR Y=R TO 1 STEP -1 X(I,Y)=INT(T(I)/10^(Y-1)) T(I)=T(I)-X(I,Y)*10^(Y-1) V(Y)=V(Y)+X(I,Y) NEXT Y NEXT I R=0 FOR Y=5 TO 1 STEP -1 IF V(Y) MOD 2=0 THEN 2180 2080 IF R=1 THEN 2140 Q=INT(RND*P)+1 IF X(Q,Y)<>1 THEN 2080 X(Q,Y)=0 R=1 GOTO 2180 2140 IF X(Q,Y)=1 THEN 2170 X(Q,Y)=1 GOTO 2180 2170 X(Q,Y)=0 2180 NEXT Y FOR I=1 TO P T(I)=0 FOR Y=5 TO 1 STEP -1 K(I)=X(I,Y)*10^(Y-1) T(I)=T(I)+K(I) NEXT Y FOR E=5 TO 1 STEP -1 IF T(I)<10^(E-1) THEN 2290 S(I)=S(I)+2^(E-1) T(I)=T(I)-10^(E-1) 2290 NEXT E NEXT I 2310 IF R=1 THEN 2350 Q=INT(RND*P)+1 IF S(Q)=0 THEN 2310 S(Q)=S(Q)-1 2350 D=C(Q)-S(Q) G=G-D PRINTAT 22,1,"VOU TIRAR"+STR$(D)+" DA LINHA"+STR$(Q) F=0 SLEEP 2 GOTO 1370 SUB PRINTAT (L,C,TEXT$) LOCATE L,C:?TEXT$; END SUB