Skip to content

Instantly share code, notes, and snippets.

@mafshin
Created December 29, 2022 18:15
Show Gist options
  • Save mafshin/9a97f32e7c281964557697541a9b4da7 to your computer and use it in GitHub Desktop.
Save mafshin/9a97f32e7c281964557697541a9b4da7 to your computer and use it in GitHub Desktop.
Draw Dolly with Strawberry
import math
from graphics import *
from typing import List
def main(size):
win = GraphWin("My Circle", size, size)
center = size / 2
radius = 100
# Draw Face
c1 = Circle(Point(center, center), radius)
c1.setFill("lightgray")
c1.draw(win)
# Draw Nose
nose_size = 30
nose_y = center - nose_size
nose = Circle(Point(center, nose_y), nose_size)
nose.setFill("yellow")
nose.draw(win)
nose_line_horizontal = Line(Point(center - 10, nose_y), Point(center + 10, nose_y))
nose_line_horizontal.setFill("brown")
nose_line_horizontal.setWidth(3)
nose_line_horizontal.draw(win)
nose_line_horizontal = Line(Point(center, nose_y), Point(center, nose_y + 20))
nose_line_horizontal.setFill("brown")
nose_line_horizontal.setWidth(3)
nose_line_horizontal.draw(win)
# Draw Eyes
eye_size = 10
eye_left = Circle(Point(center - 40, center - 40), eye_size)
eye_left.setFill("black")
eye_left.draw(win)
eye_right = Circle(Point(center + 40, center - 40), eye_size)
eye_right.setFill("black")
eye_right.draw(win)
# Draw Ears
ear_size = 15
ear_left = Circle(Point(center - 60, center - 60), ear_size)
ear_left.setFill("gray")
ear_left.draw(win)
ear_left = Circle(Point(center + 60, center - 60), ear_size)
ear_left.setFill("gray")
ear_left.draw(win)
# Draw Hands
left_hand = Polygon(Point(center - radius - 5, center), Point(center - radius + 50, center + 50),
Point(center - radius + 60, center + 70), Point(center - radius - 5, center + 10))
left_hand.setOutline("gray")
left_hand.setWidth(2)
left_hand.draw(win)
left_hand = Polygon(Point(center + radius + 5, center), Point(center + radius - 50, center + 50),
Point(center + radius - 60, center + 70), Point(center + radius + 5, center + 10))
left_hand.setOutline("gray")
left_hand.setWidth(2)
left_hand.draw(win)
# Draw Hair
circle_points = gen(center, center, radius)
circle_points = filter(lambda p: p.y < center, circle_points)
for p in circle_points:
h = Circle(p, 10)
h.setFill("gold")
h.draw(win)
# Draw Strawberry
strawberry = Circle(Point(center, center + 50), 40)
strawberry.setFill("red")
strawberry.setOutline("black")
strawberry.draw(win)
win.getMouse()
win.close()
def gen(centerX, centerY, radius) -> List[Point]:
list = []
for i in range(0, 360):
Fi = i * math.pi / 180
x = centerX + radius * math.cos(Fi)
y = centerY + radius * math.sin(Fi)
list.append(Point(x,y))
return list
main(600)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment