I'm having a little problem. The challenge is this: "Modify the program so that different shapes are drawn at each angle rather than a small filled circle".

So I'm trying to change the middle shape when the second hand hits 12, 3, 6, and 9. I've got some code, but it's not working. It's randomizing everything when it hits the 12, 3, 6, and 9 numbers. I know why this is, it's becasuse the loop is iterating much faster than the second hand is moving, so once it's on those numbers, it will change the shapes for 1 second.

I just don't know what to do, I'm sorry if that's a terrible explanation. Here's my code:

At the bottom, under '#randomize the middle object' is the part I'm stuck at. I'd be very greatful if someone could help!

``````import sys, random, math, pygame
from pygame.locals import *
from datetime import datetime, date, time

def print_text(font, x, y, text, color=(255,255,255)):
imgText = font.render(text, True, color)
screen.blit(imgText, (x,y))

def wrap_angle(angle):
return angle % 360

def draw_middle(shape):
if shape == 'rect':
pygame.draw.rect(screen, white, (pos_x, pos_y, 100, 100))
elif shape == 'circle':
pygame.draw.circle(screen, white, (pos_x, pos_y), 20)
elif shape == 'ellipse':
pygame.draw.ellipse(screen, white, (pos_x, pos_y, 100, 100))

#main program begins
pygame.init()
screen = pygame.display.set_mode((600,500))
pygame.display.set_caption("Analog Clock Demo")
font = pygame.font.Font(None, 36)
orange = 220,180,0
white = 255,255,255
yellow = 255,255,0
pink = 255,100,100

pos_x = 300
pos_y = 250
angle = 360

#repeating loop
while True:
for event in pygame.event.get():
if event.type == QUIT:
sys.exit()
keys = pygame.key.get_pressed()
if keys[K_ESCAPE]:
sys.exit()

screen.fill((0,0,100))

#draw one step around the circle
pygame.draw.circle(screen, white, (pos_x, pos_y), radius, 6)

#draw the clock numbers 1-12
for n in range(1, 13):
x = math.cos(angle) * (radius - 20) - 10
y = math.sin(angle) * (radius-  20) - 10
print_text(font, pos_x + x, pos_y + y, str(n))

#get the time of the day
today = datetime.today()
hours = today.hour % 12
minutes = today.minute
seconds = today.second

#draw the hours hand
hour_angle = wrap_angle(hours * (360/12)-90)
target = (pos_x + hour_x, pos_y + hour_y)
pygame.draw.line(screen, pink, (pos_x, pos_y), target, 25)

#draw the minutes hand
min_angle = wrap_angle(minutes * (360/60)-90)
target = (pos_x + min_x, pos_y + min_y)
pygame.draw.line(screen, orange, (pos_x, pos_y), target, 12)

#draw the seconds hand
sec_angle = wrap_angle(seconds * (360/60) - 90)
target = (pos_x + sec_x, pos_y + sec_y)
pygame.draw.line(screen, yellow, (pos_x, pos_y), target, 6)

#randomize the middle object
numbers = [0, 90, 180, 270, 360]
shapes = ['ellipse', 'circle', 'rect']
choice = random.choice(shapes)
draw_middle(choice)

print_text(font, 0, 0, str(hours) + ":" + str(minutes) + ":" + str(seconds))

pygame.display.update()
``````

Put in line
pygame.time.wait(1000)
as your last line to slow down the update