57 lines
1.3 KiB
Plaintext
57 lines
1.3 KiB
Plaintext
10 PAPER 6: CLS
|
|
20 DIM n$(20,30)
|
|
30 LET init=.5
|
|
40 LET f=.02
|
|
50 LET p=.05
|
|
60 PAPER 0
|
|
70 FOR i=0 TO 31
|
|
80 PRINT AT 0,i;" "
|
|
90 PRINT AT 21,i;" "
|
|
100 NEXT i
|
|
110 FOR i=0 TO 21
|
|
120 PRINT AT i,0;" "
|
|
130 PRINT AT i,31;" "
|
|
140 NEXT i
|
|
150 INK 7
|
|
160 PRINT AT 0,1;"FOREST FIRE for Rosetta Code"
|
|
170 LET generation=0
|
|
180 PRINT AT 21,1;"Generation 0"
|
|
190 LET trees=0
|
|
200 PRINT AT 21,22;"Cover"
|
|
210 FOR i=1 TO 20
|
|
220 FOR j=1 TO 30
|
|
230 IF RND<init THEN PAPER 4: INK 7: PRINT AT i,j;"T": LET trees=trees+1
|
|
240 NEXT j
|
|
250 NEXT i
|
|
260 LET generation=generation+1
|
|
270 INK 7
|
|
280 PAPER 0
|
|
290 PRINT AT 21,12;generation
|
|
300 PRINT AT 21,28;" "
|
|
310 PRINT AT 21,28;INT (trees/6+.5);"%"
|
|
320 FOR i=1 TO 20
|
|
330 FOR j=1 TO 30
|
|
340 LET n$(i,j)=SCREEN$ (i,j)
|
|
350 IF SCREEN$ (i,j)="B" THEN LET n$(i,j)=" ": GO TO 450
|
|
360 IF SCREEN$ (i,j)="T" THEN GO TO 390
|
|
370 IF RND<=p THEN LET n$(i,j)="T"
|
|
380 GO TO 450
|
|
390 FOR k=i-1 TO i+1
|
|
400 FOR l=j-1 TO j+1
|
|
410 IF SCREEN$ (k,l)="B" THEN LET n$(i,j)="B": LET k=i+2: LET l=j+2
|
|
420 NEXT l
|
|
430 NEXT k
|
|
440 IF RND<=f THEN LET n$(i,j)="B"
|
|
450 NEXT j
|
|
460 NEXT i
|
|
470 LET trees=0
|
|
480 FOR i=1 TO 20
|
|
490 FOR j=1 TO 30
|
|
500 IF n$(i,j)="T" THEN INK 7: PAPER 4: PRINT AT i,j;"T": LET trees=trees+1: GO TO 540
|
|
510 IF n$(i,j)="B" THEN INK 6: PAPER 2: PRINT AT i,j;"B": GO TO 540
|
|
520 PAPER 6
|
|
530 PRINT AT i,j;" "
|
|
540 NEXT j
|
|
550 NEXT i
|
|
560 GO TO 260
|