Instructions for circles

(produced at 11:40 a.m. UTC on 2021-10-31)

This task is part of ps06 which is due at 23:59 EDT on 2021-11-02.

You have the option to work with a partner on this task if you wish. Working with a partner requires more work to coordinate schedules, but if you work together and make sure that you are both understanding the code you write, you will make progress faster and learn more.

You can submit this task using this link.

Put all of your work for this task into the file circles.py
(you will create this file from scratch)

For this problem set, you have a choice: you must do the memory diagram and word search tasks, but you only need to do one of the circles or scales tasks. The circles task (this task) is graphics-oriented and works with turtle graphics, while the scales task is based on audio and music instead.

In this task you will define two functions:

  • concentricCircles
  • multicolorCircles

Your circles.py file should begin with this header, which you should paste into the file and fill out (as usual, each function you write must be documented):

"""
Authors:
Consulted:
Date:
Purpose: CS 111 circles task: draws concentric circles in alternating
colors.
"""
You will need to import turtle and turtleBeads by putting the following lines at the beginning of your code (import turtleBeads first so that the beLoud print statements will work correctly):

from turtleBeads import *
from turtle import *

Part A: concentricCircles

In this subtask, your goal is to generate pictures like those shown in these examples for concentricCircles, consisting of multiple concentric circles of alternating colors that form a bullseye pattern.

Define the concentricCircles function such that:

  1. It draws a series of concentric circles, where the first parameter specifies the diameter (not radius) of the outermost circle, and the second parameter specifies the number of circles to draw.
  2. The third and fourth parameters specify an inner and outer color, respectively. The inner color is used for the smallest, central circle, and then every other circle out to the edge alternates between these two colors.

Notes

  • Read the rules above carefully, to determine how to calculate the radius of the largest and smallest circles, as well as every radius in between.
  • You must not change the pen size from the default (1). You should not use penup or pendown to change the pen state.
  • The "inner" color is always used to color the smallest circle in the center.
  • You must use either a for loop or a while loop to draw the circles.
  • The order in which the circles are drawn matters, because whatever is drawn later covers stuff drawn earlier.
  • For this function, we recommend that you create an iteration table (see the lecture on list processing patterns) to plan out your strategy for solving it.
  • You must use the turtleBeads drawCircle function to draw your circles, rather than using the turtle circle function, because we will grade based on whether your calls to drawCircle are correct. Also, you must call color to set both the pen and fill color to the correct color, and you must do this before drawCircle is called in each iteration.

Testing

You can test your concentricCircles function by executing the example code in the shell. We recommend using noTrace beforehand and showPicture afterwards to speed things up. For testing repeatedly, you may want to set up a test function which might look like this (feel free to copy this code into your file):

def test():
    """
    Tests the functions in this file.
    """
    reset()
    noTrace()

    concentricCircles(200, 5, 'LightSalmon2', 'Khaki1')
    # TODO: more tests here

    hideturtle()
    showPicture()

Part B: multicolorCircles

For this part, you will create a multicolorCircles function which uses a nested loop to draw concentric circles using an arbitrary number of colors. These multicolorCircles examples show how it should work.

multicolorCircles must accept 3 parameters:

  1. A base radius, which will be the radius of the smallest circle, and which is also the difference between the radii of each pair of successively larger circles.
  2. A list of strings indicating colors to use in succession, starting from the outermost circle.
  3. A positive integer specifying the number of cycles to complete, where a single cycle involves using each color from the list of colors once.

Notes

  • As before, you must not change the pen size from the default, and you should not use penup or pendown to change the pen state.
  • Because each cycle uses every color from the list, the total number of circles will be equal to the length of the colors list times the number of cycles. You may assume that the cycles argument will always be an integer, which implies that every multicolored circle pattern will have one or more complete copies of the color cycle, never partial copies.
  • Whereas for concentricCircles you were given the outermost diameter as an argument, in multicolorCircles you are given the innermost radius. This value is also the difference between the radii of each successive circle, so for example, if the value was 10 and there were 3 circles, their radii would be 10, 20, and 30.
  • You must use two loops, one inside the other to accomplish this sub-task, and you should not use list multiplication, even though it might be convenient.

