diff --git a/drawing.py b/drawing.py index 29fc89e..ddd80b6 100644 --- a/drawing.py +++ b/drawing.py @@ -1,7 +1,131 @@ # drawing.py # ---------- -# By ____(you)___________ +# By Tom Naber # # (Briefly describe what this program does.) +# This program is going to draw a snowman, some snowflakes, and +# trees from turtle import * +from math import sqrt + + +"""this function takes the turtle to the lower left corner of the + drawing""" +def goToCorner(): + penup() + setx(-250) + sety(-250) + pendown() + +""" This function will turn the turtle left the specified angle, + and then will move the turtle the specified distance without + drawing anything then returns to the direction the + turtle was pointing. +""" +def fly (angle, dist): + left(angle) + penup() + forward(dist) + pendown() + right(angle) + +"""This function draws a rectangle with a top and bottom of size + width and a left and right size of size height, with a fill + color and line color specified.""" +def drawRectangle(width, height, fill, line): + color(line) + fillcolor(fill) + begin_fill() + forward(width) + left(90) + forward(height) + left(90) + forward(width) + left(90) + forward(height) + left(90) + end_fill() + +"""draws an isosceles triangle with legs the length of size + and a color/outline as specified from fill and line.""" + +def drawTriangle(size, fill, line): + color(line) + fillcolor(fill) + begin_fill() + forward(size * sqrt(2)/2) + left(135) + forward(size) + left(90) + forward(size) + left(135) + forward(size * sqrt(2)/2) + end_fill() + +""" This function draws a tree with a brown rectangular trunk, + and green triangles as the top. +""" +def drawTree(size): + drawRectangle(size, size * 2, "saddle brown", "black") + fly(90, size * 2) + forward(size/2) + drawTriangle(size * 4, "dark green", "dark green") + fly(90, size * 1.5) + drawTriangle(size * 3, "dark green", "dark green") + fly(90, size * 1.5) + drawTriangle(size * 2, "dark green", "dark green") + fly(-90, size * 5) + fly(180, size/2) + + +""" draws a snowflake of specified size. The turtle ends in + the same place that it starts. +""" +def drawSnowflake(size): + pensize(2) + color("alice blue") + left(90) + for number in range(1, 4): + forward(size) + fly(120, size/2) + left(240) + right(90) + +"""The code below draws a picture of a mountain with five equally + spaced trees at its base, and then 28 snowflakes in the air.""" +goToCorner() +fly(180,60) +drawRectangle(300 * sqrt(2) + 120, 300, "sky blue", "black") + + +fly(0, 150 * sqrt(2) + 60) +drawTriangle(300, "slate gray", "black") +fly(90, 100 * sqrt(2)) +drawTriangle(100, "white", "black") + +goToCorner() + +for number in range(1, 6): + drawTree(15) + fly(0, 300 * sqrt(2)/4 - 3.75) + + +goToCorner() +fly(90, 270) + + +for number in range(1, 11): + drawSnowflake(8) + fly(-60, 30) + drawSnowflake(8) + fly(-120, 40) + drawSnowflake(8) + fly(10, 25) + drawSnowflake(8) + fly(80,40) + drawSnowflake(8) + fly(40,25) + + +done() \ No newline at end of file diff --git a/poetry.lock b/poetry.lock index daa6053..596f7de 100644 --- a/poetry.lock +++ b/poetry.lock @@ -42,13 +42,13 @@ lxml = ["lxml"] [[package]] name = "certifi" -version = "2023.5.7" +version = "2023.7.22" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.5.7-py3-none-any.whl", hash = "sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716"}, - {file = "certifi-2023.5.7.tar.gz", hash = "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7"}, + {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, + {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, ] [[package]] @@ -159,13 +159,13 @@ files = [ [[package]] name = "furo" -version = "2023.5.20" +version = "2023.7.26" description = "A clean customisable Sphinx documentation theme." optional = false python-versions = ">=3.7" files = [ - {file = "furo-2023.5.20-py3-none-any.whl", hash = "sha256:594a8436ddfe0c071f3a9e9a209c314a219d8341f3f1af33fdf7c69544fab9e6"}, - {file = "furo-2023.5.20.tar.gz", hash = "sha256:40e09fa17c6f4b22419d122e933089226dcdb59747b5b6c79363089827dea16f"}, + {file = "furo-2023.7.26-py3-none-any.whl", hash = "sha256:1c7936929ec57c5ddecc7c85f07fa8b2ce536b5c89137764cca508be90e11efd"}, + {file = "furo-2023.7.26.tar.gz", hash = "sha256:257f63bab97aa85213a1fa24303837a3c3f30be92901ec732fea74290800f59e"}, ] [package.dependencies] @@ -342,13 +342,13 @@ files = [ [[package]] name = "sphinx" -version = "7.0.1" +version = "7.1.1" description = "Python documentation generator" optional = false python-versions = ">=3.8" files = [ - {file = "Sphinx-7.0.1.tar.gz", hash = "sha256:61e025f788c5977d9412587e733733a289e2b9fdc2fef8868ddfbfc4ccfe881d"}, - {file = "sphinx-7.0.1-py3-none-any.whl", hash = "sha256:60c5e04756c1709a98845ed27a2eed7a556af3993afb66e77fec48189f742616"}, + {file = "sphinx-7.1.1-py3-none-any.whl", hash = "sha256:4e6c5ea477afa0fb90815210fd1312012e1d7542589ab251ac9b53b7c0751bce"}, + {file = "sphinx-7.1.1.tar.gz", hash = "sha256:59b8e391f0768a96cd233e8300fe7f0a8dc2f64f83dc2a54336a9a84f428ff4e"}, ] [package.dependencies] @@ -497,13 +497,13 @@ sphinx = ">=7.0.1,<8.0.0" [[package]] name = "urllib3" -version = "2.0.3" +version = "2.0.4" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.7" files = [ - {file = "urllib3-2.0.3-py3-none-any.whl", hash = "sha256:48e7fafa40319d358848e1bc6809b208340fafe2096f1725d05d67443d0483d1"}, - {file = "urllib3-2.0.3.tar.gz", hash = "sha256:bee28b5e56addb8226c96f7f13ac28cb4c301dd5ea8a6ca179c0b9835e032825"}, + {file = "urllib3-2.0.4-py3-none-any.whl", hash = "sha256:de7df1803967d2c2a98e4b11bb7d6bd9210474c46e8a0401514e3a42a75ebde4"}, + {file = "urllib3-2.0.4.tar.gz", hash = "sha256:8d22f86aae8ef5e410d4f539fde9ce6b2113a001bb4d189e0aed70642d602b11"}, ] [package.extras]