色感測驗(iOS遊戲App)

最近接連學了調色、亂數……等技術,我就在想,是否可以結合這兩個技術寫個遊戲App?最後終於讓我想到了!就是跳脫猜數字、猜牌、問答題……等等的框架,而是猜顏色。猜顏色當然不是直接猜電腦用亂數選的顏色,而是電腦用亂數出一個顏色當題目,然後使用者利用RGB三個顏色去調合成電腦出的這個題目的顏色。因為電腦出的這個顏色一定是RGB組合而成的(本App都是把Alpha設為1),所以一定存在RGB三個數字可以調合成,如果使用者調對了這三個數值,就算答對題目。簡言之,這個遊戲是在考使用者對顏色的敏感度,如果有修過色彩學的人應該很容易答出來,比如有些人就是知道紅色加綠色會變成黃色,像我這種沒修過而且對各種顏色的組合知識很弱的,真的是蠻困難的遊戲。老實說,我自己設計完這個App後試玩,我還沒有答對過一次XD。沒關係,誰說設計遊戲的人一定是很會玩該遊戲呢?我只要能考倒大家就行了XD。

廢話不多說,先附上執行動畫:

使用者開啟App後,就會看到上方是電腦出的題目,使用者就是要用下方的調色slider去調合成電腦出的那個顏色,調色結果是在作答右邊的圖。每個slider右方會顯示這個原色目前的值,範圍是0~255,需要微調可以使用stepper元件。如果認為自己調對了,就按提交,就會知道是否有答對。若真的調不出來,很想知道答案就按公布解答,左下方就會有三個數字,分別代表RGB三個數值的答案。如果要跳到下一題,可以按下一題,讓電腦重新出題。本App沒有限制作答時間,使用者可以慢慢調XD。

App截圖如下:

用亂數產生顏色及設定顏色的主要程式碼如下:

@IBAction func slider_ColorChange(_ sender: UISlider) {

red = CGFloat(Int(slider_ColorChange[0].value))/255

green = CGFloat(Int(slider_ColorChange[1].value))/255

blue = CGFloat(Int(slider_ColorChange[2].value))/255

label_RGBValue[0].text = String(Int(slider_ColorChange[0].value))

label_RGBValue[1].text = String(Int(slider_ColorChange[1].value))

label_RGBValue[2].text = String(Int(slider_ColorChange[2].value))

stepper_ColorChange[0].value = Double(Int(slider_ColorChange[0].value))

stepper_ColorChange[1].value = Double(Int(slider_ColorChange[1].value))

stepper_ColorChange[2].value = Double(Int(slider_ColorChange[2].value))

label_Answer.backgroundColor = UIColor(red: red, green: green, blue: blue, alpha: 1)

}

@IBAction func stepper_ColorChange(_ sender: UIStepper) {

red = CGFloat(Int(stepper_ColorChange[0].value))/255

green = CGFloat(Int(stepper_ColorChange[1].value))/255

blue = CGFloat(Int(stepper_ColorChange[2].value))/255

label_RGBValue[0].text = String(Int(stepper_ColorChange[0].value))

label_RGBValue[1].text = String(Int(stepper_ColorChange[1].value))

label_RGBValue[2].text = String(Int(stepper_ColorChange[2].value))

slider_ColorChange[0].value = Float(Int(stepper_ColorChange[0].value))

slider_ColorChange[1].value = Float(Int(stepper_ColorChange[1].value))

slider_ColorChange[2].value = Float(Int(stepper_ColorChange[2].value))

label_Answer.backgroundColor = UIColor(red: red, green: green, blue: blue, alpha: 1)

}

override func viewDidLoad() {

super.viewDidLoad()

// Do any additional setup after loading the view, typically from a nib.

question_red = CGFloat(Int.random(in: 0…255))/255

question_green = CGFloat(Int.random(in: 0…255))/255

question_blue = CGFloat(Int.random(in: 0…255))/255

label_Question.backgroundColor = UIColor(red: question_red, green: question_green, blue: question_blue, alpha: 1)

label_Answer.backgroundColor = UIColor(red: 127/255, green: 127/255, blue: 127/255, alpha: 1)

label_RGBValue[0].text = “127”

label_RGBValue[1].text = “127”

label_RGBValue[2].text = “127”

stepper_ColorChange[0].value = 127

stepper_ColorChange[1].value = 127

stepper_ColorChange[2].value = 127

slider_ColorChange[0].value = 127

slider_ColorChange[1].value = 127

slider_ColorChange[2].value = 127

label_StandardAnswer.text = nil

}

GitHub如下:

對顏色敏感度低的,常會覺得RGB三個slider怎麼滑動就是沒辦法調出和題目看起來相似的顏色,即使有時滑到好像快接近了,結果答案就是不對,看了解答才知道有一兩個數值還是差很多。所以,我覺得顏色的組合其實也是蠻深奧的學問,這種藝術的問題,即使有高超的邏輯思考或數學計算能力也不一定能解決。

--

--