Domanda

(Nota: il progetto è in Python.)

Sto eseguendo una simulazione in cui ho molti oggetti che voglio mostrare sullo schermo e manipolare. Deve esserci un modo per identificare ogni oggetto, perché si sposteranno da un posto all'altro all'improvviso e voglio essere in grado di tracciare l'oggetto spostato dove.

Quello che ho pensato è che per ogni oggetto genererò una "personalità". Un paio di colori e un nome inglese, e lo inserirò come rappresentazione dell'oggetto nella GUI. Ho pensato che una funzione hash verrà utilizzata per creare questi colori e nomi, ma non ho mai lavorato con le funzioni hash.

Come posso fare quello che voglio fare?

È stato utile?

Soluzione

usa un uuid (modulo uuid in python > = 2.5).

Questo uuid, nella versione 4, è per definizione casuale su tutti i campi (tranne uno)

>>> uuid.uuid4()
UUID('9d477dc7-a986-4e3d-aa4f-6e57f690be78')

È possibile scomporre correttamente i campi per creare un colore o un nome (mappando un secchio di nomi su un campo specifico). Ovviamente stai limitando il tuo hash (la vera identità è sempre l'UUID) ma per scopi visivi è molto sufficiente. Ad esempio, è possibile utilizzare i primi tre ottetti per generare il colore # 9d477d e l'ottetto rimanente c7 per scegliere un nome da un set di 256.

Se finisci con colori troppo brutti, puoi invece lavorare in HSV e bloccare la saturazione e il valore a determinati livelli. ancora una volta, questo limita ulteriormente il tuo hash (ma lo spazio colore è già piuttosto limitato dopo tutto).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top