Re: [惡搞] 懸賞踩地雷 AI!

看板java作者 (小水)時間15年前 (2010/10/11 23:21), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串18/21 (看更多)
原本設計WendlyAI時 怕執行效率太差 因此沒有將整個架構OO化 只將部分核心物件OO化 為了呼應AmosYang大大上一篇丟出的議題 原本是沒有考慮到這個議題的>< 不過還好最核心的演算法 都切得很乾淨 思考了一下要修改成任意版本的地圖 並不會太花功夫 另一方面 我認為要擴充到任意版本的地圖 並不會對演算法造成任何花費 完全OO化確實會有一點花費(光function呼叫數就多很多了) 但是花費並不會太大 為了證明我的猜測 所以就動手寫了WendlyAI2_5 首先 針對任意版本的地圖的議題 AmosYang大大說的實作抽象化 是沒有說清楚抽象化什麼東西 如果是指核心演算法 我認為核心演算法就是對set作比對 所以我對核心演算法幾乎完全沒有修改 我的做法是把地圖抽象化 所以我定義了一個interface interface IMap { Set getTotal(); Set getNeighbor(Point point, int layer); int getNum(Point point); void setNum(Point point, int num); int getSize(); boolean isValid(Point point); boolean isMine(Point point, boolean isOrg); boolean isUnknow(Point point, boolean isOrg); boolean isNum(Point point, boolean isOrg); boolean isClose(Point point1, Point point2); } 以上這些API都是我的核心演算法所需要的功能 只要該種類型地圖正確提供這些API實作 我的AI就能正常運作 其中Point為一個3個自由度的point 目前認為3個自由度應該就能通吃所有的地圖(我還想不到超過範圍的) 如果真的有超過範圍的 也可以將Point進一步抽象化 這部份部會是大問題就是了 接下來 我實作了一個CartesianMap2D 然後將個CartesianMap2D當作IMap餵給核心演算法 一切就結束了 當然順便把所有的code都OO化了 接下來測試PK500張地圖所花費的時間 WendlyAI2_4 VS WendlyAI2_4 43秒 WendlyAI2_5 VS WendlyAI2_5 53秒 確實拖慢了一點時間 不過差別不大 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.127.112

10/12 09:44, , 1F
這討論串真長.....遭了我還沒研究
10/12 09:44, 1F
文章代碼(AID): #1CiokCNv (java)
討論串 (同標題文章)
文章代碼(AID): #1CiokCNv (java)