generated from mwc/project_drawing
Actually committing this time:
This is program to make a picture of a mountain with trees and snowflakes. Somewhere I got stuck was figuring out how to use a loop to make the trees without it also adding too many steps to the turtle. Eventually I decided that a loop would be less efficient than just writing the code to draw each triangle individually. Something I figured out was how to make the trees equally spaced along the bottom of the mountain. If I had more time, I think I would have liked to create a function that does this so that I can change the size of the mountain and number/size of trees without having to rethink how much space needs to be between each tree. One strategy I used to get unstuck was commenting out everything except what I was currently working on and running the code to see it draw that specific object. Additionally, drawing what I was trying to have the turtle draw in order to figure out the geometry of it. Something I'd like to learn about is how to make it so things are randomly generated. I think that would have helped make the snowfall a little more realistic looking. As far as future projects go, I think it would be cool to learn how to animate it and show the snow falling and then settling on the trees
This commit is contained in:
parent
167de84bdc
commit
94ac144093
126
drawing.py
126
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()
|
|
@ -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]
|
||||
|
|
Loading…
Reference in New Issue