mirror of
https://github.com/PDP-10/its.git
synced 2026-01-25 19:56:53 +00:00
More LLOGO files.
This commit is contained in:
145
doc/llogo/demos.germ
Normal file
145
doc/llogo/demos.germ
Normal file
@@ -0,0 +1,145 @@
|
||||
|
||||
|
||||
GOBBLE
|
||||
THE PURPOSE IN LIFE OF THE SIMPLEST GERMS IS JUST TO EAT.
|
||||
WE SHALL CALL THIS SPECIES THE "GOBBLERS" . EACH SQUARE IN GERMLAND
|
||||
INITIALLY IS VERDANT WITH FOOD. BUT WHEN A GOBBLER ARRIVES, ALL OF
|
||||
THE FOOD ON THE SQUARE IS EATEN. THE RESULT IS A BARREN
|
||||
SQUARE AND THE EATER IS FORCED TO MOVE ON. THE GOAL OF PROGRAMS FOR
|
||||
GOBBLERS IS TO KEEP THEM MOVING AS LONG AS THERE IS ANY FOOD LEFT IN
|
||||
GERMLAND. THE BASIC PROBLEM GOBBLERS FACE IS GETTING TRAPPED IN A
|
||||
REGION OF NO FOOD.
|
||||
|
||||
HERE IS A LISTING OF A SIMPLE GOBBLER PROGRAM:
|
||||
|
||||
TO GOBBLE
|
||||
10 EAT FOOD HERE
|
||||
20 IF FOODP NORTH THEN MOVE NORTH STOP
|
||||
30 IF FOODP SOUTH THEN MOVE SOUTH STOP
|
||||
40 IF FOODP EAST THEN MOVE EAST STOP
|
||||
50 IF FOODP WEST THEN MOVE WEST STOP
|
||||
END
|
||||
|
||||
|
||||
(DEFUN GOBBLE NIL
|
||||
(PROG NIL
|
||||
10. (EAT (FOOD (HERE)))
|
||||
20. (COND ((FOODP (NORTH)) (MOVE (NORTH)) (STOP)))
|
||||
30. (COND ((FOODP (SOUTH)) (MOVE (SOUTH)) (STOP)))
|
||||
40. (COND ((FOODP (EAST)) (MOVE (EAST)) (STOP)))
|
||||
50. (COND ((FOODP (WEST)) (MOVE (WEST)) (STOP)))
|
||||
(END)))
|
||||
(PRINC REPEAT-INTRO)
|
||||
|
||||
(UNITE 'GOBBLE ':CONTENTS)
|
||||
|
||||
(GRID 5.)
|
||||
|
||||
(SETQ :HUNGRY T)
|
||||
|
||||
(GERM 1. '(0. 0.))
|
||||
|
||||
(FILLFOOD 1.)
|
||||
|
||||
(READCH)
|
||||
|
||||
(PRINTGRID)
|
||||
(REPEAT (GOBBLE))
|
||||
|
||||
NIL
|
||||
FANCY/ GOBBLER
|
||||
HERE IS A SIMILAR, BUT SOMEWHAT FANCIER
|
||||
GOBBLER. IT USES THE DIRECTIONAL PRIMITIVES, AND GOES AROUND
|
||||
THE GRID, RATHER THAN UP AND DOWN. IT LOOKS LIKE THIS:
|
||||
|
||||
|
||||
TO XGOBBLE
|
||||
10 LOCAL 'X
|
||||
20 MAKE 'X 0
|
||||
25 EAT FOOD HERE
|
||||
30 IF FOODP FRONT THEN MOVE FRONT STOP
|
||||
40 MAKE 'X :X + 1 IF :X = 4 THEN STOP
|
||||
50 RIGHT 90 GO 30
|
||||
END
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
(DEFUN XGOBBLE NIL
|
||||
(PROG (:X)
|
||||
10. (LOCAL 'X)
|
||||
20. (MAKE 'X 0.)
|
||||
25. (EAT (FOOD (HERE)))
|
||||
30. (COND ((FOODP (FRONT)) (MOVE (FRONT)) (STOP)))
|
||||
40. (MAKE 'X (INFIX-PLUS :X 1.))
|
||||
(COND ((INFIX-EQUAL :X 4.) (STOP)))
|
||||
50. (RIGHT 90.)
|
||||
(GO 30.)
|
||||
(END)))
|
||||
(UNITE 'XGOBBLE ':CONTENTS)
|
||||
|
||||
(PRINC REPEAT-INTRO)
|
||||
(GRID 5.)
|
||||
|
||||
(SETQ :HUNGRY T)
|
||||
|
||||
(GERM 1. '(0. 0.))
|
||||
|
||||
(FILLFOOD 1.)
|
||||
|
||||
(READCH)
|
||||
|
||||
(PRINTGRID)
|
||||
(REPEAT (XGOBBLE))
|
||||
|
||||
NIL
|
||||
|
||||
|
||||
GOAROUND
|
||||
THE GERMLAND GRID MAY CONTAIN OBSTACLES, WHICH
|
||||
PRINT AS X'S. A GERM CANNOT MOVE ONTO A SQUARE
|
||||
WHICH IS AN OBSTACLE, BUT IT CAN DETECT WHETHER
|
||||
THE SQUARE ON ANY PARTICULAR SIDE OF IT CONTAINS
|
||||
AN OBSTACLE. THE FOLLOWING PROGRAM DEMONSTRATES THE
|
||||
USE OF OBSTACLES: THIS GERM EXPECTS TO START OUT
|
||||
NEXT TO A COLLECTION OF OBSTACLES, WHICH IT PROCEEDS
|
||||
TO GOAROUND.
|
||||
|
||||
TO GOAROUND
|
||||
10 TEST TOUCH LEFTSIDE
|
||||
20 IFTRUE IF TOUCH FRONT THEN RIGHT 90 GO 20
|
||||
30 IFTRUE FORWARD 1 STOP
|
||||
40 RIGHT 270 FORWARD 1
|
||||
END
|
||||
|
||||
|
||||
(DEFUN GOAROUND NIL
|
||||
(PROG NIL
|
||||
10. (TEST (TOUCH (LEFTSIDE)))
|
||||
20. (IFTRUE (COND ((TOUCH (FRONT)) (RIGHT 90.) (GO 20.))))
|
||||
30. (IFTRUE (FORWARD 1.) (STOP))
|
||||
40. (RIGHT 270.)
|
||||
(FORWARD 1.)
|
||||
(END)))
|
||||
(UNITE 'GOAROUND ':CONTENTS)
|
||||
(PRINC REPEAT-INTRO)
|
||||
(GRID 5.)
|
||||
|
||||
(SETQ :HUNGRY NIL)
|
||||
|
||||
(GERM 1. '(4. 1.))
|
||||
|
||||
(MAPC 'OBSTRUCT
|
||||
'((1. 1.) (1. 2.) (2. 2.) (2. 3.) (3. 1.) (3. 2.)))
|
||||
|
||||
(READCH)
|
||||
|
||||
(PRINTGRID)
|
||||
(REPEAT (GOAROUND))
|
||||
|
||||
NIL
|
||||
|
||||
NIL
|
||||
|
||||
|
||||
BIN
doc/llogo/gc.doc
Normal file
BIN
doc/llogo/gc.doc
Normal file
Binary file not shown.
BIN
doc/llogo/inface.doc
Normal file
BIN
doc/llogo/inface.doc
Normal file
Binary file not shown.
Reference in New Issue
Block a user