Netuším, co u těch louží znamená ta hodnota 1000 a proč pak ty hodnoty testuješ místo abys ten interval rovnou definoval, jak ho chceš mít.
Jestli správně chápu, co chceš tím větším rozestupem louží, tak na to můžeš použít funci randrange(od, do, krok). Stejné parametry má i funkce range a můžeš je využít při kreslení příček toho žebříku.
A když je to program na podprogramy/funkce, tak je trochu k ničemu funkcí řešit jen jednu věc.
import random
import tkinter
def nakresli_dvojici_krapniku(canvas, x, delka, y_strop, y_podlaha):
x1, y1 = x, y_strop
x2, y2 = x, y_strop + delka
canvas.create_line(x1, y1, x2, y2, fill="green")
x1, y1 = x, y_podlaha - delka
x2, y2 = x, y_podlaha
canvas.create_line(x1, y1, x2, y2, fill="green")
def nakresli_louzi(canvas, x, y, sirka, vyska):
vlevo, vpravo = x, x + sirka
nahore, dole = y, y + vyska
canvas.create_oval(vlevo, nahore, vpravo, dole, fill="blue")
def nakresli_zebrik(canvas, x, y, sirka, vyska, rozestup):
vlevo, vpravo = x, x + sirka
nahore, dole = y, y + vyska
canvas.create_line(vlevo, nahore, vpravo, nahore, fill="brown", width=3)
canvas.create_line(vlevo, dole, vpravo, dole, fill="brown", width=3)
for pricka in range(vlevo + rozestup, vpravo, rozestup):
canvas.create_line(pricka, nahore, pricka, dole, fill="brown", width=3)
# zacatek
canvas_width, canvas_height = 700, 400
canvas = tkinter.Canvas(width=canvas_width, height=canvas_height)
canvas.pack()
# krapniky
for x in range(canvas_width):
delka = random.randint(20, 70)
nakresli_dvojici_krapniku(canvas, x, delka, 0, canvas_height)
# louze
pocet = random.randint(10, 20)
for i in range(pocet):
x = random.randrange(100, canvas_width - 100, 50) # střílím od boku. netuším, jak toto chceš mít
y = random.randrange(100, canvas_height - 100, 50)
sirka = random.randint(20, 100)
vyska = random.randint(20, 100)
nakresli_louzi(canvas, x, y, sirka, vyska)
# zebrik
nakresli_zebrik(canvas, 0, 150, canvas_width, 70, 70)
tkinter.mainloop()