Bonus: circleDesign

This extra challenge is not part of the rubric and does not factor into your grade.

As a bonus challenge if you have extra time, get creative. Make a function named circleDesign which uses concentricCircles and/or multicolorCircles, possibly with one or more loops, to create a custom design. This example design gives a taste of what kinds of things you could do.

Examples

concentricCircles examples

These examples show what should be drawn when concentricCircles is called. Note that the turtle does not need to move from the starting position at all.

In []:
concentricCircles(120, 3, 'HotPink', 'LightSkyBlue1')
Prints
Start of filled shape. A 1-pensize HotPink circle centered at (0, 0) with radius 60 Filled in shape using HotPink. Start of filled shape. A 1-pensize LightSkyBlue1 circle centered at (0, 0) with radius 40 Filled in shape using LightSkyBlue1. Start of filled shape. A 1-pensize HotPink circle centered at (0, 0) with radius 20 Filled in shape using HotPink.
Image Start of filled shape.
A 1-pensize HotPink circle centered at (0, 0) with radius 60
Filled in shape using HotPink.
Start of filled shape.
A 1-pensize LightSkyBlue1 circle centered at (0, 0) with radius 40
Filled in shape using LightSkyBlue1.
Start of filled shape.
A 1-pensize HotPink circle centered at (0, 0) with radius 20
Filled in shape using HotPink.
In []:
concentricCircles(380, 4, 'LightSalmon2', 'Khaki1')
Prints
Start of filled shape. A 1-pensize Khaki1 circle centered at (0, 0) with radius 190 Filled in shape using Khaki1. Start of filled shape. A 1-pensize LightSalmon2 circle centered at (0, 0) with radius 142.5 Filled in shape using LightSalmon2. Start of filled shape. A 1-pensize Khaki1 circle centered at (0, 0) with radius 95 Filled in shape using Khaki1. Start of filled shape. A 1-pensize LightSalmon2 circle centered at (0, 0) with radius 47.5 Filled in shape using LightSalmon2.
Image Start of filled shape.
A 1-pensize Khaki1 circle centered at (0, 0) with radius 190
Filled in shape using Khaki1.
Start of filled shape.
A 1-pensize LightSalmon2 circle centered at (0, 0) with radius 142.5
Filled in shape using LightSalmon2.
Start of filled shape.
A 1-pensize Khaki1 circle centered at (0, 0) with radius 95
Filled in shape using Khaki1.
Start of filled shape.
A 1-pensize LightSalmon2 circle centered at (0, 0) with radius 47.5
Filled in shape using LightSalmon2.
In []:
concentricCircles(280, 7, 'Gold', 'DeepSkyBlue')
Prints
Start of filled shape. A 1-pensize Gold circle centered at (0, 0) with radius 140 Filled in shape using Gold. Start of filled shape. A 1-pensize DeepSkyBlue circle centered at (0, 0) with radius 120 Filled in shape using DeepSkyBlue. Start of filled shape. A 1-pensize Gold circle centered at (0, 0) with radius 100 Filled in shape using Gold. Start of filled shape. A 1-pensize DeepSkyBlue circle centered at (0, 0) with radius 80 Filled in shape using DeepSkyBlue. Start of filled shape. A 1-pensize Gold circle centered at (0, 0) with radius 60 Filled in shape using Gold. Start of filled shape. A 1-pensize DeepSkyBlue circle centered at (0, 0) with radius 40 Filled in shape using DeepSkyBlue. Start of filled shape. A 1-pensize Gold circle centered at (0, 0) with radius 20 Filled in shape using Gold.
Image Start of filled shape.
A 1-pensize Gold circle centered at (0, 0) with radius 140
Filled in shape using Gold.
Start of filled shape.
A 1-pensize DeepSkyBlue circle centered at (0, 0) with radius 120
Filled in shape using DeepSkyBlue.
Start of filled shape.
A 1-pensize Gold circle centered at (0, 0) with radius 100
Filled in shape using Gold.
Start of filled shape.
A 1-pensize DeepSkyBlue circle centered at (0, 0) with radius 80
Filled in shape using DeepSkyBlue.
Start of filled shape.
A 1-pensize Gold circle centered at (0, 0) with radius 60
Filled in shape using Gold.
Start of filled shape.
A 1-pensize DeepSkyBlue circle centered at (0, 0) with radius 40
Filled in shape using DeepSkyBlue.
Start of filled shape.
A 1-pensize Gold circle centered at (0, 0) with radius 20
Filled in shape using Gold.

