Last active
November 28, 2022 19:34
-
-
Save orjanv/c2566550d8b31ff41b1cddc25d2715a8 to your computer and use it in GitHub Desktop.
Tegne tilfeldige hus
This file contains 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 * | |
HUS_FARGER = ["#363432", "#196774", "#90A19D", "#F0941F", "#BD2A2E", "#3B3936", "#889C9B", "#486966"] | |
VINDU_FARGER = ["#F2F2F2", "#202022"] | |
# Tegne firkant funksjon | |
def firkant(x, y, h, w, col): | |
penup() | |
color(col) | |
pencolor(col) | |
setpos(x, y) | |
setheading(90) | |
pendown() | |
begin_fill() | |
for i in range(2): | |
forward(h) | |
right(90) | |
forward(w) | |
right(90) | |
end_fill() | |
penup() | |
# Litt oppsett | |
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') | |
bgcolor("#d1cbba") | |
x = (skjerm_bredde / -2) + 100 # begynn å tegne her | |
husbredde_liste = [50, 70, 90, 110, 130] # liste over forskjellige husbredder | |
antall = 14 # int(skjerm_bredde/husbredde_liste[-1]) # regne ut maks antall etter skjermbredde | |
# Bygg husene | |
for hus in range(antall + 1): | |
b = choice(husbredde_liste) # trekk en tilfeldig husbredde | |
y = -400 # hold deg på samme linje | |
h = randrange(60, 600, 30) + 10 # tilfedig høyde, men tilpasset vindustørrelser, må gå opp i 30 (20+10) | |
firkant(x, y, h, b, choice(HUS_FARGER)) | |
for window in range(int(h/30)): # regn ut antall vindu å tegne inn | |
for i in range(10, b, 20): | |
firkant(x + i, y + 10, 20, 10, choice(VINDU_FARGER)) | |
y = y + 30 # avstand til neste etasje | |
x = x + b + 1 # mellomrom til neste hus | |
exitonclick() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment