DECLARE SUB ExibirTempo() RANDOMIZE TIMER DEFINT A-Z DIM SHARED t! CLS DIM pLista(1 TO 20)AS STRING,pOk(1 TO 20) DIM Quadro(1 TO 20,1 TO 20)AS STRING*1 DIM Cor(1 TO 20,1 TO 20) FOR i=1 TO 20 pOk(i)=-1 FOR j=1 TO 20 Quadro(i,j)=" NEXT NEXT ?"Ca‡a-palavras LOCATE 2,1:?"[D]igitar palavras ou [L]er arquivo"; DO:a$=UCASE$(INPUT$(1)):LOOP UNTIL a$="D" OR a$="L IF a$="D" THEN LOCATE 2,1:?"Digite 20 palavras (de 5 a 20 letras) ELSE LOCATE 2,1:?SPACE$(80); LOCATE 2,1:LINE INPUT "Arquivo:";arq$ OPEN arq$ FOR INPUT AS #1 END IF FOR i=1 TO 20 1 IF a$="D" THEN LOCATE i+2,1:?USING "##:&";i;SPACE$(76); p$="":t=0 DO LOCATE i+2,4:?p$;"_ "; Tc:k$=INKEY$ SELECT CASE k$ CASE "A" TO "Z","a" TO "z":p$=p$+LCASE$(k$):t=t+1 CASE "":IF LEN(p$)>1 THEN p$=LEFT$(p$,LEN(p$)-1):t=t-1 ELSE p$="":t=0 CASE CHR$(13):EXIT DO CASE "":GOTO 1 CASE "":GOTO Tc CASE ELSE:BEEP END SELECT LOOP LOCATE i+2,4+LEN(p$):?" "; ELSE IF EOF(1)THEN ?"Erro: fim de arquivo":SYSTEM LINE INPUT #1,p$ t=LEN(p$) END IF teste=0 IF t<5 OR t>20 THEN 1 2 d=INT(RND*8) SELECT CASE d CASE 0 l=20-INT(RND*(21-t)) c=INT(RND*20)+1 CASE 1 l=20-INT(RND*(21-t)) c=INT(RND*(21-t))+1 CASE 2 l=INT(RND*20)+1 c=INT(RND*(21-t))+1 CASE 3 l=INT(RND*(21-t))+1 c=INT(RND*(21-t))+1 CASE 4 l=INT(RND*(21-t))+1 c=INT(RND*20)+1 CASE 5 l=INT(RND*(21-t))+1 c=20-INT(RND*(21-t)) CASE 6 l=INT(RND*20)+1 c=20-INT(RND*(21-t)) CASE 7 l=20-INT(RND*(21-t)) c=20-INT(RND*(21-t)) END SELECT pLista(i)=p$ tl=-1 3 l2=l:c2=c tt=0 FOR j=1 TO t x$=MID$(p$,j,1) IF tl THEN IF Quadro(l2,c2)<>x$ AND Quadro(l2,c2)<>" " THEN teste=teste+1 IF teste=400 THEN 1 ELSE 2 ELSEIF Quadro(l2,c2)=x$ THEN tt=tt+1 END IF ELSE Quadro(l2,c2)=x$ END IF SELECT CASE d CASE 0:l2=l2-1 CASE 1:l2=l2-1:c2=c2+1 CASE 2:c2=c2+1 CASE 3:l2=l2+1:c2=c2+1 CASE 4:l2=l2+1 CASE 5:l2=l2+1:c2=c2-1 CASE 6:c2=c2-1 CASE 7:l2=l2-1:c2=c2-1 END SELECT NEXT IF tl THEN IF tt0 d=VAL(k$) t=LEN(p$):tl=-1 COLOR 15,1 7 l2=lp:c2=cp FOR j=1 TO t IF tl THEN IF Quadro(l2,c2)<>MID$(p$,j,1)THEN EXIT FOR ELSE LOCATE l2+1,c2+1:?Quadro(l2,c2); Cor(l2,c2)=1 END IF SELECT CASE d CASE 8:l2=l2-1 CASE 9:l2=l2-1:c2=c2+1 CASE 6:c2=c2+1 CASE 3:l2=l2+1:c2=c2+1 CASE 2:l2=l2+1 CASE 1:l2=l2+1:c2=c2-1 CASE 4:c2=c2-1 CASE 7:l2=l2-1:c2=c2-1 END SELECT NEXT IF tl AND j>t THEN tl=0:GOTO 7 ELSE BEEP IF tl=0 THEN pOk(it)=0 NumAcerto=NumAcerto+1 IF NumAcerto=20 THEN COLOR 7,0:CLS ?"Fim do jogo - vocˆ ganhou SYSTEM END IF DO it=it+1 IF it=21 THEN it=1 LOOP UNTIL pOk(it) t!=TIMER END IF EXIT DO END SELECT IF Cor(alp,acp)=0 THEN LOCATE alp+1,acp+1:COLOR 7,1:?Quadro(alp,acp); LOCATE lp+1,cp+1:COLOR 15,1:?Quadro(lp,cp); LOOP CASE " COLOR 7,0 CLS SYSTEM CASE "":GOTO 5 CASE ELSE:BEEP END SELECT LOOP SYSTEM SUB ExibirTempo t=CINT(60-TIMER+t!) COLOR 7,1 LOCATE 23,1:?USING "Tempo restante :##s";t; IF t<1 THEN COLOR 7,0 CLS ?"Fim do jogo - vocˆ perdeu SYSTEM END IF END SUB