multicolorCircles examples

These examples show what should be drawn when multicolorCircles is called. Note that the turtle does not need to move from the starting position at all.

In []:
multicolorCircles(16, ['black', 'blue', 'red', 'yellow'], 1)
Prints
Start of filled shape. A 1-pensize black circle centered at (0, 0) with radius 64 Filled in shape using black. Start of filled shape. A 1-pensize blue circle centered at (0, 0) with radius 48 Filled in shape using blue. Start of filled shape. A 1-pensize red circle centered at (0, 0) with radius 32 Filled in shape using red. Start of filled shape. A 1-pensize yellow circle centered at (0, 0) with radius 16 Filled in shape using yellow.
Image Start of filled shape.
A 1-pensize black circle centered at (0, 0) with radius 64
Filled in shape using black.
Start of filled shape.
A 1-pensize blue circle centered at (0, 0) with radius 48
Filled in shape using blue.
Start of filled shape.
A 1-pensize red circle centered at (0, 0) with radius 32
Filled in shape using red.
Start of filled shape.
A 1-pensize yellow circle centered at (0, 0) with radius 16
Filled in shape using yellow.
In []:
multicolorCircles( 12, ['red', 'orange', 'yellow', 'green', 'blue', 'navy', 'purple3'], 2 )
Prints
Start of filled shape. A 1-pensize red circle centered at (0, 0) with radius 168 Filled in shape using red. Start of filled shape. A 1-pensize orange circle centered at (0, 0) with radius 156 Filled in shape using orange. Start of filled shape. A 1-pensize yellow circle centered at (0, 0) with radius 144 Filled in shape using yellow. Start of filled shape. A 1-pensize green circle centered at (0, 0) with radius 132 Filled in shape using green. Start of filled shape. A 1-pensize blue circle centered at (0, 0) with radius 120 Filled in shape using blue. Start of filled shape. A 1-pensize navy circle centered at (0, 0) with radius 108 Filled in shape using navy. Start of filled shape. A 1-pensize purple3 circle centered at (0, 0) with radius 96 Filled in shape using purple3. Start of filled shape. A 1-pensize red circle centered at (0, 0) with radius 84 Filled in shape using red. Start of filled shape. A 1-pensize orange circle centered at (0, 0) with radius 72 Filled in shape using orange. Start of filled shape. A 1-pensize yellow circle centered at (0, 0) with radius 60 Filled in shape using yellow. Start of filled shape. A 1-pensize green circle centered at (0, 0) with radius 48 Filled in shape using green. Start of filled shape. A 1-pensize blue circle centered at (0, 0) with radius 36 Filled in shape using blue. Start of filled shape. A 1-pensize navy circle centered at (0, 0) with radius 24 Filled in shape using navy. Start of filled shape. A 1-pensize purple3 circle centered at (0, 0) with radius 12 Filled in shape using purple3.
Image Start of filled shape.
A 1-pensize red circle centered at (0, 0) with radius 168
Filled in shape using red.
Start of filled shape.
A 1-pensize orange circle centered at (0, 0) with radius 156
Filled in shape using orange.
Start of filled shape.
A 1-pensize yellow circle centered at (0, 0) with radius 144
Filled in shape using yellow.
Start of filled shape.
A 1-pensize green circle centered at (0, 0) with radius 132
Filled in shape using green.
Start of filled shape.
A 1-pensize blue circle centered at (0, 0) with radius 120
Filled in shape using blue.
Start of filled shape.
A 1-pensize navy circle centered at (0, 0) with radius 108
Filled in shape using navy.
Start of filled shape.
A 1-pensize purple3 circle centered at (0, 0) with radius 96
Filled in shape using purple3.
Start of filled shape.
A 1-pensize red circle centered at (0, 0) with radius 84
Filled in shape using red.
Start of filled shape.
A 1-pensize orange circle centered at (0, 0) with radius 72
Filled in shape using orange.
Start of filled shape.
A 1-pensize yellow circle centered at (0, 0) with radius 60
Filled in shape using yellow.
Start of filled shape.
A 1-pensize green circle centered at (0, 0) with radius 48
Filled in shape using green.
Start of filled shape.
A 1-pensize blue circle centered at (0, 0) with radius 36
Filled in shape using blue.
Start of filled shape.
A 1-pensize navy circle centered at (0, 0) with radius 24
Filled in shape using navy.
Start of filled shape.
A 1-pensize purple3 circle centered at (0, 0) with radius 12
Filled in shape using purple3.
In []:
multicolorCircles(4, ['Aquamarine2', 'Khaki2', 'LimeGreen'], 12)
Prints
Start of filled shape. A 1-pensize Aquamarine2 circle centered at (0, 0) with radius 144 Filled in shape using Aquamarine2. Start of filled shape. A 1-pensize Khaki2 circle centered at (0, 0) with radius 140 Filled in shape using Khaki2. Start of filled shape. A 1-pensize LimeGreen circle centered at (0, 0) with radius 136 Filled in shape using LimeGreen. Start of filled shape. A 1-pensize Aquamarine2 circle centered at (0, 0) with radius 132 Filled in shape using Aquamarine2. Start of filled shape. A 1-pensize Khaki2 circle centered at (0, 0) with radius 128 Filled in shape using Khaki2. Start of filled shape. A 1-pensize LimeGreen circle centered at (0, 0) with radius 124 Filled in shape using LimeGreen. Start of filled shape. A 1-pensize Aquamarine2 circle centered at (0, 0) with radius 120 Filled in shape using Aquamarine2. Start of filled shape. A 1-pensize Khaki2 circle centered at (0, 0) with radius 116 Filled in shape using Khaki2. Start of filled shape. A 1-pensize LimeGreen circle centered at (0, 0) with radius 112 Filled in shape using LimeGreen. Start of filled shape. A 1-pensize Aquamarine2 circle centered at (0, 0) with radius 108 Filled in shape using Aquamarine2. Start of filled shape. A 1-pensize Khaki2 circle centered at (0, 0) with radius 104 Filled in shape using Khaki2. Start of filled shape. A 1-pensize LimeGreen circle centered at (0, 0) with radius 100 Filled in shape using LimeGreen. Start of filled shape. A 1-pensize Aquamarine2 circle centered at (0, 0) with radius 96 Filled in shape using Aquamarine2. Start of filled shape. A 1-pensize Khaki2 circle centered at (0, 0) with radius 92 Filled in shape using Khaki2. Start of filled shape. A 1-pensize LimeGreen circle centered at (0, 0) with radius 88 Filled in shape using LimeGreen. Start of filled shape. A 1-pensize Aquamarine2 circle centered at (0, 0) with radius 84 Filled in shape using Aquamarine2. Start of filled shape. A 1-pensize Khaki2 circle centered at (0, 0) with radius 80 Filled in shape using Khaki2. Start of filled shape. A 1-pensize LimeGreen circle centered at (0, 0) with radius 76 Filled in shape using LimeGreen. Start of filled shape. A 1-pensize Aquamarine2 circle centered at (0, 0) with radius 72 Filled in shape using Aquamarine2. Start of filled shape. A 1-pensize Khaki2 circle centered at (0, 0) with radius 68 Filled in shape using Khaki2. Start of filled shape. A 1-pensize LimeGreen circle centered at (0, 0) with radius 64 Filled in shape using LimeGreen. Start of filled shape. A 1-pensize Aquamarine2 circle centered at (0, 0) with radius 60 Filled in shape using Aquamarine2. Start of filled shape. A 1-pensize Khaki2 circle centered at (0, 0) with radius 56 Filled in shape using Khaki2. Start of filled shape. A 1-pensize LimeGreen circle centered at (0, 0) with radius 52 Filled in shape using LimeGreen. Start of filled shape. A 1-pensize Aquamarine2 circle centered at (0, 0) with radius 48 Filled in shape using Aquamarine2. Start of filled shape. A 1-pensize Khaki2 circle centered at (0, 0) with radius 44 Filled in shape using Khaki2. Start of filled shape. A 1-pensize LimeGreen circle centered at (0, 0) with radius 40 Filled in shape using LimeGreen. Start of filled shape. A 1-pensize Aquamarine2 circle centered at (0, 0) with radius 36 Filled in shape using Aquamarine2. Start of filled shape. A 1-pensize Khaki2 circle centered at (0, 0) with radius 32 Filled in shape using Khaki2. Start of filled shape. A 1-pensize LimeGreen circle centered at (0, 0) with radius 28 Filled in shape using LimeGreen. Start of filled shape. A 1-pensize Aquamarine2 circle centered at (0, 0) with radius 24 Filled in shape using Aquamarine2. Start of filled shape. A 1-pensize Khaki2 circle centered at (0, 0) with radius 20 Filled in shape using Khaki2. Start of filled shape. A 1-pensize LimeGreen circle centered at (0, 0) with radius 16 Filled in shape using LimeGreen. Start of filled shape. A 1-pensize Aquamarine2 circle centered at (0, 0) with radius 12 Filled in shape using Aquamarine2. Start of filled shape. A 1-pensize Khaki2 circle centered at (0, 0) with radius 8 Filled in shape using Khaki2. Start of filled shape. A 1-pensize LimeGreen circle centered at (0, 0) with radius 4 Filled in shape using LimeGreen.
Image Start of filled shape.
A 1-pensize Aquamarine2 circle centered at (0, 0) with radius 144
Filled in shape using Aquamarine2.
Start of filled shape.
A 1-pensize Khaki2 circle centered at (0, 0) with radius 140
Filled in shape using Khaki2.
Start of filled shape.
A 1-pensize LimeGreen circle centered at (0, 0) with radius 136
Filled in shape using LimeGreen.
Start of filled shape.
A 1-pensize Aquamarine2 circle centered at (0, 0) with radius 132
Filled in shape using Aquamarine2.
Start of filled shape.
A 1-pensize Khaki2 circle centered at (0, 0) with radius 128
Filled in shape using Khaki2.
Start of filled shape.
A 1-pensize LimeGreen circle centered at (0, 0) with radius 124
Filled in shape using LimeGreen.
Start of filled shape.
A 1-pensize Aquamarine2 circle centered at (0, 0) with radius 120
Filled in shape using Aquamarine2.
Start of filled shape.
A 1-pensize Khaki2 circle centered at (0, 0) with radius 116
Filled in shape using Khaki2.
Start of filled shape.
A 1-pensize LimeGreen circle centered at (0, 0) with radius 112
Filled in shape using LimeGreen.
Start of filled shape.
A 1-pensize Aquamarine2 circle centered at (0, 0) with radius 108
Filled in shape using Aquamarine2.
Start of filled shape.
A 1-pensize Khaki2 circle centered at (0, 0) with radius 104
Filled in shape using Khaki2.
Start of filled shape.
A 1-pensize LimeGreen circle centered at (0, 0) with radius 100
Filled in shape using LimeGreen.
Start of filled shape.
A 1-pensize Aquamarine2 circle centered at (0, 0) with radius 96
Filled in shape using Aquamarine2.
Start of filled shape.
A 1-pensize Khaki2 circle centered at (0, 0) with radius 92
Filled in shape using Khaki2.
Start of filled shape.
A 1-pensize LimeGreen circle centered at (0, 0) with radius 88
Filled in shape using LimeGreen.
Start of filled shape.
A 1-pensize Aquamarine2 circle centered at (0, 0) with radius 84
Filled in shape using Aquamarine2.
Start of filled shape.
A 1-pensize Khaki2 circle centered at (0, 0) with radius 80
Filled in shape using Khaki2.
Start of filled shape.
A 1-pensize LimeGreen circle centered at (0, 0) with radius 76
Filled in shape using LimeGreen.
Start of filled shape.
A 1-pensize Aquamarine2 circle centered at (0, 0) with radius 72
Filled in shape using Aquamarine2.
Start of filled shape.
A 1-pensize Khaki2 circle centered at (0, 0) with radius 68
Filled in shape using Khaki2.
Start of filled shape.
A 1-pensize LimeGreen circle centered at (0, 0) with radius 64
Filled in shape using LimeGreen.
Start of filled shape.
A 1-pensize Aquamarine2 circle centered at (0, 0) with radius 60
Filled in shape using Aquamarine2.
Start of filled shape.
A 1-pensize Khaki2 circle centered at (0, 0) with radius 56
Filled in shape using Khaki2.
Start of filled shape.
A 1-pensize LimeGreen circle centered at (0, 0) with radius 52
Filled in shape using LimeGreen.
Start of filled shape.
A 1-pensize Aquamarine2 circle centered at (0, 0) with radius 48
Filled in shape using Aquamarine2.
Start of filled shape.
A 1-pensize Khaki2 circle centered at (0, 0) with radius 44
Filled in shape using Khaki2.
Start of filled shape.
A 1-pensize LimeGreen circle centered at (0, 0) with radius 40
Filled in shape using LimeGreen.
Start of filled shape.
A 1-pensize Aquamarine2 circle centered at (0, 0) with radius 36
Filled in shape using Aquamarine2.
Start of filled shape.
A 1-pensize Khaki2 circle centered at (0, 0) with radius 32
Filled in shape using Khaki2.
Start of filled shape.
A 1-pensize LimeGreen circle centered at (0, 0) with radius 28
Filled in shape using LimeGreen.
Start of filled shape.
A 1-pensize Aquamarine2 circle centered at (0, 0) with radius 24
Filled in shape using Aquamarine2.
Start of filled shape.
A 1-pensize Khaki2 circle centered at (0, 0) with radius 20
Filled in shape using Khaki2.
Start of filled shape.
A 1-pensize LimeGreen circle centered at (0, 0) with radius 16
Filled in shape using LimeGreen.
Start of filled shape.
A 1-pensize Aquamarine2 circle centered at (0, 0) with radius 12
Filled in shape using Aquamarine2.
Start of filled shape.
A 1-pensize Khaki2 circle centered at (0, 0) with radius 8
Filled in shape using Khaki2.
Start of filled shape.
A 1-pensize LimeGreen circle centered at (0, 0) with radius 4
Filled in shape using LimeGreen.

