Skip to content

Instantly share code, notes, and snippets.

@orjanv
Last active February 8, 2024 20:58
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/9a81908fc3e28323ed2d07cc236a3392 to your computer and use it in GitHub Desktop.
Save orjanv/9a81908fc3e28323ed2d07cc236a3392 to your computer and use it in GitHub Desktop.
Tegne en by med firkanter
# 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