Last active
February 8, 2024 20:58
-
-
Save orjanv/9a81908fc3e28323ed2d07cc236a3392 to your computer and use it in GitHub Desktop.
Tegne en by med firkanter
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Geometri, hva kan gjøres med bare firkanter? La oss bygge en by | |
from turtle import * | |
from random import * | |
# Litt oppsett av vindu, farger og størrelser | |
skjerm_bredde = 1700 | |
skjerm_hoyde = 1000 | |
setup(skjerm_bredde, skjerm_hoyde) | |
tracer(2) # sett til 0 for å tegne umiddelbart, da betyr speed() ingenting | |
speed('fastest') | |
hideturtle() | |
HUS_FARGER = ["#363432", "#196774", "#90A19D", "#F0941F", "#BD2A2E", "#3B3936", "#889C9B", "#486966"] | |
VINDU_FARGER = ["#F2F2F2", "#202022"] # lys på og av vil bli brukt tilfeldig på husene | |
BAKGRUNNSFARGE = "#d1cbba" | |
bgcolor(BAKGRUNNSFARGE) | |
x = (skjerm_bredde / -2) + 50 # begynn å tegne på venstresiden for å få plass til husene | |
husbredde_liste = [50, 70, 90, 110, 130] # liste over forskjellige husbredder | |
antall = 15 # int(skjerm_bredde/husbredde_liste[-1]) # regne ut maks antall etter skjermbredde | |
# Tegne firkant funksjon som tar inn posisjon, størrelser og husfarge | |
def firkant(xpos, ypos, height, width, house_color): | |
penup() | |
color(house_color) | |
pencolor(house_color) | |
setpos(xpos, ypos) | |
setheading(90) | |
pendown() | |
begin_fill() | |
for _ in range(2): # underscore som variabelnavn hindrer "unused warning" | |
forward(height) | |
right(90) | |
forward(width) | |
right(90) | |
end_fill() | |
penup() | |
# Bygg skyskraperne og vinduer | |
for hus in range(antall + 1): | |
b = choice(husbredde_liste) # trekk en tilfeldig husbredde | |
h = randrange(60, 600, 30) + 10 # tilfedig høyde, men tilpasset vindustørrelser og mellomrom (20+10) | |
y = (skjerm_hoyde / -2) + 50 # hold deg på samme bunnlinje | |
firkant(x, y, h, b, choice(HUS_FARGER)) # tegne først et høyhus i tilfeldig valgt farge | |
for windows in range(int(h / 30)): # regn ut antall vinduer å tegne inn i høyden (vindushøyde er 20 og 10 i mellomrom hvert vindu) | |
for window in range(10, b, 20): # antall vinduer å tegne inn i bredden | |
firkant(x + window, y + 10, 20, 10, choice(VINDU_FARGER)) # størrelsen på vinduene med tilfeldig farge | |
y = y + 30 # avstand til neste etasje for å tegne inn vindu | |
x = x + b + 1 # mellomrom til neste hus basert på husbredde valgt + en piksel | |
exitonclick() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment