I am currently in the process of completing a college assignment. We have been using John Zelle's graphics.py
module for the first semester.
The task was to construct two different patterns, and then lay them out in a particular design, automatically adjusting depending if the window was 500 x 500, 700 x 700 or 900 x 900
pixels.
I have completed the task, however, one big part of my code is very inefficient and long, this therefore isn't ideal.
Below is the code that is long and inefficient:
def DrawPattern(width,size,win,colour):
if size == 5:
for x in range(0,width,100):
drawCircleExpanse(win,x,400,colour)
for j in range(100,400,100):
drawCircleExpanse(win,j,300,colour)
drawCircleExpanse(win,200,200,colour)
for j in range(100,400,100):
drawCircleExpanse(win,j,100,colour)
for x in range(0,width,100):
drawCircleExpanse(win,x,0,colour)
if size == 7:
for x in range(0,width,100):
drawCircleExpanse(win,x,width-100,colour)
for j in range(100,width-100,100):
drawCircleExpanse(win,j,width-200,colour)
for i in range(200,width-200,100):
drawCircleExpanse(win,i,width-300,colour)
drawCircleExpanse(win,300,300,colour)
for j in range(100,width-100,100):
drawCircleExpanse(win,j,100,colour)
for x in range(0,width,100):
drawCircleExpanse(win,x,0,colour)
for i in range(200,width-200,100):
drawCircleExpanse(win,i,width-500,colour)
if size == 9:
for x in range(0,width,100):
drawCircleExpanse(win,x,width-100,colour)
for j in range(100,width-100,100):
drawCircleExpanse(win,j,width-200,colour)
for i in range(200,width-200,100):
drawCircleExpanse(win,i,width-300,colour)
for y in range(300,width-300,100):
drawCircleExpanse(win,y,width-400,colour)
drawCircleExpanse(win,400,400,colour)
for j in range(100,width-100,100):
drawCircleExpanse(win,j,100,colour)
for x in range(0,width,100):
drawCircleExpanse(win,x,0,colour)
for i in range(200,width-200,100):
drawCircleExpanse(win,i,width-700,colour)
for y in range(300,width-300,100):
drawCircleExpanse(win,y,width-600,colour)
The size
variable takes the user's input; for example 5, 7 or 9
. This translates to either 500 x 500, 700 x 700 or 900 x 900
. Similarly with colour
, which will just change the colour to one of the user's choice.
This code, will produce the following pattern, with the size 5
which translates to 500 x 500
:
The drawCircleExpanse
function, which constructs the pattern itself, contains the following code:
def drawCircleExpanse(win,x,y,colour):
rad = 50
for c in range(10):
circle = Circle(Point(50+x,(50+(c * 10) / 2)+y), rad)
circle.setOutline(colour)
circle.draw(win)
rad -= 5
I would be really grateful if someone could assist in shortening my massive block of code.