import pygame from random import * breite = 500 hoehe = 433 # ungefähr sqrt(3)/2 * breite; sqrt = square root = Quadratwurzel iterationen = 10000 weiss = (255, 255, 255) # Ein Tupel aus drei Zahlen, kodiert die Farbe Weiss im RGB-Modell, das wir später kennenlernen werden. # Koordinaten des Punkts A xA = 0 yA = hoehe # Koordinaten des Punkts B xB = breite yB = hoehe # Koordinaten des Punkts C xC = int(breite / 2) # Der Befehl "int" macht eine Kommazahl (= reelle Zahl = real number) durch Abschneiden der Nachkommastellen zu einer ganzen Zahl (= integer). yC = 0 pygame.init() pygame.display.set_caption("Das Chaos-Spiel") leinwand = pygame.display.set_mode((breite + 1, hoehe + 1)) pygame.draw.line(leinwand, weiss, (xA, yA), (xB, yB)) pygame.draw.line(leinwand, weiss, (xB, yB), (xC, yC)) pygame.draw.line(leinwand, weiss, (xC, yC), (xA, yA)) pygame.display.update() x = randint(0, breite) y = randint(0, hoehe) for i in range(0, iterationen): zufall = randint(1, 3) if zufall == 1: x = x + 0.5 * (xA - x) y = y + 0.5 * (yA - y) if zufall == 2: x = x + 0.5 * (xB - x) y = y + 0.5 * (yB - y) if zufall == 3: x = x + 0.5 * (xC - x) y = y + 0.5 * (yC - y) leinwand.set_at((round(x),round(y)), weiss) # Zeichnet ein Pixel am Punkt (x,y) bzw. genauer an den gerundeten Koordinaten. pygame.display.update((round(x), round(y), 1, 1)) # denn das ist deutlich schneller als # pygame.display.update() pygame.time.delay(1) if i % 1000 == 0: # "Prozent-Division" liefert den Rest der Division. print(i) print("Fertig! Das Fenster wird in 5 Sekunden geschlossen.") # Ausgabe der Zeichenkette (= string) zwischen den Anführungszeichen. print(f"Insgesamt wurden {iterationen} Punkte gezeichnet.") # f-string = formatted string pygame.time.delay(5000) # Pause in Millisekunden pygame.quit()