Salto a metà, scelta guidata

Chaos Game

  1. posiziona 8 punti in senso orario intorno a un quadrato
  2. il prossimo punto colorato è a metà tra quello attuale e uno scelto a caso
  3. la scelta è guidata in un certo sottoinsieme dei punti

+0 +1 +2

import random # randint()
import pygame

SCELTA=(+0,+1,+2)
WIDTH =800  # Larghezza
HEIGHT=800  # Altezza
SPAZIO=50   # Cornice vuota
RAGGIO=1    # Punto colorato
FRAME1=2    # Numero frame al secondo
FRAME2=500  # Numero punti per ogni frame

PUNTI=[]
PUNTI.append((      SPAZIO,        SPAZIO))
PUNTI.append((WIDTH/2     ,        SPAZIO))
PUNTI.append((WIDTH-SPAZIO,        SPAZIO))
PUNTI.append((WIDTH-SPAZIO, HEIGHT/2     ))
PUNTI.append((WIDTH-SPAZIO, HEIGHT-SPAZIO))
PUNTI.append((WIDTH/2     , HEIGHT-SPAZIO))
PUNTI.append((      SPAZIO, HEIGHT-SPAZIO))
PUNTI.append((      SPAZIO, HEIGHT/2     ))

NUM=len(PUNTI)

pygame.init()
screen=pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Chaos Game: tappeto 1/2 " + str(SCELTA))
clock=pygame.time.Clock()

# Disegna i punti di base
for x,y in PUNTI:
    pygame.draw.circle(screen, (0,0,128), (x,y), 25)

indice=0
xx,yy = PUNTI[indice]
ANCORA=True
while ANCORA:
    # Gestione degli eventi
    for ev in pygame.event.get():
        if(ev.type == pygame.QUIT):
            ANCORA=False

    # Tono di verde
    PENNA=(0, random.randint(128,255), 0)

    # Un certo numero di punti
    for i in range(FRAME2):    
        ii=random.choice(SCELTA)
        indice=(indice+ii)%NUM

        x, y=PUNTI[indice]

        xx=(xx+x)/2
        yy=(yy+y)/2
        
        pygame.draw.circle(screen, PENNA, (xx,yy), RAGGIO)
    
    pygame.display.flip()
    clock.tick(FRAME1)

pygame.quit()

+0 +1 +7

+0 +2 +4

+0 +2 +7

+1 +4 +7

+2 +4 +6

Continua…

Ci sono ancora centinaia di possibilità.

Lascia un commento