hacktoberfest-2018/code/heyo_mosaic_yo

135 lines
3.2 KiB
Plaintext

# CHRISTMAS LIGHTS MOSAIC
# Credit to Kevin Wortman, my professor, for the skeleton code.
import turtle
def draw_mosaic():
turt = turtle.Turtle()
turtle.colormode(255)
colors = ['red','green','blue','yellow','orange','purple']
turt.speed(0)
draw_corner(turt, 0, 0, tile_x(0), tile_y(0))
draw_corner(turt, 0, 19, tile_x(19), tile_y(0))
draw_corner(turt, 19, 0, tile_x(0), tile_y(19))
draw_corner(turt, 19, 19, tile_x(19), tile_y(19))
# horizontal borders
for col in range(1, 19):
# top row
draw_border_tile(turt, 0, col, tile_x(col), tile_y(0),colors[col%6])
# bottom row
draw_border_tile(turt, 19, col, tile_x(col), tile_y(19),colors[col%6])
# vertical borders
for row in range(1, 19):
# left column
draw_border_tile(turt, row, 0, tile_x(0), tile_y(row),colors[row%6])
# right column
draw_border_tile(turt, row, 19, tile_x(19), tile_y(row),colors[row%6])
# inset
for row in range(2, 18):
for col in range(1, 18):
draw_inset_tile(turt, row, col, tile_x(col), tile_y(row))
# centerpiece
draw_centerpiece(turt, 0, 0,colors)
def tile_x(col):
return -300 + (30 * col)
def tile_y(row):
return -300 + (30 * row)
def draw_corner(turt, row, col, x, y):
colors = ['red','green','blue']
turt.up()
turt.setpos(x, y)
turt.down()
for i in range(3):
turt.fillcolor(colors[i])
turt.begin_fill()
turt.circle(6)
turt.right(120)
turt.end_fill()
def draw_border_tile(turt, row, col, x, y, color):
turt.up()
turt.setpos(x, y)
turt.down()
turt.fillcolor(color)
turt.begin_fill()
for _ in range(2):
turt.right(45)
turt.forward(5)
turt.left(180)
for _ in range(2):
turt.right(45)
turt.forward(5)
turt.right(90)
for _ in range(2):
turt.right(45)
turt.forward(5)
turt.left(180)
for _ in range(2):
turt.right(45)
turt.forward(5)
turt.end_fill()
def draw_inset_tile(turt, row, col, x, y):
turt.color(160,82,45)
turt.up()
turt.setpos(x, y)
turt.down()
turt.circle(15,180)
turt.up()
turt.setpos(x+15, y-15)
turt.down()
turt.circle(15,-180)
def draw_centerpiece(turt, x, y,colors):
i = 0
for angle in range(0, 360, 10):
draw_centerpiece_stencil(turt, x, y, angle,colors[i%6])
i += 1
def draw_centerpiece_stencil(turt, x, y, angle,color):
turt.fillcolor(color)
turt.up()
turt.setpos(x, y)
turt.color(color)
turt.down()
turt.setheading(angle)
turt.circle(100)
turt.forward(100)
turt.begin_fill()
turt.circle(10)
turt.end_fill()
turt.right(20)
turt.forward(100)
turt.begin_fill()
for _ in range(2):
turt.right(45)
turt.forward(10)
turt.left(180)
for _ in range(2):
turt.right(45)
turt.forward(10)
turt.right(90)
for _ in range(2):
turt.right(45)
turt.forward(10)
turt.left(180)
for _ in range(2):
turt.right(45)
turt.forward(10)
turt.end_fill()
turtle.setup(800, 800)
wn = turtle.Screen()
draw_mosaic()
wn.exitonclick()