2017-04-16 220 views
2

enter image description here得到明亮顏色隨機的Python

大家好,我的蛇遊戲程序,我需要當用戶選擇一個「彩虹」的主題,以生成一個隨機的顏色多次。網上通緝後,我發現這一點:

Generating a Random Hex Color in Python

得票最多的答案給了

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

但是一個解決方案,該方案產生非常暗淡的顏色爲好;例如深棕色,有時甚至是黑色。正如你所看到的,其中一些顏色不符合彩虹主題。

你會如何改變上面的代碼,讓你明白的橙色,粉紅色,紅色,藍色等鮮豔的色彩,你明白了。一個假設的解決方案是增加randint r的最小值,但這只是使所有的顏色都變成了白色。 :!「(

PLZ,PLZ,PLZ,幫助將是非常讚賞

謝謝你們

+1

'random.randint(128,255)'將保持它的光明一面。 – schwobaseggl

+0

另一件事情是,當十六進制的三個部分是相似的(如#000000或#ececec你得到一個灰度的顏色,所以要避免這些 – Lucas

+2

你可以生成HSV顏色,高飽和度,然後將其轉換爲RGB。在標準庫中進行轉換的'colorsys'模塊:https://docs.python.org/3.6/library/colorsys.html –

回答

5

創建一個隨機HLS顏色(周圍使用0.5號爲「級別」參數和上面的數字。 5作爲「飽和度」參數)並將它們轉換爲RGB:

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)] 

這將確保您始終擁有高飽和度,明亮的顏色。

+0

謝謝蒂姆,我對你的代碼做了一些修改,但是這絕對讓我着迷正確的軌道。感謝方便的維基百科頁面,[鏈接](https://en.wikipedia.org/wiki/HSL_and_HSV),也是一個不錯的網站[鏈接](http://hslpicker.com/#0af529 ),我能夠找到一個很好的「飽和度」和亮度(l)範圍:是的,根據維基是輕的。 – Lunkle

0

爲什麼不只是把自己喜歡的所有顏色的十六進制代碼列表中,並生成?該列表隨機指標我使用你的顏色名稱,而不是十六進制代碼了,但例如:

>>> 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