6. The Garden with Repetitions <<< Contents >>> 8. Peter Walks on Marks
The item in front of Peter
element can be used not only for laying an item in front of
Peter, but also for detecting what item lies in front of Peter.
We will use such testing in another method of planting the
garden, based on a cycle with a condition.
In the Basic Elements, Trash window, find the conditional repeating of commands
element in the program
control
group. Drag it to the
beginning of the program from the last chapter (in front of all
commands). Move the commands for making a step and laying down a
flower in front of Peter into the repeat commands
cycle body. Leave the commands for turning left and waiting for a
key to be pressed after the cycle. You can discard the rest of
the commands.
The while is valid
cycle element tests a condition, which specifies how long should
the commands in the cycle be repeated. Into the condition, we
will put a test detecting whether there is an empty square in
front of Peter. To assemble the condition, we will use the item identity
element. It is in the Basic
Elements, Trash window, in the
sheet
group. Drag this element into the while is valid
cycle element. Into the item
identity element, we will
insert two elements that will be compared. The first one is item in front of Peter
;
the second is empty
square
(from the Global Variables and Functions window). Here is the result:
Try to run the program. Peter plants flowers to the right border of the window, and then he turns up and waits for a key to be pressed. If the function of the program is not clear to you, we can take a closer look at it.
How does conditional repeating work? The cycle elements descriptions tell us: "while is valid (something), repeat commands (something)". At a closer look, it means the following: In the beginning, the cycle detects, whether the condition is true. If it is, the commands in the cycle body are performed. Everything is repeated from the beginning then. The condition is evaluated again, and if it is true, the commands are performed again. If the condition is not valid, nothing is performed, the cycle ends, and the program continues by performing the commands after the cycle.
The program could be described in this way: In the beginning, the cycle asks the testing function that evaluates the condition: "Is the condition true?" The testing function here is the function for comparing items. It detects: "Is there an empty square in front of Peter?" If there is, it replies to the cycle: "Yes, the condition is true." In that case, the cycle performs the commands in its body Peter lays a flower and makes a step. This is repeated until Peter reaches the border of the sheet. The testing function detects that there is not an empty square in front of Peter now, and tells so to the cycle. The cycle does not continue. After that, Peter turns left, and the program pauses and waits for a key to be pressed.
After laying flowers in one row, Peter stays turned left, heading another row. We will test, whether there is an empty square in front of him, and if there is, we will tell him to plant another row. When he gets back to his original position, there will not be an empty square in front of him, but a flower that he has planted, and so he will stop.
This means that now we will take another conditional repeating of
commands cycle. We will put it
to the beginning of the program, and into its body, we will move
(using the left mouse button) the previously created cycle and
the command for turning left. The command for waiting for a key
to be pressed stays at the end of the program. Into the outer
cycle condition, copy (using the right mouse button) the
condition testing an empty square in front of Peter (you do this
by dragging the item
identity
element). Here is the
result:
The program is ready; all that remains is to test it.
6. The Garden with Repetitions <<< Contents >>> 8. Peter Walks on Marks