2014-05-07 122 views
-1

我最近試圖做一個「猜顏色」遊戲(我的第一個),在那裏你得到一個十六進制代碼,你會得到一些替代選擇。我做到這一點的方式,我需要收集有關這些替代品(這只是彩色橢圓)的信息。無論如何,我需要改變顏色的RGB值,因爲它們是隨機生成的,創建(在這種情況下爲10)單獨的顏色並將它們設置爲一次看起來效率不高。更改現有顏色的RGB值?

我的問題是,我找不到方法來更改我的顏色的RGB值。基本上我創建了一個顏色數組(我注意到這個問題存在,沒有數組),但試圖改變值,因爲你會用普通變量不起作用。它只是給了我一個錯誤。

這是具體的方法。

public void OvalData(int r, int b, int g, int x, int i){ 
    //Create two arrays containing the information 
    Color OvalColor[] = new Color[difficulty]; 
    int[] posX = new int[difficulty]; 
    //Set the infromation 
    Color[i] = (r, g, b); 
    posX[i] = x; 

如果這就是問題所在行:

`Color[i] = (r, g, b);` 

任何幫助,將不勝感激!

+0

使用[color look-up table](http://en.wikipedia.org/wiki/Colour_look-up_table),看到[here](http://stackoverflow.com/a/9852739/230513)。 – trashgod

回答

1

Color[i]=...根本無法工作,因爲Color是類的名稱,而不是您的變量。你想改變的是OvalColor[i],而不是Color[i]

你可以嘗試OvalColor[i]=new Color(r, g, b)分配給你的顏色之一,但我想還有更多的解決辦法; OvalColor可能不應該在OvalData()方法的本地。

與您的問題無關,但與您的編碼風格有關:請僅對初始上限使用類名稱,對於變量和方法名稱使用初始小寫字母,如ovalColorpublic void ovalData(...)。這會使問題變得更容易被發現 - 你會習慣於在一段時間後「指派給某個具有首字母大寫字母的東西不起作用」。

+0

我看到問題的第一部分,謝謝:) 是的,我可能會意識到,它不應該是本地遲早,我對此很新。 但只是想明白,我應該創造新的顏色,而不是試圖改變現有的顏色? 我會嘗試改變我的寫法。我一直在尋求改進! – Raliks