44 lines
1.4 KiB
Plaintext
44 lines
1.4 KiB
Plaintext
(load "@lib/simul.l")
|
|
|
|
(scl 3)
|
|
|
|
(de forestFire (Dim ProbT ProbP ProbF)
|
|
(let Grid (grid Dim Dim)
|
|
(for Col Grid
|
|
(for This Col
|
|
(=: tree (> ProbT (rand 0 1.0))) ) )
|
|
(loop
|
|
(disp Grid NIL
|
|
'((This)
|
|
(cond
|
|
((: burn) "# ")
|
|
((: tree) "T ")
|
|
(T ". ") ) ) )
|
|
(wait 1000)
|
|
(for Col Grid
|
|
(for This Col
|
|
(=: next
|
|
(cond
|
|
((: burn) NIL)
|
|
((: tree)
|
|
(if
|
|
(or
|
|
(find # Neighbor burning?
|
|
'((Dir) (get (Dir This) 'burn))
|
|
(quote
|
|
west east south north
|
|
((X) (south (west X)))
|
|
((X) (north (west X)))
|
|
((X) (south (east X)))
|
|
((X) (north (east X))) ) )
|
|
(> ProbF (rand 0 1.0)) )
|
|
'burn
|
|
'tree ) )
|
|
(T (and (> ProbP (rand 0 1.0)) 'tree)) ) ) ) )
|
|
(for Col Grid
|
|
(for This Col
|
|
(if (: next)
|
|
(put This @ T)
|
|
(=: burn)
|
|
(=: tree) ) ) ) ) ) )
|