Question

(Remarque: le projet est en Python.)

Je réalise une simulation dans laquelle j'ai plusieurs objets que je veux montrer à l'écran et manipuler. Il doit exister un moyen d’identifier chaque objet, car il se déplace brusquement d’un endroit à l’autre et je veux pouvoir savoir quel objet a été déplacé où.

Ce que je pensais, c’est que chaque objet génère une "personnalité". Un couple de couleurs et un nom anglais, et je vais mettre cela comme représentation d'objet sur l'interface graphique. J'ai pensé qu'une fonction de hachage serait utilisée pour créer ces couleurs et ces noms, mais je n'ai jamais travaillé avec des fonctions de hachage.

Comment puis-je faire ce que je veux faire?

Était-ce utile?

La solution

utilisez un uuid (module uuid en python > = 2.5).

Cet uuid, dans la version 4, est par définition aléatoire sur tous les champs (sauf un)

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

Vous pouvez décomposer les champs correctement pour créer une couleur ou un nom (en mappant un compartiment de noms sur un champ spécifique). Bien sûr, vous limitez votre hachage (la véritable identité est toujours le uuid) mais pour des raisons visuelles, c'est largement suffisant. Par exemple, vous pouvez utiliser les trois premiers octets pour générer la couleur # 9d477d et l’octet restant c7 pour choisir un nom parmi un jeu de 256.

Si vous vous retrouvez avec des couleurs trop laides, vous pouvez travailler en mode HSV et fixer la saturation et la valeur à des niveaux donnés. encore une fois, cela limite encore plus votre hachage (mais l’espace colorimétrique est déjà assez limité, après tout).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top