Bonus example

This example shows one kind of design you could create out of concentric circles. Although it is not required, you are encouraged to create a circleDesign function which uses concentricCircles and/or multicolorCircles to create a complex design.

In []:
circleDesign()
Prints
A pattern of overlapping bullseyes arranged to look like scales. Each bullseye has 6 rings, colored red, orange, and yellow, and then again red, orange, and yellow, from the outermost to innermost. This creates a bright, almost glowing color to the whole image. The bullseyes are arranged in alternating rows of 6 or 7, where each bullseye touches the edge of the next along a row. The rows of 6 are offset by the radius of one bullseye to the right and above the rows of 7, and the rows of 7 are offset from each other so that their bullseyes touch at the top and bottom edges. Since higher-up rows are drawn on top of lower-down rows, except at the edges of the pattern each circle has its upper-left and upper-right parts covered by circles above it, while its lower half is completely visible, similar to how scales of a fish or reptile overlap.
Image A pattern of overlapping bullseyes arranged to look like scales. Each
bullseye has 6 rings, colored red, orange, and yellow, and then again
red, orange, and yellow, from the outermost to innermost. This creates a
bright, almost glowing color to the whole image. The bullseyes are
arranged in alternating rows of 6 or 7, where each bullseye touches the
edge of the next along a row. The rows of 6 are offset by the radius of
one bullseye to the right and above the rows of 7, and the rows of 7 are
offset from each other so that their bullseyes touch at the top and
bottom edges. Since higher-up rows are drawn on top of lower-down rows,
except at the edges of the pattern each circle has its upper-left and
upper-right parts covered by circles above it, while its lower half is
completely visible, similar to how scales of a fish or reptile overlap.

