We already introduced the idea of drawing with turtles. In the next few sections we will delve more deeply into this fun module. The turtle module is designed to help students learning how to program explore programming concepts in a way that is visually fun and interesting. Using turtles also will allow us in later chapters to explore aspects of interactive programming. With turtles, there is a visual output that an end user can view and (as you learn more programming) interact with.
On line 2, we create and open what the turtle module calls a screen (we would prefer to call it a window, or in the case of this web version of Python simply a canvas), which we assign to variable wn. The dot notation turtle.Screen means βThe Screen type that is defined within the turtle moduleβ. Every screen/window contains a canvas, which is the area inside the window on which we can draw.
In line 3 we create a turtle. Remember that Python is case sensitive, so the module name, turtle, with a lowercase t, is different from the type Turtle because of the uppercase T. The variable maya is made to refer to this turtle.
In lines 4-8, we instruct the turtle βmayaβ to draw part of a dashed line. Run the program and trace through lines 5-9 to understand what is happening. The turtle only leaves a trace when the tail (pen) is down. When you create a turtle, their tail is down by default.
Modify the program by adding the commands necessary to have maya make a dashed line that goes to the right edge of the canvas. The code will be repetitive. In the next chapter we will learn how to write this code so that it is more efficient!
Maya the turtle is an object and once we have created a turtle object, we can make it perform actions. Objects have methods, things that they can do. We can make use of this by invoking or activating turtle methods. A method is a set of program instructions that are for a specific type of object. Turtle methods are sets of instructions that all turtles know how to respond to. Because maya is an object, we use dot notation to call or invoke the turtle methods; maya.forward(50) says to call the forward() method, for the turtle object maya, with the specific distance of 50 units.
In addition to methods β the things an object can do β an object can also have attributes β (sometimes called properties) which store information about the current state of an object. For example, each turtle has a color attribute. The method invocation maya.color("red") will make maya red and the line that maya draws will be red too.
The color of the turtle, the width of its pen(tail), the position of the turtle within the window, which way it is facing, and so on are all part of its current state. Similarly, the window object has a background color which is part of its state.
Quite a number of methods exist that allow us to modify the turtle and window objects. In the example below, we show just a couple and have only commented those lines that are different from the previous example. Note also that we have decided to call our turtle object tess. When we create objects, we can call them whatever we want.
The last line plays a very important role. The wn variable refers to the window shown above. When we invoke its exitonclick method, the program pauses execution and waits for the user to click the mouse somewhere in the window. When this click event occurs, the response is to close the turtle window and exit (stop execution of) the Python program.
Modify this program so that before it creates the window, it prompts the user to enter the desired background color. It should store the userβs responses in a variable, and modify the color of the window according to the userβs wishes. (Hint: you can find a list of permitted color names at https://www.w3schools.com/colors/colors_names.asp. It includes some quite unusual ones, like βPeachPuffβ and βHotPinkβ.)
Do the same for the width of tessβ pen. Hint: your dialog with the user will return a string, but tessβ pensize method expects its argument to be an int. That means you need to convert the string to an int before you pass it to pensize.
But the lines are mixed up. The program should do all necessary set-up and create the turtle and set the pen size to 10. The turtle should then turn to face south, draw a line that is 150 pixels long, turn to face east, and draw a line that is 75 pixels long. Finally, set the window to close when the user clicks in it.
Drag the blocks of statements from the left column to the right column and put them in the right order. Then click on Check Me to see if you are right. You will be told if any of the lines are in the wrong order.
But the lines are mixed up. The program should do all necessary set-up, create the turtle, and set the pen size to 10. After that the turtle should turn to face north, draw a line that is 150 pixels long, turn to face west, and draw a line that is 50 pixels long. Next, the turtle should turn 180 degrees and draw a line that is 100 pixels long. Finally, set the window to close when the user clicks in it.
Drag the blocks of statements from the left column to the right column and put them in the right order. Then click on Check Me to see if you are right. You will be told if any of the lines are in the wrong order.