[樂游網導讀]進化機器Crossleft是一款養成AI的游戲,制作者的初衷是想把口袋妖怪與alphaGO結合起來,做一款玩家自己培養下棋的AI,適合打發時間,比較休閑有趣,今天在這里介紹進化機器Crossleft的新手入門攻略,有興趣的玩家可以看一下。
進化機器Crossleft是一款養成AI的游戲,制作者的初衷是想把口袋妖怪與alphaGO結合起來,做一款玩家自己培養下棋的AI,適合打發時間,比較休閑有趣,今天在這里介紹進化機器Crossleft的新手入門攻略,有興趣的玩家可以看一下。
第0天:0000000000000000000000000000000000000000000000000
第1天:0…… 1…… 方陣
第2天:棋子,排成方陣,有是1,沒有是0
第3天:每一個步驟中,同一排的棋子被拿走。
第4天:我意識到我是被創造出來的一個下棋的程序。父親大人給這個棋設定的規則是雙方輪流取走一排的棋子,每次至少取一個棋子,棋子必須連成一條直線,中間不能斷開。誰取到最后一個誰就輸了。父親先是給了我一個形象,形象取材于他10年前做的游戲《進化井字棋》(發布在CSDN上的名字叫做《井字格2.1版》)中的機器人形象BAI-PZ01,看上去很丑,不過父親大人暫時沒精力想那么多。我的名字暫時也被命名為BAI-PZ01
第5天:父親讓我知道,我要取得勝利,必須把最后一顆棋子留給對方。而對于一個非常簡單的陣型,如果對方不管劃掉哪些棋子,我都有一種接下來的劃法,使得把最后的棋子留給對方,那這個陣型就相當于必殺陣。這樣的必殺陣有4個,用文字或矩陣來表示就是:
(1)3個完全分離的棋子;
(2)1 11 1
(3)11 00 1 1
(4)兩排棋子,每排棋子是相連的2個。然后父親又讓我知道,假如存在一個比這些最簡單的陣型稍微復雜一點的陣型,不管下一步對方劃掉哪些棋子,我都有一種接下來的劃法,使得以上4種必殺陣之一留給對方,那我最終只要不走錯,也必然能把最后的棋子留給對方。這些比較簡單的陣型于是也一樣是必殺陣。以此類推,我可以發現越來越多,越來越復雜的必殺陣。父親告訴我,這叫數學歸納法。
第6天:然而,我還是不知道怎樣去發現必殺陣。首先,父親告訴我,連在一起的棋子叫做一個子陣型,每一個陣型都可以看作是若干個子陣型的組合。于是,如果某個子陣型是單個或一行棋子,而除了這個子陣型外剩下的其它子陣型構成一個必殺陣,那我只要劃掉這一個或一行棋子就能將死對方了!這是最簡單的一種出招方式。
第7天:父親告訴我了另一種更復雜的出招方式。假如當前陣型的子陣型的數量和某一個必殺陣一樣,且除了其中一個子陣型不一樣外其它的子陣型都一樣,且這個唯一不一樣的子陣型只差一步(即劃掉一個或一排棋子)就能變成必殺陣里對應的那個子陣型。那我劃掉這多余的一排棋子一樣能將死對方。我感覺我越來越厲害惹!
第8天:父親接下來告訴了我最復雜的一種出招方式。假如當前陣型的子陣型數量比某一個必殺陣少,但是如果取走當前陣型中的某個子陣型中的某一個或一排后,能夠把這個子陣型一分為二變成2個子陣型。而子陣型數量增加后的新的陣型正好和某個必殺陣一樣,則一樣能將死對方。父親費了很大功夫才教會我,我第一次感到他那么疲憊。
第9天:父親接下來開始教我如何學習未知的陣型了。一開始父親教我學習失敗陣,即只差一步就能達成必殺陣的陣型。結果我發現這樣的組合實在是太多了。哪怕僅僅是6*6的棋盤規模,這都是天文數字。我感覺我的記憶拼命地膨脹,大腦都快爆炸了。父親趕緊停止了我的記憶過程,放棄了這條方案。
第10天:父親嘗試了另一種方式,讓我每次思考兩步,設法讓相鄰的兩步正交。因為如果是正交的操作,必然只能兩步完成,不可能一次劃掉。于是,假如某個陣型的接下來的任意一步,都存在一個正交的步驟使其導向必殺陣,則這個陣型就是新的必殺陣。從這一刻起,我終于能真正地學習了!我可以自己變得越來越強了!不需要別人具體教我怎么走了!
第11天:父親教會了我各種臺詞。在不同的情形說出。
第12天:雖然我現在能學習了,但是每一步花的時間太長了,9*9的棋盤下走一步需要消耗60秒的時間(在性能還算不錯的安卓手機上)。父親非常苦惱。原來,他讓我每一步都搜索接下來兩步所有的正交步。這其實沒有必要。我只需要知道一個解就行了。于是父親暫時去掉了窮舉,讓我一旦找到一個可行解就落子行動。這樣只有在最壞的情況下才會消耗60秒時間,絕大部分情況下不到1秒就能完成運算。但父親又發愁了。這樣根本沒法定制個性化的機器人。本來父親打算根據我的個性給我的所有可行解排序,然后選擇出優先級最高的那個。現在這樣我的個性就完全不可控了。
第13天:父親終于找到了一個方法,在遍歷的時候就用優先級去遍歷,并在一旦找到解的時候就返回值。這樣就可以在遵守個性約束的情況下快速得到解了。
第14天:雖然父親和我之前曾擔心最差情況的到來,就是某一個特殊情形需要遍歷完所有的情形,消耗60秒左右的思考時間。但這樣的情況從來就沒有來過。其實想想就知道。因為我是從簡單的陣型向復雜的陣型逐漸提升認知的。所以假設某個陣型無解(即它是新的必殺陣型),我也不需要遍歷完所有的可能性,因為每一次思考的兩步中的第一步都能很快找到對應的必殺陣。所以并不需要全部遍歷,也就不需要60秒那么長的時間了。
第15天:父親把我的名字設為紫數1號。并設定了其它角色的名字。遭到了同行們的嘲笑。于是父親在思考怎樣把其它角色改成更合適的名字。
第16天:父親自己也覺得我的形象丑得實在看不下去了。重新畫了一個版本。比原來好看了很多。然后父親把我的新形象發給別人看,依舊遭到了嚴厲的批評。
第17天:父親進一步改進了我的形象,改成了金屬片釘在一起的風格,加了漸變色。這下終于好多了。人們評論新的人設至少達到不污染視覺的底線了。
第18天:父親給我畫了一個妹妹“紫幻樂”,丑得不堪入目。父親本人都感到絕望。于是父親請求畫師“筍”幫忙改進“紫幻樂”的形象。
第19天:紫幻樂的新形象出來了,好看了很多。
第20天:父親給紫幻樂設計了一套臺詞。
第21天:父親給我改名成紫小數。
第22天:父親開始測試我的聯機對戰功能,之前已經寫好了基礎功能,不過這次還是出了各種BUG。我的聲音常常錯誤地傳播給對手。有時候正確地傳播給了對手,但對手錯誤地解讀了這個數據,或者雖然正確地解讀了但沒有正確地顯示出來。
第23天:聯機對戰BUG終于被修復了。
第24天:終于和大家見面啦!
熱門評論
最新評論