2010-04-20 86 views
3

我看到this視頻,我真的好奇它是如何執行的。有沒有人有任何想法?我的直覺是,他從屏幕上刮取了像素(每個「盒子」一個),然後將其輸入到某個程序中以確定下一步行動。從Flash(遊戲)刮數據

是以像素爲單位進行拼接的方式,還是有更好的方法?我正在尋找與Java或Python類似的東西。

謝謝

+0

你可以屏幕刮擦,我敢肯定,你可以使用足夠的時間和工具侵入閃存對象本身。我只是不知道如何。 ;) – Drew 2010-04-20 19:52:26

回答

2

也許這是最可靠的方法。有一些方法可以檢查進程內部發生的情況 - 直接關注其內部狀態和內存 - 但是它們是特定於平臺的,並且很容易出現錯誤行爲,因爲您處理的是某種稍微不同的版本 - 包括與以及作爲應用程序的不同版本。這些方法更常用於exe遊戲的「培訓者」,其中通常只有一兩個版本的可執行文件需要擔心。

大量的屏幕截圖,比較,找出可靠的指標像素似乎是要走的路 - 當然,還要記錄您期望發生的事情。當應用程序運行時,它應該一次從屏幕截圖工作(希望確保畫面一致,沒有半更新的視圖),然後使用(可能)決策樹測試所需的最小像素數。

有些方法可以自動化構建有效的決策樹,但根據比較屏幕截圖手動執行操作可能更容易。在這種情況下,由於俄羅斯方塊通常會在同一位置創建所有新的棋子,顏色和形狀之間的關係爲1:1,因此您可以從一個像素顏色中確定新棋子的形狀和位置 - 因此「決策樹」可能是一個錯誤的術語,在這種情況下 - 儘管機器人需要從屏幕讀取其他內容。

更有趣的是實際制定遊戲決策的邏輯,因爲這個機器人顯然不是將每件作品放入最直接明顯的位置,而是有意識地創造一次清除3或4行的機會。

+0

你必須是廣告商! – elias 2010-04-21 08:51:32

2

是的,我認爲他掃描像素。實際上它應該非常簡單,因爲您只需要爲每次移動掃描新形狀。有了這些信息,您可以在本地計算網格並進一步將其用於AI計算。