# drawing.py # ---------- # By: Louis Cooper # # Draws an animation in turtle. from http.client import RemoteDisconnected from turtle import * import random pensize(2) def fly(x, y): #Utlizes x, y positions to move the turtle penup() goto(x, y) pendown() def starting_position(): #sets initial position of the drawing. See fly() penup() fly(-600, -300) pendown() starting_position() #draws rectange with height / width parameter. There is an optional parameter for corner radius. If corner radius is true then the corners are rounded by 3rd argument value, subtracted from length to maintain consistency. def rectangle(length, height, corner_radius=0): for i in range(2): forward(length - 2 * corner_radius) if corner_radius: circle(corner_radius, 90) else: left(90) forward(height - 2 * corner_radius) if corner_radius: circle(corner_radius, 90) else: left(90) def draw_background(): speed(0) fillcolor("black") begin_fill() rectangle(500, 600, 0) end_fill() draw_background() #draws a TV def draw_tv(): #outer border fly(-500, -200) fillcolor("#c7b199") begin_fill() rectangle(300, 210, 10) end_fill() # Antenna - added color("#C0C0C0") pensize(5) penup() goto(-350, 10) # Positioning the antenna pendown() setheading(30) # Angle for the left part of the antenna forward(100) penup() goto(-350, 10) # Going back to the antenna's root pendown() setheading(150) # Angle for the right part of the antenna forward(100) pensize(2) setheading(0) # Resetting the direction # Antenna Base - added penup() goto(-360, 0) # Positioning the base pendown() fillcolor('#C0C0C0') begin_fill() circle(10) end_fill() color("black") # Antenna Base ends #inner screen border fillcolor('#1a1a1a') fly(-490, -186) begin_fill() rectangle(200, 180, 5) end_fill() #inner screen fly(-480, -175) fillcolor("black") begin_fill() rectangle(180, 158, 5) end_fill() #side panel fly(-270, -185) fillcolor('#1a1a1a') begin_fill() rectangle(50, 180, 5) end_fill() #side Panel internal Panel fly(-265, -120) fillcolor("#514640") begin_fill() rectangle(40, 110, 5) end_fill() #dial1 fly(-250, -100) fillcolor("#484848") begin_fill() circle(15) end_fill() fillcolor('#1a1a1a') begin_fill() left(15) rectangle(4, 29) right(15) end_fill() #dial2 fly(-250, -60) fillcolor("#484848") begin_fill() circle(15) end_fill() fillcolor('#1a1a1a') begin_fill() left(5) rectangle(4, 29) right(5) end_fill() #circle adornments fly(-260, -115) fillcolor("#c7b199") begin_fill() circle(4) fly(-240, -115) fillcolor("#c7b199") circle(4) end_fill() #grill fillcolor("#c7b199") fly(-270, -130) for j in range(12): begin_fill() rectangle(40, 4) end_fill() fly(-270, -130 - (j*5)) #Feet fillcolor("tan") fly(-495, -200) begin_fill() rectangle(14, -50) end_fill() fly(-240, -200) begin_fill() rectangle(14, -50) end_fill() draw_tv() def instructions_text(): fly(-540, -290) color("white") write("Click the dials to change the channel", font=("Verdana", 15, "normal")) color("black") instructions_text() #Checks for clicks inside the roung dials. def detect_circle_click(x_pos, y_pos): if x_pos > -266.0 and x_pos < -235 and y_pos < -30.0 and y_pos > -95: #These are registering as one button, whhy, it doesnt matter for this use case but I should fix nextScreen() elif x_pos > -266.0 and x_pos < -235 and y_pos < -70.0 and y_pos > -99.0: nextScreen() def nextScreen(): hideturtle() screen_colors = ['white', 'black', 'red', 'green', 'blue', 'cyan', 'yellow', 'magenta', 'orange', 'purple', 'pink', 'brown', 'grey', 'gold', 'lime', 'teal', 'lavender', 'turquoise', 'tan', 'sky blue', 'salmon', 'olive', 'maroon', 'navy', 'aquamarine', 'violet', 'silver', 'plum', 'peach puff', 'orchid', 'midnight blue', 'indigo', 'honeydew', 'ghost white', 'fuchsia', 'dark violet', 'dark turquoise', 'dark salmon', 'dark red', 'dark orchid', 'dark orange', 'dark olive green', 'dark khaki', 'dark goldenrod', 'dark cyan', 'dark blue', 'crimson', 'coral', 'chocolate', 'chartreuse', 'cadet blue', 'azure', 'aquamarine', 'antique white', 'alice blue'] fly(-480, -175) fillcolor(random.choice(screen_colors)) setheading(0) begin_fill() rectangle(180, 158, 5) end_fill() onscreenclick(detect_circle_click) mainloop() #what does this do? done() #prevents window from closing