2017-04-16 2 views
2

enter image description hereeine helle zufällige Farbe Python Get

Hallo zusammen, Programm in meiner Schlange Spiel, ich brauche eine zufällige Farbe mehrere Male zu erzeugen, wenn der Benutzer einen „Rainbow“ Thema auswählt. dies nach Online-Suche, fand ich:

Generating a Random Hex Color in Python

Die Antwort mit den meisten Stimmen erhielt eine Lösung von

import random 
r = lambda: random.randint(0,255) 
print('#%02X%02X%02X' % (r(),r(),r())) 

jedoch dieses Programm erzeugt sehr trübe Farben als auch, zum Beispiel dunkelbraun und manchmal sogar schwarz. Wie Sie sehen können, stimmen einige dieser Farben nicht mit einem Regenbogen-Thema überein.

Wie würden Sie den obigen Code ändern, so dass Sie lebendige Farben wie leuchtend orange, pink, rot, blau usw. erhalten, Sie bekommen die Idee. Eine hypothetische Lösung bestand darin, den Mindestwert von randint r zu erhöhen, aber das machte alle Farben sehr weiß. .! "(

plz, plz, plz, wird Hilfe sehr geschätzt

Danke Jungs

+1

'random.randint (128,255)' wird es auf der hellen Seite halten. – schwobaseggl

+0

Eine andere Sache ist, wenn die drei Teile des Hex sind ähnlich (wie # 000000 oder #cececec erhalten Sie eine Graustufenfarbe, so vermeiden Sie diese. – Lucas

+2

Sie könnten Farben in HSV mit hoher Sättigung erzeugen, dann konvertieren sie in RGB. Es gibt sogar ein 'colorsys'-Modul in der Standardbibliothek, um die Konvertierung durchzuführen: https://docs.python.org/3.6/library/colorsys.html –

Antwort

5

erstellen zufällige HLS Farbe (mit Zahlen um 0,5 als „Ebene“ Parameter und Zahlen oben. 5 als "Sättigungs" -Parameter) und wandeln sie in RGB um:

import random 
import colorsys 
h,s,l = random.random(), 0.5 + random.random()/2.0, 0.4 + random.random()/5.0 
r,g,b = [int(256*i) for i in colorsys.hls_to_rgb(h,l,s)] 

Das wird sicherstellen, dass Sie immer hoch gesättigte, helle Farben haben werden.

+0

Danke Tim, ich habe ein paar Änderungen an deinem Code vorgenommen, aber das hat mich definitiv weiter gebracht Der richtige Weg: Dank der praktischen Dandy-Wikipedia-Seite, [link] (https://en.wikipedia.org/wiki/HSL_and_HSV) und einer netten Website [link] (http://hslpicker.com/#0af529), Ich konnte einen guten Bereich von "Sättigung" (s) und Helligkeit (l) finden: Ja, laut dem Wiki ist es Leichtigkeit. – Lunkle

0

Warum nicht einfach die Hex-Codes setzen für alle Ihre Lieblingsfarben in einer Liste, und erzeugen ein ? Zufalls Index für diese Liste ich verwende Sie Farbnamen anstelle von hex-Codes jetzt, aber zB:

>>> clist = ["orange", "pink", "red", "blue"] 
>>> for i in range (1, 10): 
...  rcol = random.randint(0,len(clist)-1) 
...  print(clist[rcol]) 
... 
red 
orange 
red 
pink 
orange 
orange 
red 
blue 
pink