10 SCREEN 2,1 20 FOR F=1 TO 8 30 READ A$ 40 S$=S$+CHR$(VAL("&H"+A$)) 50 NEXT F 60 SPRITE$(0)=S$ 70 GOSUB 200 80 GOTO 80 100 DATA 6,6,74,FE,7C,0,0,0 200 ' Padrao mov 210 EY=95:A=10:L=50:PI=3.14159 220 FOR X=0 TO 255 STEP 3 230 Y = EY + A*SIN((X MOD L)*2*PI/(L-1)) 240 PUT SPRITE 0,(X,Y),10,0 250 NEXT X 260 RETURN
10 SCREEN 2,1
20 FOR F=1 TO 8
30 READ A$
40 S$=S$+CHR$(VAL("&H"+A$))
50 NEXT F
60 SPRITE$(0)=S$
70 GOSUB 200
80 GOTO 80
100 DATA 6,6,74,FE,7C,0,0,0
200 ' Padrao mov
210 EY=95:A=10:L=50:PI=3.14159
220 FOR X=0 TO 255 STEP 3
230 Y = EY + A*SIN((X MOD L)*2*PI/(L-1))
240 PUT SPRITE 0,(X,Y),10,0
250 N=INT(40*RND(-TIME))
260 IF N=5 THEN GOSUB 300
270 NEXT X
280 RETURN
300 ' Pausa do inseto
310 TIME=0
320 IF TIME/60 > 1 THEN RETURN ELSE 320
10 SCREEN 2,2 20 FOR F=1 TO 32 30 READ A$ 40 S$=S$+CHR$(VAL("&H"+A$)) 50 NEXT F 60 SPRITE$(0)=S$ 70 GOSUB 500:GOSUB 200 80 GOTO 80 100 DATA 00,00,00,C0,3F,7F,7F,7F 110 DATA 7F,50,50,40,00,00,00,00 120 DATA 14,1F,3F,7C,F8,F8,F8,F8 130 DATA E8,48,48,40,00,00,00,00 200 ' Padrao mov 210 EY=95:A=3:DY=0:S=.3:X=5 220 Y = EY + DY 230 PUT SPRITE 0,(X,Y-50),15,0 231 PUT SPRITE 1,(X,Y),1,0 232 PUT SPRITE 2,(X,Y+50),14,0 240 DY=DY+S: IF DY>A THEN S=-S 250 IF DY<0 THEN S=-S 260 IF X>214 THEN RETURN 270 X=X+1:GOTO 220 500 ' Cenario 510 LINE(0,0)-(255,191),12,BF 520 LINE(0,106)-(255,106),5 530 LINE(0,56)-(255,56),5 540 LINE(0,156)-(255,156),5 550 LINE(20,50)-(20,160),5 560 LINE(230,50)-(230,160),5 570 RETURN |
10 SCREEN 2,2
20 FOR F=1 TO 32
30 READ A$
40 S$=S$+CHR$(VAL("&H"+A$))
50 NEXT F
60 SPRITE$(0)=S$
70 GOSUB 500:GOSUB 200
80 GOTO 80
100 DATA 00,00,00,C0,3F,7F,7F,7F
110 DATA 7F,50,50,40,00,00,00,00
120 DATA 14,1F,3F,7C,F8,F8,F8,F8
130 DATA E8,48,48,40,00,00,00,00
200 ' Padrao mov
210 EY=95:A=3:DY=0:S=.3:XA=5:XB=5:XC=5
220 Y = EY + DY
230 PUT SPRITE 0,(XA,Y-50),15,0
231 PUT SPRITE 1,(XB,Y),1,0
232 PUT SPRITE 2,(XC,Y+50),14,0
240 DY=DY+S: IF DY>A THEN S=-S
250 IF DY<0 THEN S=-S
260 IF XA>214 OR XB>214 OR XC>214 THEN RETURN
270 XA=XA+INT(RND(-TIME)*5)+1
280 XB=XB+INT(RND(-TIME)*5)+1
290 XC=XC+INT(RND(-TIME)*5)+1
300 GOTO 220
500 ' Cenario
510 LINE(0,0)-(255,191),12,BF
520 LINE(0,106)-(255,106),5
530 LINE(0,56)-(255,56),5
540 LINE(0,156)-(255,156),5
550 LINE(20,50)-(20,160),5
560 LINE(230,50)-(230,160),5
570 RETURN
|
10 SCREEN 2,0
20 FOR F=1 TO 8
30 READ A$
40 S$=S$+CHR$(VAL("&H"+A$))
50 NEXT F
60 SPRITE$(0)=S$
70 F=0:X=128:Y=95:XO=INT(RND(-TIME)*248):YO=INT(RND(-TIME)*184)
80 C=STICK(0)
85 IF F=0 THEN K=14 ELSE K=12
90 PUT SPRITE 0,(X,Y),5,0
100 PUT SPRITE 1,(XO,YO),K,0
110 IF C=1 THEN Y=Y-1
120 IF C=2 THEN X=X+1:Y=Y-1
130 IF C=3 THEN X=X+1
140 IF C=4 THEN X=X+1:Y=Y+1
150 IF C=5 THEN Y=Y+1
160 IF C=6 THEN X=X-1:Y=Y+1
170 IF C=7 THEN X=X-1
180 IF C=8 THEN X=X-1:Y=Y-1
190 GOSUB 500:GOTO 80
200 DATA FF,FF,FF,FF,FF,FF,FF,FF
500 ' Monitora distancia
510 F=0
520 IF ABS(X-XO)<30 AND ABS(Y-YO)<30 THEN F=1
530 RETURN
10 SCREEN 2,0
20 FOR F=1 TO 8
30 READ A$
40 S$=S$+CHR$(VAL("&H"+A$))
50 NEXT F
60 SPRITE$(0)=S$
70 F=0:X=128:Y=95:XO=INT(RND(-TIME)*248):YO=INT(RND(-TIME)*184)
80 C=STICK(0)
85 IF F=0 THEN K=14 ELSE K=12
90 PUT SPRITE 0,(X,Y),5,0
100 PUT SPRITE 1,(XO,YO),K,0
110 IF C=1 THEN Y=Y-1
120 IF C=2 THEN X=X+1:Y=Y-1
130 IF C=3 THEN X=X+1
140 IF C=4 THEN X=X+1:Y=Y+1
150 IF C=5 THEN Y=Y+1
160 IF C=6 THEN X=X-1:Y=Y+1
170 IF C=7 THEN X=X-1
180 IF C=8 THEN X=X-1:Y=Y-1
190 GOSUB 500:GOTO 80
200 DATA FF,FF,FF,FF,FF,FF,FF,FF
500 ' Monitora distancia e reage fugindo
510 F=0
520 PX=X-XO:PY=Y-YO
530 IF ABS(PX)<30 AND ABS(PY)<30 THEN F=1 ELSE RETURN
540 IF (ABS(PX)<ABS(PY)) THEN XO=XO-1*SGN(PX) ELSE YO=YO-1*SGN(PY)
550 RETURN
Máquina de estados
A máquina de estados estabelece diferentes padrões comportamentais para um objeto, de acordo com a situação em curso.
10 SCREEN 2,0
20 FOR F=1 TO 8
30 READ A$
40 S$=S$+CHR$(VAL("&H"+A$))
50 NEXT F
60 SPRITE$(0)=S$
65 E=0: ' 0=busca, 1=persegue
66 DX=1:DY=1
70 X=128:Y=95:XO=INT(RND(-TIME)*248):YO=INT(RND(-TIME)*184)
80 C=STICK(0)
85 IF E=0 THEN K=14 ELSE K=12
90 PUT SPRITE 0,(X,Y),5,0
100 PUT SPRITE 1,(XO,YO),K,0
110 IF C=1 THEN Y=Y-1
120 IF C=2 THEN X=X+1:Y=Y-1
130 IF C=3 THEN X=X+1
140 IF C=4 THEN X=X+1:Y=Y+1
150 IF C=5 THEN Y=Y+1
160 IF C=6 THEN X=X-1:Y=Y+1
170 IF C=7 THEN X=X-1
180 IF C=8 THEN X=X-1:Y=Y-1
190 GOSUB 500:GOTO 80
200 DATA FF,FF,FF,FF,FF,FF,FF,FF
500 ' Monitora distancia e altera estados
510 E=0
520 PX=X-XO:PY=Y-YO
530 IF ABS(PX)<40 AND ABS(PY)<40 THEN E=1
540 IF E=0 THEN GOSUB 600 ELSE 700
550 GOSUB 800:RETURN
600 ' Busca
610 XO=XO+DX
620 YO=YO+DY
630 IF INT(RND(-TIME))*10 = 3 THEN DX=-DX
640 IF INT(RND(-TIME))*10 = 7 THEN DY=-DY
650 RETURN
700 ' Persegue
710 IF (ABS(PX)>ABS(PY)) THEN XO=XO+1*SGN(PX) ELSE YO=YO+1*SGN(PY)
720 RETURN
800 ' Verifica limites
810 IF XO<0 THEN XO=0:DX=1
820 IF YO<0 THEN YO=0:DY=1
830 IF XO>247 THEN XO=247:DX=-1
840 IF YO>183 THEN YO=183:DY=-1
850 RETURN
<< Anterior | AI | Próxima >> |