Rubric

 
unknown Style Requirements
How your code is written.
 
unknown Core goals
Complete all core goals for core credit. Get partial credit for completing at least half, and more partial credit for completing at least 90%.
 
unknown All functions are documented
Each function you define must include a non-empty documentation string as the very first thing in the function.
 
unknown Procedure Requirements
What code you use to solve the problem.
 
unknown Core goals
Complete all core goals for core credit. Get partial credit for completing at least half, and more partial credit for completing at least 90%.
 
unknown Define concentricCircles with 4 parameters
Use def to define concentricCircles with 4 parameters
 
unknown Use a loop
Within the definition of concentricCircles with 4 parameters, use any kind of loop in at least once place.
 
unknown Call begin_fill
Within the loop within the definition of concentricCircles with 4 parameters, call begin_fill in at least once place.
 
unknown Call color
Within the loop within the definition of concentricCircles with 4 parameters, call color or fillcolor in at least once place.
 
unknown Call drawCircle
Within the loop within the definition of concentricCircles with 4 parameters, call drawCircle in at least once place.
 
unknown Call end_fill
Within the loop within the definition of concentricCircles with 4 parameters, call end_fill in at least once place.
 
unknown Define multicolorCircles with 3 parameters
Use def to define multicolorCircles with 3 parameters
 
