Project Objectives

This assignment will give you more experience on the use of:

  • classes
  • class methods
  • inheritance

In this project, you are going to use turtle graphics to draw one or more snow persons. You will define and use at least 7 classes in doing so. Using instances of these classes, you will write a main() function that creates and draws one or more snow people.

Project Specification

1. Define a minimum of 7 classes. Most can be classes for geometric shapes (e.g., Line, Rectangle, Circle, Triangle), but 3 must be drawing-specific classes (see #5).

2. Each class will have at least the following methods:

  • __init__: the constructor will take arguments indicating the positions (coordinate pairs, e.g., (0.0, 0.0)) of one or more reference points (e.g., start and end points for a line, vertices for a triangle, etc); and other arguments appropriate for an instance (e.g., pen color, fill color, etc.). To simplify creating instances, it will define appropriate default values for most of the arguments. (If the argument for fill color is the empty string (), the shape is not filled.)
  • __str__ : a conversion method, it returns the string to be used for printing an instance in Python.
  • draw : the draw method will take a turtle.Turtle object to use for drawing the shape.
  • Other arguments may be required for your methods; all arguments will be described in your docstrings.

3. All classes, methods and functions require a docstring for a general description of the object/method/function.

4. Define a main function that is called without any arguments. Your main function should create and draw one or more snow people at different positions on the canvas.

5. Define a drawing-specific class hierarchy containing (at least) 3 classes:

  • Snow_person : an instance contains (at least) the 3 snowballs
  • Snow_man : specializes a Snow_person with a handful of additional components (e.g., arms, buttons, head wear)
  • Snow_lady : specializes a Snow_person with an alternate set of additional components.

6. At a minimum, a snow person should include three snowballs, drawn one on top of the other, and two eyes and a mouth. Feel free to personalize your classes to include other components.

The idea is to make classes for geometric objects that you will need in drawing snow people. These objects store information about how they are to be drawn (position, pen and fill color, and such). Invoking the draw function on an object draws it on the canvas at the indicated position and using the indicated colors. The snow person classes are for making instances of snow people. An instance stores instances of the components (geometric objects) that make up an individual snow person. When creating an instance, you must supply a reference point (coordinate position). You will need to layout the positions for the components relative to this reference point. As an example of this style of class definition, we supply sample10.py. Study this example. Be sure you understand it before proceeding to write your solution. You can use the definitions for the Shape and Line classes in your program (not a requirement). If you do, these count as just one class definition you will need to write at least another 6 classes.

The screen shot below was created by a program that meets the specifications for this project. It shows an instance of a Snow_man class (left) and an instance of a Snow_lady class (right). See image.

Academic Honesty!
It is not our intention to break the school's academic policy. Posted solutions are meant to be used as a reference and should not be submitted as is. We are not held liable for any misuse of the solutions. Please see the frequently asked questions page for further questions and inquiries.
Kindly complete the form. Please provide a valid email address and we will get back to you within 24 hours. Payment is through PayPal, Buy me a Coffee or Cryptocurrency. We are a nonprofit organization however we need funds to keep this organization operating and to be able to complete our research and development projects.