home *** CD-ROM | disk | FTP | other *** search
- to "let's.explain
- JE CURSOR 1 6
- JP PR [Watch the next procedure. The]
- JL JP PR [action is a bit different so]
- JL JP PR [you can see how we "fake" the]
- JL JP PR [appearance of four independent]
- JL JP PR [turtles...]
- WAIT 30 CS
- end
-
- to "start
- JE CURSOR 1 6
- JP PR [Why should LadyBug Logo have just]
- JL JP PR [one turtle? Why not several?]
- JL JL JL JP PR [While we can't call up others,]
- JL JP PR [we can fake it...]
- JL JL JL JP PR [Take a look.]
- WAIT 20
- CT JB
- end
-
- to "kaleidoscope
- SET.UP
- REPEAT 25 [DEMO]
- end
-
- to "demo
- IF :STEP > 100 [MAKE "STEP 10]
- MAKE "STEP :STEP + 5
- MOVE
- RT :ANGLE
- IF OR :ANGLE > 45 :ANGLE < -45 [MAKE :ANGLE :ANGLE - ( :ANGLE * 2 ) ]
- MAKE "ANGLE :ANGLE + 5
- IF :C = 3 [MAKE "C 0]
- MAKE "C :C + 1
- SETPC :C
- end
-
- to "move
- MAKE "X1 XCOR
- MAKE "Y1 YCOR
- FD :STEP
- MAKE "X2 XCOR
- MAKE "Y2 YCOR
- PU SETXY :X1 - ( :X1 * 2 ) :Y1
- PD SETXY :X2 - ( :X2 * 2 ) :Y2
- PU SETXY :X1 - ( :X1 * 2 ) :Y1 - ( :y1 * 2 )
- PD SETXY :X2 - ( :X2 * 2 ) :Y2 - ( :Y2 * 2 )
- PU SETXY :X1 :Y1 - ( :Y1 * 2 )
- PD SETXY :X2 :Y2 - ( :Y2 * 2 )
- PU SETXY :X2 :Y2
- PD
- RT 15
- end
-
- to "set.up
- MAKE "C 1
- MAKE "STEP 20
- MAKE "ANGLE 5 HT
- end
-
- to "turtles :N :SIZE
- SET.ZERO
- SET.ONE
- SET.TWO
- SET.THREE
- TURTLES.FOUR :N :SIZE
- PR [WE NEVER SAID THEY WERE FAST.]
- WAIT 10
- CLEARWS
- LOAD "DEMO5
- START
- end
-
- to "turtles.four :N :SIZE
- IF :SIZE > :N [STOP]
- PR [ASK 0 [RT 90 FD :SIZE]]
- ASK 0 [RT 90 FD :SIZE]
- PR [ASK 1 [RT 105 FD :SIZE]]
- ASK 1 [RT 105 FD :SIZE]
- PR [ASK 2 [RT 125 FD :SIZE]]
- ASK 2 [RT 125 FD :SIZE]
- PR [ASK 3 [RT 45 FD :SIZE]]
- ASK 3 [RT 45 FD :SIZE]
- PR [TURTLES.FOUR :N :SIZE + 20]
- TURTLES.FOUR :N :SIZE + 20
- end
-
- to "ask :TNUM :COMMAND.LIST
- IF :TNUM = 0 [ZERO :COMMAND.LIST]
- IF :TNUM = 1 [ONE :COMMAND.LIST]
- IF :TNUM = 2 [TWO :COMMAND.LIST]
- IF :TNUM = 3 [THREE :COMMAND.LIST]
- end
-
- to "set.zero
- MAKE "OLDX0 XCOR
- MAKE "OLDY0 YCOR
- MAKE "OLDH0 HEADING
- end
-
- to "set.one
- MAKE "OLDX1 XCOR
- MAKE "OLDY1 YCOR
- MAKE "OLDH1 HEADING
- end
-
- to "set.two
- MAKE "OLDX2 XCOR
- MAKE "OLDY2 YCOR
- MAKE "OLDH2 HEADING
- end
-
- to "set.three
- MAKE "OLDX3 XCOR
- MAKE "OLDY3 YCOR
- MAKE "OLDH3 HEADING
- end
-
- to "zero :COMMAND.LIST
- SETXY :OLDX0 :OLDY0 SETH :OLDH0
- PD RUN :COMMAND.LIST PU
- MAKE "OLDX0 XCOR
- MAKE "OLDY0 YCOR
- MAKE "OLDH0 HEADING
- end
-
- to "one :COMMAND.LIST
- SETXY :OLDX1 :OLDY1 SETH :OLDH1
- PD RUN :COMMAND.LIST PU
- MAKE "OLDX1 XCOR
- MAKE "OLDY1 YCOR
- MAKE "OLDH1 HEADING
- end
-
- to "two :COMMAND.LIST
- SETXY :OLDX2 :OLDY2 SETH :OLDH2
- PD RUN :COMMAND.LIST PU
- MAKE "OLDX2 XCOR
- MAKE "OLDY2 YCOR
- MAKE "OLDH2 HEADING
- end
-
- to "three :COMMAND.LIST
- SETXY :OLDX3 :OLDY3 SETH :OLDH3
- PD RUN :COMMAND.LIST PU
- MAKE "OLDX3 XCOR
- MAKE "OLDY3 YCOR
- MAKE "OLDH3 HEADING
- end
-
- to "and :a :b
- if :a = "true [output :b = "true]
- output "false
- end
-
- to "or :a :b
- if :a = "true [output "true]
- output :b = "true
- end
-
- to "jb
- kaleidoscope
- let's.explain
- turtles 120 60
- end
-
- to "je
- CLEARTEXT CURSOR 1 1
- end
-
- to "jc
- BG 0 CS
- end
-
- to "jl
- print "
- end
-
- to "jp
- REPEAT 3 [JI]
- end
-
- to "ji
- TYPE CHAR 32
- end
-
- to "wait :t
- if :t = 0 [stop]
- make "t :t - 1
- wait :t
- end
-
- to "pr :LIST
- PRINT :LIST
- end
-