Skip to content

Instantly share code, notes, and snippets.

@orjanv
Last active November 28, 2022 19:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save orjanv/c2566550d8b31ff41b1cddc25d2715a8 to your computer and use it in GitHub Desktop.
Save orjanv/c2566550d8b31ff41b1cddc25d2715a8 to your computer and use it in GitHub Desktop.
Tegne tilfeldige hus
# 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