The Color! (中文: 看你有多色) : http://game.ioxapp.com/color/

 

最近在FB上面頗紅

是一個用來測試視力的遊戲

玩法就是給你60秒的時間,找出不同顏色的方塊,找到越多分數越高

box      

 

看到許多朋友分享自己的分數

之後看到有人用外掛刷到300多分

就想說自己也來嘗試看看=w=

 

其中一種方法就是寫 JavaScript 去掃它網頁上的元素

比較無腦的就是所有方格都按一次

 

 

當然也是可以利用檢查 RGB 的方式來加快點擊的效率與準確度

不過其實靠第一種方法將程式碼丟到 Chrome 的Console 裡面跑

就可以刷到近 2000 分了 

 

不過在這之前一直想玩一下 Sikuli

一種結合 CV ( Computer Vision, 電腦視覺 ) 的 IDE

讓 programmer 可以利用 Python 或是 Java 來處理 computer vision 的東西

簡單來說,我可以利用 Sikuli 讓電腦自己玩 The Color! (自己判斷哪個方塊顏色與眾不同,並自己移動滑鼠點它)

Sikuli 有點像按鍵精靈,不過個人認為比按鍵精靈更有彈性

可以更方便得透過程式讓電腦模擬人類操作電腦的行為

 

Sikuli 本身是用 Java 開發成的 IDE,因此在安裝之前須要先安裝 JRE

此外他也有用到 OpenCV 的東西,所以還需要再安裝 OpenCV

以下是我的開發環境 :

* OS : Ubuntu 14.04

* Browser : Firefox 31.0

* Sikuli 1.0.1

* Java 7

* OpenCV 2.4.9

* Python 2.7.6

 

全部裝好之後就可以開始開發了

這裡我是用 Python 開發

就解 The Color! 來說, 其實並不難寫

一開始先透過偵測開始按鈕來開始遊戲

之後設定座標,讓 Sikuli 知道要從哪裡開始偵測與眾不同的方塊

 

外面那個將所有方塊包起來的正方形大小為 500 * 500

裡面每個方塊的大小均為相同

假設是 2*2 的關卡

則方塊大小則為 500/2 * 500/2 = 250 * 250

如果是 3*3 的關卡

則方塊大小則為 500/3* 500/3 = 167 * 167 (大概)

依此類推

 

我們可以以最左上角的方塊為起點

偵測方塊中心處的 pixel 值

記錄在一個 dictionary 裡面, 像這樣

{RGB : point}

RGB 是一個 tuple , 裡面記了三個值 (r, g, b)

point 也是一個 tuple, 記錄了座標 (x, y)

之後就可以寫判斷式去判斷哪個座標的 RGB 與眾不同

再用滑鼠去那個座標點擊即可

 

基本上沒遇到什麼大問題

比較困難的地方是本來想動態偵測方塊的起始點

結果一直失敗

使用了 find, match 之類的函式都無法獲得正確的起始座標

最後只好無耐的將起始點寫死

也使得整份程式少了那麼點彈性

一但螢幕大小有變整份程式就會失效

算是比較不足的地方

 

另外破關的速度也沒有很快

我想是因為光是要用 OpenCV 去偵測 RGB 這點就夠花時間了

還得移動滑鼠去點擊

這點就只能使用 "Settings.MoveMouseDelay = 0.01" 來加快滑鼠的動作

 

撇開缺點不談

是有享受到開發的過程就是了

一直覺得這種東西還蠻好玩的

雖然速度有點慢,一分鐘最多破個 101 關 ( 視當時CPU的負載而定 )

不過寫出來就是爽啊 =w=

 

github page : https://github.com/bruce30262/color-solver

 

DEMO:

 

 

 

arrow
arrow
    文章標籤
    Python Sikuli JavaScript
    全站熱搜

    Tube 發表在 痞客邦 留言(1) 人氣()