unknown Use a loop
Within the definition of multicolorCircles with 3 parameters, use any kind of loop in at least once place.
 
unknown Use a loop
Within the loop within the definition of multicolorCircles with 3 parameters, use any kind of loop in at least once place.
 
unknown Call begin_fill
Within the loop within the loop within the definition of multicolorCircles with 3 parameters, call begin_fill in at least once place.
 
unknown Call color
Within the loop within the loop within the definition of multicolorCircles with 3 parameters, call color or fillcolor in at least once place.
 
unknown Call drawCircle
Within the loop within the loop within the definition of multicolorCircles with 3 parameters, call drawCircle in at least once place.
 
unknown Call end_fill
Within the loop within the loop within the definition of multicolorCircles with 3 parameters, call end_fill in at least once place.
 
unknown Process Requirements
How your code achieves its results.
 
unknown Core goals
Complete all core goals for core credit. Get partial credit for completing at least half, and more partial credit for completing at least 90%.
 
unknown concentricCircles makes the correct number of calls to drawCircle
Your concentricCircles function must call drawCircle the correct number of times.
 
unknown concentricCircles makes the correct function calls
Your concentricCircles function must call the drawCircle function in the correct order, with the correct arguments, while the correct position, is_filling, and fill_color values are set up
 
unknown multicolorCircles makes the correct number of calls to drawCircle
Your multicolorCircles function must call drawCircle the correct number of times.
 
unknown multicolorCircles makes the correct function calls
Your multicolorCircles function must call the drawCircle function in the correct order, with the correct arguments, while the correct position, is_filling, and fill_color values are set up
 
unknown Behavior Requirements
What your code does from the user's perspective.
 
unknown Extra goals
Complete all extra goals in addition to the core goals for a perfect score.
 
unknown Your concentricCircles function must draw the correct image.
We will call concentricCircles and record the image it draws. It must match the solution image exactly.
 
unknown Your multicolorCircles function must draw the correct image.
We will call multicolorCircles and record the image it draws. It must match the solution image exactly.