```Search                        Top                                  Index
```
```TEACH RANDOM_WALK
2 Dec 2011

Using the RC_GRAPHIC (relative coordinates 2-D graphics) package in Pop11
and its Object Oriented extension rclib

Aaron Sloman, School of Computer Science
University of Birmingham, UK
http://www.cs.bham.ac.uk/~axs

Playing with some simple commands, and later exploring random walks.
See the video tutorial based on this file on youtube:

http://www.cs.bham.ac.uk/research/projects/poplog/figs/rclib

For examples of 'thinky' programs see
http://www.cs.bham.ac.uk/research/projects/poplog/examples

To make the commands available:

uses rclib

Additional backgroun information in TEACH files:

TEACH RC_GRAPHIC

TEACH RC_GRAPHPLOT

TEACH FACES

Create a window:

vars win1 = rc_new_window_object(400, 0, 500, 500, false,'win1');

win1 -> rc_current_window_object;

vars win2 = rc_new_window_object(400, 0, 600, 600, false,'win1');

win2 -> rc_current_window_object;

rc_kill_window_object(win1);

rc_kill_window_object(win2);

rc_start();

'black' -> rc_foreground(rc_window);

'red'   -> rc_foreground(rc_window);

'blue'   -> rc_foreground(rc_window);

;;; Horizontal and vertical steps

1-> rc_linewidth;
2-> rc_linewidth;

rc_jumpto(0, 0);

rc_xposition, rc_yposition =>

rc_drawby(20, 0);

rc_xposition, rc_yposition =>

rc_drawby(0, 20);

rc_xposition, rc_yposition =>

rc_drawby(-20, 0);

rc_drawby(0, -20);

'black' -> rc_foreground(rc_window);

rc_drawby(explode(oneof([[20 0][0 20][-20 0][0 -20]])));

'blue' -> rc_foreground(rc_window);

;;; Horizontal and vertical steps
rc_drawby(explode(oneof([[20 20] [-20 20] [-20 -20] [20 -20]])));

'red' -> rc_foreground(rc_window);
rc_drawby(explode(oneof([[20 0][20 20][0 20][-20 20][-20 0][-20 -20][0 -20][20 -20]])));

rc_start();

;;; should be documented

define random_walk(options, steps, delay, clear, colour);

if clear then rc_start() endif;

if isstring(colour) then

colour -> rc_foreground(rc_window)

endif;

rc_jumpto(0,0);

repeat steps times
rc_drawby(explode(oneof(options)));

if delay then syssleep(delay) endif;
endrepeat;

enddefine;

random_walk([[20 0][0 20][-20 0][0 -20]], 100, 5, false, 'black');

random_walk([[20 0][0 20][-20 0][0 -20]], 100, 5, false, 'blue');

random_walk([[5 0][0 5][-5 0][0 -5]], 100, false, true, 'black');

random_walk([[5 5][-5 5][-5 -5][5 -5]], 100, 1, true, 'blue');

random_walk([[5 0][5 5][0 5][-5 5][-5 0][-5 -5][0 -5][5 -5]],
100, 1, true, 'red');

random_walk([[5 0][5 5][0 5][-5 5][-5 0][-5 -5][0 -5][18 -18]],
100, 20, true, 'red');

--- \$usepop/pop/teach/random_walk.p