#### Example: Random Solar System

Create a ‘random’ solar system and surrounding star field using these commented Logo procedures:

```TO solsys
reset
;reset the turtles and clear the environment

fullscreen
;don't display text

;ask the camera turtle to pull away from
;myrtle 1000 turtle units

penup
;raise the turtle's pen so she doesn't draw

hideturtle
;go incognito

stars
;a starfield around our solar system

setfillcolor yellow
icosphere 75
;make the sun, an icosphere 75 turtle units

dropanchor
;set Myrtle's 'anchor point' or the point
;she orbits around to her home position.
;By default it is somewhat in front of it.

pullout 100
;pull out from the anchor point 100 turtle units

repeat 10 [
;do the following ten times, to create ten planets

pullout 100
;pull out from the anchor point 100 more
;turtle units

orbitleft random 360
;orbit to the left between 0 and 360 degrees
;(up to one full orbit of the anchor point)

planet repcount
;the current iteration of the repeat loop
;as its parameter - the current planet number

]
;this is the end of the planet creation loop

snappy:forever [orbitdown 0.001]
;orbit around the scene
;snappy: is shorthand for 'ask "snappy []'

END

TO stars
;create a starfield

repeat 500 [

randomvectors
;points the turtle in a random 3D
;direction. 'Vectors' describe absolute
;directions in 3D space using numbers.
;We call them vectors so as to not confuse
;them with relative directions such as up,
;down, left or right. A turtle with certain
;vectors will always point a certain way.
;For now, that's all you need to know!

forward 1500 + random 500
;move forward 1500 turtle units plus
;between 0 and 499 turtle units in the
;turtle's forward direction - its forward
;'vector'

;Note: 'random' generates a number between
;0 and one less than the number you give it.
;The turtle knows what you mean when you say
;'random' because random is a primitive - a
;word the turtle knows.

up 90
;tilt the turtle up 90 degrees, one quarter of
;a circle or one quarter of a complete rotation.
;Like as if you leaned back so far you were
;staring up at the sky

randomfillcolor
;random means 'pick one at random', in this
;case a random fill color, numbered between 1
;and 15 (there are 16 default colors, but 0 is
;transparent and not typically a useful fill
;color!)

spot 5 + random 5
;make a 'star', a spot with a radius of 5
;turtle units plus 0 - 4 additional turtle units

home
;go back to the home position
]
;make 500 stars

END

TO planet :number
;make a planet. The number passed to
;planet is used to uniquely identify
;its 'model' - what it looks like

newmodel :number [
randomfillcolor
;Remember: not black!

icosphere 10 + random 25
;create a randomly-sized sphere

randomvectors

dountil fillcolor != yellow [randomfillcolor]
;not yellow!

spot 10 + random 30
;create a randomly-sizes spot.
;If it's bigger than the sphere
;then it will act as a ring

]
;make a random planet model with the
;name of the planet number stored
;in the :number container, which was
;created when the number was passed
;in to the planet procedure

;Models are not unique to turtles, and
;so they each need a unique name, regardless
;of whatever turtle 'wears' them. But that
;name can just be a number, as long as it
;is a unique number

hatch [
;hatch a new turtle from this spot

showturtle
;show the hatchling's model. Hatchlings
;models are hidden when they are hatched
;as are those of other turtles when they
;are newly created. Only Myrtle is shown
;by default

put 1 + random 10 in "speed
;generate a random number between
;0 and 9, add it to 1 and put it in
;a container named 'speed'

setmodel :number
;set the hatchling's 'model' or
;appearance to the name stored in
;the :number container

setanchor [0 0 0]
;set the 'anchor' or the point a turtle
;orbits around to [0 0 0], the location
;of the sun

forever [
orbitleft :speed * 0.001
]
;orbit around the sun 'forever'
]
;this is the end of the hatchling's code

END
```