Fun with Shapes

shape.py: 2 points
spiral.py: 4 points
fancyspiral.py: 5 points


Shapes

In shape.py you will be drawing a shape using a loop, just like you did with the square in the Warmup. Use a for loop with the picture.draw_forward() and picture.rotate() commands to draw a polygon that has 6 or more sides, where all sides are of equal length. (So you might draw a hexagon, a heptagon, an octagon, or something with even more sides.)

ReadMe

All of the turns in a shape will add up to 360 degrees, since you turn completely around while drawing it.

Your shape should look something like this:

Feel free to get creative with both the shape color and background color!

Spiral

In the previous problem, you likely used a single for loop to draw your shape. Now, in spiral.py we’ll put that for loop inside another for loop to draw multiple shapes, rotated around a single point. To earn full credit on this task, you need to pick a shape with n sides, drawn in a color of your choice, which will be rotated and drawn m times.

As an example, here is a picture made by drawing a hexagon (n = 6) m = 8 times, rotating between each time:

Just like before, you need to rotate in a complete circle, which means that to get the amount to rotate between each shape, you should divide 360 by the number of shapes you’re drawing (m).

Fancy Spiral

The picture below was made by changing both the length of the sides of the shape and the color of the shape each time it was rotated. For this exercise, you will make a program named fancyspiral.py, which contains another fancy rotated shape.

To earn full credit for this task, your code needs to contain a shape, rotated and repeated multiple times, with some aspect of the shape changing every time it’s rotated (e.g., side length, color).

If you’d like to change the color of the shape in your loop, you will need to play around with passing RGB (red, green, blue) values to the picture.set_outline_color() command. For example, the code that changes the colors in the drawing above looks like this:

red = 50
green = 255
blue = 0


for i in range(8):
  picture.set_outline_color((red, green, blue))
  # add code to draw the hexagon in a for loop
  # use the picture.rotate() command to change where the next shape draws

  # increment/decrement the color values
  # we can use mod to ensure that each color value stays between 0 and 255 
  green = (green - 20) % 255
  blue = (blue + 20) % 255

Get creative with what you do here!