73 lines
1.6 KiB
Plaintext
73 lines
1.6 KiB
Plaintext
10 DIM F$(20,30)
|
|
20 DIM N$(20,30)
|
|
30 LET INIT=.5
|
|
40 LET F=.02
|
|
50 LET P=.05
|
|
60 PRINT AT 0,1;"[FOREST FIRE FOR ROSETTA CODE]"
|
|
70 FOR I=0 TO 21
|
|
80 PRINT AT I,0;"[ ]"
|
|
90 PRINT AT I,31;"[ ]"
|
|
100 NEXT I
|
|
110 FOR I=1 TO 30
|
|
120 PRINT AT 21,I;"[ ]"
|
|
130 NEXT I
|
|
140 LET G=0
|
|
150 LET T=0
|
|
160 PRINT AT 21,1;"[GENERATION 0]"
|
|
170 PRINT AT 21,20;"[COVER]"
|
|
180 FOR I=1 TO 20
|
|
190 FOR J=1 TO 30
|
|
200 IF RND>=INIT THEN GOTO 240
|
|
210 PRINT AT I,J;"0"
|
|
220 LET F$(I,J)="0"
|
|
230 LET T=T+1
|
|
240 NEXT J
|
|
250 NEXT I
|
|
300 PRINT AT 21,26;"[ ]"
|
|
310 LET N=INT (.5+T/6)
|
|
320 GOSUB 1000
|
|
330 PRINT AT 21,26;I$;"[ PC]"
|
|
340 FOR I=1 TO 20
|
|
350 PRINT AT I,0;"[>]"
|
|
360 FOR J=1 TO 30
|
|
380 IF F$(I,J)<>"[a]" THEN GOTO 410
|
|
390 LET N$(I,J)=" "
|
|
400 GOTO 530
|
|
410 IF F$(I,J)<>" " THEN GOTO 433
|
|
420 IF RND<=P THEN LET N$(I,J)="0"
|
|
430 GOTO 530
|
|
433 LET N$(I,J)=CHR$ (1+CODE F$(I,J))
|
|
437 IF N$(I,J)>"Z" THEN LET N$(I,J)="£"
|
|
440 FOR K=I-1 TO I+1
|
|
450 FOR L=J-1 TO J+1
|
|
460 IF K=0 OR L=0 OR K=21 OR L=21 THEN GOTO 480
|
|
470 IF F$(K,L)="[a]" THEN GOTO 510
|
|
480 NEXT L
|
|
490 NEXT K
|
|
500 GOTO 520
|
|
510 LET N$(I,J)="[a]"
|
|
520 IF RND<=F THEN LET N$(I,J)="[a]"
|
|
530 NEXT J
|
|
540 PRINT AT I,0;"[ ]"
|
|
550 NEXT I
|
|
552 LET G=G+1
|
|
554 LET N=G
|
|
556 GOSUB 1000
|
|
558 PRINT AT 21,12;I$
|
|
560 LET T=0
|
|
570 FOR I=1 TO 20
|
|
575 PRINT AT I,31;"[<]"
|
|
580 FOR J=1 TO 30
|
|
590 IF N$(I,J)<>"[a]" AND N$(I,J)<>" " THEN LET T=T+1
|
|
600 NEXT J
|
|
610 LET F$(I)=N$(I)
|
|
620 PRINT AT I,1;F$(I)
|
|
625 PRINT AT I,31;"[ ]"
|
|
630 GOTO 300
|
|
1000 LET S$=STR$ N
|
|
1010 LET I$=""
|
|
1020 FOR K=1 TO LEN S$
|
|
1030 LET I$=I$+CHR$ (128+CODE S$(K))
|
|
1040 NEXT K
|
|
1050 RETURN
|