"for" loops are used frequently in this project. For example, a parallelogram is drawn by repeating the loop, since the degree sum of the two interior angles on the same side is 180.
All of my basic shape functions work properly as shown in image1.

As for aggregate shapes, random package is imported. For example, flowers are made from random number of triangles (i.e. petals), I limited the number of triangles within the range of 3-12 so as not to make flowers too dense with petals, and here, a "for" loop is also introduced to repeat the process of rotating the triangle according to whatever number of triangles that the turtle intends to draw. When I made the paintings, random package is imported again so that I can draw the random number of flowers on each painting. The location at which the flowers are drawn is also within a certain range (i.e. the side length of the picture frame).Therefore, the more complex aggregate shape "painting" involves two levels of randomness-the number of petals in a single flower and the number of flowers in a single painting.Also worth mentioning is the shape "table". I managed to create a 2D image by using parallelogram and rectangles to create the perspective. All of my aggregate shape functions work properly as shown in image2.They were tested at different locations and of different sizes.


Creating scenes are more complicated, since I have to gauge the size of every objects and add color. The one problem I encountered is that the coloring would follow the path by which the turtle moves to the next (x,y) position. To solve this problem, for example, in my "chandelier" shape, I added "beginfill" and "endfill" in the basic shape "block" so that the turtle knows when to fill colors in the aggregate shapes.

The museum scene, as shown by image 3, has a chandelier, two paintings, two tables, and one Christmas tree. I did not use random package for the number of paintings, since doing so would make the scene messy and packed.




The desert scene, as shown by image 3, has 7 cactuses and 100 stars which are dispersed randomly. I set the range of the position of stars within (-300*size,300*size). A "for" loop was also introduced.


  1. Does breaking a scene into pieces make it easier to create?
    Yes, this the level of complexity increases from pieces to a scene, you do not have to worry about the entirety of the whole scene once you make sure each subordinated function works effectively.
  2. What is a for loop and why are they useful?
    A "for" loop includes the number of times you want this function to repeat, and it makes your actions efficient, since you don't have to repeat the same command. 
  3. What is the difference between using "from turtle import *" and "import turtle"? Explain from both a practical use point of view and how they differentially affect the global symbol table.
    Using "from turtle import" means that you don't have to type "turtle." every time you want to use the symbol table for turtle module. In contrast, when you write "import turtle", you have to write "turtle."plus any symbol table you wish to utilize, for example (turtle.forward).
  4. What is your favorite museum?
  5. Isabella Stewart Gardner Museum(smile)