I've already povided the tutorials on how to do it above
Archery Target
###################################
# PROLOG SECTION
# archery_target.py
# Draws an archery target of three concentric circles using Turtle Graphics
# and then an animated arrow hitting the target.
#
# Tested with Python 2.6.1
# May 16, 2010
#
#
###################################
###################################
# ENVIRONMENT SETUP SECTION
# Imports: turtle, time
###################################
# import turtle drawing routines
from turtle import *
# import the time routines
from time import sleep
###################################
# FUNCTION DEFINITION SECTION
# Definitions: draw_target(),
# erase_target(), move_arrow()
###################################
#
# define a function to draw a target at a location
# on the screen.
#
def draw_target(turtle,targetx,targety):
turtle.speed("fast")
#
# draw the largest red circle
#
# lift the pen up (away from the window) so it doesn't draw a line as it moves
turtle.up()
#
# move to the starting location
#
turtle.goto(targetx,targety+50)
# the radius of the red circle is 150px
turtle.sety(targety-150)
# put the pen down (against the window) so it can begin to draw
turtle.down()
# set the color
turtle.color("red")
# set the pen width
turtle.width(2)
# call fill(1) before drawing the path
turtle.fill(1)
# draw the path
turtle.circle(150)
# call fill(0) after drawing the path
turtle.fill(0)
#
# draw the middle blue circle
#
turtle.up()
# the radius of the blue circle is 100px
turtle.sety(targety-100)
turtle.down()
turtle.color("blue")
turtle.fill(1)
turtle.circle(100)
turtle.fill(0)
#
# draw the green circle (the bulls-eye)
#
turtle.up()
# the radius of the green circle is 50px
turtle.sety(targety-50)
turtle.down()
turtle.color("green")
turtle.fill(1)
turtle.circle(50)
turtle.fill(0)
turtle.hideturtle()
return
#
# define a function to erase a target at a location
# on the screen.
#
def erase_target(turtle,targetx,targety):
sleep(1)
# the radius of the circle is 150px
#
# move to the starting location
#
turtle.goto(targetx,targety-150)
# put the pen down (against the window) so it can begin to draw
turtle.down()
# set the color for erasing the target
turtle.color("white")
# set the pen width
turtle.width(2)
# call fill(1) before drawing the path
turtle.fill(1)
# draw the path
turtle.circle(150)
# call fill(0) after drawing the path
turtle.fill(0)
#
# define a function to move the arrow to the target
#
def move_arrow(arrow, ax, ay, targetx, targety):
arrow.goto(ax,ay)
arrow.setheading(arrow.towards(targetx,targety))
arrow.showturtle()
sleep(1)
#
# calculate steps to move the arrow to the center
# of the target.
#
steps = 100
dx = (targetx-ax)/float(steps)
dy = (targety-ay)/float(steps)
#
# Move the arrow to the center of the target
#
for x in range(steps):
ax = ax + dx
ay = ay + dy
arrow.goto(ax,ay)
return
###################################
# PROCESSING INITIALIZATION SECTION
###################################
# create the drawing window
setup()
# create a title for the drawing window
title("archery target program")
# create a turtle to draw the target with
turtle = Turtle()
# set the location of the center of the target
targetx = 0
targety = 0
#
# Create an arrow as a turtle shape
#
arrow = Turtle()
arrow.hideturtle()
arrow.penup()
# create an arrow shape
register_shape("myarrow",((-6,-96),(-6,0),(-18,0),(0,18),(18,0),(6,0),(6,-96),(-6,-96)))
arrow.shape("myarrow")
###################################
# PROCESSING SECTION
# Call functions to draw the target,
# move the arrow, and erase the target.
#
###################################
# draw the target
draw_target(turtle,targetx,targety)
# now move the arrow to hit the target
ax = -200
ay = 0
move_arrow(arrow, ax, ay, targetx, targety)
# erase the target and draw a new one
erase_target(turtle,targetx,targety)
# set a new target location
targetx = 100
targety = 100
# draw the target
draw_target(turtle,targetx,targety)
# move the arrow to hit the target
move_arrow(arrow, ax, ay, targetx, targety)
###################################
# CLEANUP, TERMINATION, AND EXIT SECTION
###################################
done()
TrustyTony 888 ex-Moderator Team Colleague Featured Poster
vegaseat 1,735 DaniWeb's Hypocrite Team Colleague
TrustyTony 888 ex-Moderator Team Colleague Featured Poster
jib -2 Junior Poster
Be a part of the DaniWeb community
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.