باستخدام وظيفة تجزئة لإعطاء شخصية لا تنسى إلى كائنات

StackOverflow https://stackoverflow.com/questions/1802094

  •  05-07-2019
  •  | 
  •  

سؤال

و(ملاحظة: هذا المشروع هو في بايثون)

وأنا على التوالي محاكاة التي لدي العديد من الأشياء التي أريد أن أظهر على الشاشة والتلاعب بها. يجب أن يكون هناك وسيلة لتحديد كل كائن، لأنها سوف تتحرك من مكان إلى آخر فجأة وأريد أن أكون قادرة على تتبع الكائن الذي انتقلت فيه.

وماذا كنت أفكر هو، إلى كل كائن سوف تولد "شخصية". زوجان من الألوان، والاسم باللغة الانكليزية، وأنا وضعت بأنه تمثيل الكائن على واجهة المستخدم الرسومية. أنا أحسب أن وظيفة تجزئة سيتم استخدامها لجعل هذه الألوان والأسماء، ولكن لقد عملت أبدا مع وظائف التجزئة.

وكيف يمكنني أن أفعل ما أريد القيام به؟

هل كانت مفيدة؟

المحلول

واستخدام UUID (وحدة UUID في بيثون> = 2.5).

وهذا UUID، في الإصدار 4، هو بالتعريف العشوائي على كافة المجالات (باستثناء واحد)

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

ويمكنك تتحلل الحقول بشكل صحيح لخلق لون أو اسم (عن طريق تعيين دلو من الأسماء لحقل معين). بالطبع كنت الحد من تجزئة الخاص بك (الهوية الحقيقية هي دائما UUID) ولكن لأغراض البصرية انها كافية إلى حد كبير. على سبيل المثال، يمكنك استخدام الثمانيات الثلاث الأولى لتوليد اللون # 9d477d، وc7 الثماني المتبقية لاختيار اسم واحد من مجموعة من 256.

إذا كنت في نهاية المطاف مع ألوان قبيحة جدا، يمكنك العمل في HSV بدلا من ذلك، والمشبك التشبع والقيمة لمستويات معينة. مرة أخرى، وهذا يقيد التجزئة الخاصة بك أكثر حتى (ولكن لون الفضاء بالفعل محدودة جدا بعد كل شيء).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top