Python CS161 Assignment 4 Three Shot Archery Game Program

According to, standard FITA targets are marked with 10 evenly spaced concentric rings, which have score values from 1 through 10 assigned to them. In FITA archery, targets are colored as follows:

  • 1 ring & 2 ring – white
  • 3 ring & 4 ring – black
  • 5 ring & 6 ring – blue
  • 7 ring & 8 ring – red
  • 9 ring, 10 ring – gold
  1. Write a function called target to draw an archery target using turtle graphics; target should have a parameter that determines the size of the drawing, and the center of the target should be at the origin (0, 0). To specify the colors of each ring, use a tuple: ringColors = (“white”, “white”, “black”, “black”, “blue”, “blue”, “red”, “red”, “yellow”, “yellow”). After creating this tuple, just set the fill color of each ring before you draw it. You can use fillcolor() to set the color, and then turtle.begin_fill() and turtle.end_fill() to actually fill the shapes with a particular color.
  2. Write a function shoot that simulates firing an arrow towards the target. The effect of shoot should be to indicate visually where on the target (or near the target) the “arrow” lands. You can use for this. The landing position should be at a pseudo-random position on or near the target. Look at the documentation for the Python module random and choose a suitable function to help you generate a pseudo-random position. To use, you will need a random number for both the x-coordinate and the y-coordinate, so generate two random numbers for one dot. The return value of shoot should be the distance between the origin and the point at which the arrow lands. You can use turtle.distance() for this.
  3. Write a function score, which takes as parameters the distance of an arrow from the origin, and the radius of the target, and calculates the score for that arrow, according to the above instructions. I.e., 10 points for the inner most circle, then 9 points for the next circle, etc., out to 1 point for the outer most circle, and zero for missing the target. You may need to use some of the functions in the math module. The return value of score should be the calculated score.
  4. Write a function displayScore that writes a score underneath the target. Give it suitable parameters. You can use turtle.write() to display information on the turtle canvas.
  5. Complete your program for playing three-shot archery by writing the function threeShots that draws the target (by calling target), shoots three arrows (by calling shoot and score three times), adds up the scores for all three arrows, and then displays the total score using the function displayScore. Naturally, threeShots should use the other functions that you have already defined. Give threeShots any necessary parameters.
  6. Restrictions: Do not use any global variables. Global variables are declared outside of any function, so all variables for this assignment must be declared inside of one of the functions. Use parameters and return values to share information between functions.
  7. Give your assignment an appropriate name (, and upload it to the dropbox like normal.

Leave a Reply

Your email address will not be published. Required fields are marked *

  • File Format: Python .py
  • Lines of Code: 133