Pregunta

(Nota: El proyecto está en Python.)

Estoy ejecutando una simulación en la que tengo muchos objetos que quiero mostrar en la pantalla y manipular. Debe haber una forma de identificar cada objeto, ya que se moverán de un lugar a otro de forma abrupta y quiero poder rastrear qué objeto se movió a dónde.

Lo que he estado pensando es que, para cada objeto, generaré una "personalidad". Un par de colores y un nombre en inglés, y lo pondré como la representación del objeto en la GUI. Pensé que se usaría una función hash para hacer estos colores y nombres, pero nunca he trabajado con funciones hash.

¿Cómo puedo hacer lo que quiero hacer?

¿Fue útil?

Solución

use un uuid (módulo uuid en python > = 2.5).

Este uuid, en la versión 4, es por definición aleatorio en todos los campos (excepto uno)

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

Puede descomponer los campos correctamente para crear un color o un nombre (asignando un grupo de nombres a un campo específico). Por supuesto, está limitando su hash (la identidad real siempre es el uuid) pero para fines visuales es bastante suficiente. Por ejemplo, podría usar los primeros tres octetos para generar el color # 9d477d, y el octeto restante c7 para elegir un nombre de un conjunto de 256.

Si terminas con colores demasiado feos, puedes trabajar en HSV en su lugar, y fijar la saturación y el valor a niveles dados. De nuevo, esto restringe tu hash aún más (pero el espacio de color ya es bastante limitado después de todo).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top