Seed the pseudo-random generator on initialization.

Add example script to solve a maze by flood painting.
This commit is contained in:
Renaud 2017-05-19 11:19:13 +08:00
parent 674a3baba4
commit b4ff6798cd
3 changed files with 75 additions and 0 deletions

3
eval.c
View File

@ -13,6 +13,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "basic.h"
#include "bind.h"
@ -305,6 +306,8 @@ void varinit(void)
result = malloc( NSTRING) ;
ressize = NSTRING ;
}
seed = time( NULL) ;
}
/*

63
floodmaz.cmd Normal file
View File

@ -0,0 +1,63 @@
# 6 set $seed
execute-file maze.cmd
set %thisbuf $cbufname
10 store-macro # push x y
set %x $curcol
set %y $curline
select-buffer stack
beginning-of-file
insert-string %x
newline
insert-string %y
newline
select-buffer %thisbuf
!endm
11 store-macro # pop x y
select-buffer stack
beginning-of-file
set %x $line
1 kill-to-end-of-line
set %y $line
1 kill-to-end-of-line
select-buffer %thisbuf
set $curline %y
set $curcol %x
!endm
set $curline 1
set $curcol 0
execute-macro-10 #push stop position
set %x 1
set $curline 4
set $curcol %x
set %OC $curchar
set %NC &asc ""
!while &not &equ %x 0
set $curchar %NC
set %cc $curcol
set %ll $curline
set $curcol &add %cc 1
!if &equ $curchar %OC
execute-macro-10
!endif
set $curcol &add %cc -1
!if &equ $curchar %OC
execute-macro-10
!endif
set $curline &add %ll 1
set $curcol %cc
!if &equ $curchar %OC
execute-macro-10
!endif
set $curline &add %ll -1
set $curcol %cc
!if &equ $curchar %OC
execute-macro-10
!endif
execute-macro-11
!endwhile
set $curline 3
set $curcol 1

View File

@ -1,4 +1,7 @@
# record seed
# 5 set $seed
set %S $seed
# setup direction offsets
set %D1 0
set %D2 1
@ -83,6 +86,12 @@ set %cnt &tim &sub &div %w 2 1 &sub &div %l 2 1
set $curcol %x
!endwhile
# id maze
beginning-of-file
kill-to-end-of-line
insert-string &cat " Maze " &cat %w &cat "x" &cat &sub %l 2 &cat " #" %S
&sub $curwidth $curcol insert-string " "
# draw the entrance
set $curline 3
set $curcol 1