介绍一款Android小游戏--交互式人机对战五子棋
?? ? ? 學習Android系統開發之余,編寫了一個小游戲--交互式人機對戰五子棋,自娛自樂。之所以稱之為交互式人機對戰五子棋,一是因為在進入人機對戰模式這前,你可以任意設置好開局,同時,在對戰過程中,你可以看到機器的思考過程,還可以標識出每一個落子點的優劣勢;二是因為可以為機器增加游戲經驗,使得機器越來越聰明。希望喜歡五子棋的同學能夠喜歡,同時,它也非常適合入門級練習。
《Android系統源代碼情景分析》一書正在進擊的程序員網(http://0xcc0xcd.com)中連載,點擊進入!
?? ? ? 首先展示一下這款五子棋的主界面,由于自娛自樂的小游戲,界面還是比較簡陋,達不到產品發布的效果,見諒!
?? ? ?
?? ? ? ?第一. 在CSDN下載這款五子棋游戲,下載鏈接:
?? ? ? ?http://download.csdn.net/source/3423512
?? ? ? ?下載后,解壓,里面有三個文件,分別是Renju.apk、Renju.gif和交互式人機對戰五子棋.docx,其中,Renju.apk就是我們的Android五子棋游戲程序了。
?? ? ? ?第二. 如果有Android SDK環境,請先創建一個2.1 API版本的模擬器。打開cmd命令窗口,進入到SDK目錄的tools文件夾,例如,如果你的SDK目錄放在D:\android-sdk-windows那么就進入到D:\android-sdk-windows\tools目錄下。?
?? ? ? ?1.??首先執行android list target查看目標平臺列表命令:
?? ? ? ??
?? ? ??從這里可以看出,2.1 API的target id為3。
?? ? ? 2. ?執行android create avd –n android2.1 –t 3命令創建名稱為android2.1的模擬機:
?? ? ? ??
?? ? ? ?3. 執行start /b android2.1命令在后臺運行模擬機:
?? ? ? ?
?? ? ? ?4.?如果tools目錄下有adb工具,則把Renju.apk文件放在tools目錄下,否則,把Renju.apk文件放在D:\android-sdk-windows\platform-tools目錄下,并進入到D:\android-sdk-windows\platform-tools目錄中,執行adb install Renju.apk命令安裝Renju.apk到模擬機上:
?? ? ? ?
?? ? ? ? 第三.??如果沒有Android SDK環境,請到新浪愛問:
?? ? ? ??http://ishare.iask.sina.com.cn/f/16902616.html
?? ? ? ??http://ishare.iask.sina.com.cn/f/16902614.html
?? ? ? ?下載Android 2.1 API模擬器(制作方法參考 制作可獨立分發的Android模擬器一文),解壓后,可以參照里面的README文件運行模擬器和安裝Renju.apk文件。?? ? ? ? 1.??假設壓壓縮包解壓后放D:\AndroidEmulator目錄下。打開cmd命令窗口,進入到D:\AndroidEmulator目錄,執行start /b emulator.exe -sysdir d:\AndroidEmulator -system images\system.img -data images\userdata.img -ramdisk images\ramdisk.img -kernel images\kernel-qemu -skindir d:\AndroidEmulator\skins -skin HVGA命令在后臺運行模擬器:
?? ? ? ? ?
?? ? ? ?2.?模擬器運行起來之后,里面已經內置了Renju應用程序,不用再安裝,如果沒有,則執行adb install Renju\Renju.apk命令進行安裝。
?? ? ? ?第四.?執行完上述第一步或者第二步后,交互式人機對戰五子棋就安裝好了,進入Home Screen屏幕上,可以看到Renju應用程序,如下圖所示:
?? ? ? ?
?? ? ? ?第五.?使用方法。
?? ? ? ?點擊Home Screen上的Renju圖標,便可以打開程序:
?? ? ? ?
?? ? ? ?按住鼠標不放,在棋盤上移動,在鼠標位置會有一個“+”圖標跟著鼠標移動;放開鼠標,即可選定一個落棋點:
?? ? ? ?
?? ? ? ? 主界面上有五個按鈕:
?? ? ? ? Start:點擊開始人機對戰
?? ? ? ? Shoot:當棋盤上出現“+”圖標時,點擊按鈕在“+”位置上落下一個棋子,Renju會自動計算當前應該下白棋還是黑棋
?? ? ? ? Undo:悔棋,點擊一次悔一步棋
?? ? ? ? Reset:重新開始游戲
?? ? ? ? Annotation:顯示/隱藏當前棋盤每個落子點的得分情況,第一個數字表示黑棋得分,第二個數字表示白棋得分。數字后面的h表示100,如5h,表示得分為500,類似地,k表示1000,w表示10000。得分越大,表示落子點優勢越大,如下圖所示:?? ? ? ??
?? ? ? ??程序有兩種模式,一是手動對戰模式,一是人機對戰模式。打開程序時,默認是人人模式,點擊Start按鈕進入人機對戰模式,進入人機模式對戰模式后,不可以再切換至人人模式。人機對戰模式時,電腦使用黑棋。
?? ? ? ?點擊右邊鍵盤區的menu按鈕,顯示菜單有四個菜單項:
?? ? ? ?Importing Opening:導入開局
?? ? ? ?Exporting Opening:保存開局。當前棋盤為空時,不可用
?? ? ? ?Add To Experiences:增加電腦經驗。棋盤上為空或者只有一個棋子時,不可用
?? ? ? ?Manage Experiences:管理電腦經驗
?? ? ? ?點擊ExportingOpening菜單,保存開局:
?? ? ? ?
?? ? ? ?在彈出框中輸入開局名稱,點擊OK按鈕即可。
?? ? ? ?點擊Importing Opening菜單,出現開局列表,選中其中一個開局,即可導入開局:?? ? ? ?
?? ? ? ?點擊Add To Experiences菜單,增加電腦經驗。例如,當出現以下棋局時:
?? ? ? ?
?? ? ? ??點擊Add To Experiences菜單,在彈出框中輸入經驗名稱:
?? ? ? ?
?? ? ? ??點擊OK按鈕,即可保存經驗。
?? ? ? ? 當下次進入人機對戰模式時,如果電腦發現當前的棋盤形勢如下圖所示時:
?? ? ? ?
?? ? ? ??就會自動在“+”位置上落下一個黑棋。
?? ? ? ?點擊Add To Experiences菜單,可以查看當前電腦經驗列表:
?? ? ? ?
?? ? ? ? 第六. ?人機對戰原理。簡單來說,就是通過獲勝表的方法,輪到機器落子時,在獲勝表中找到得分值最大的落子點,落下一個棋子,然后再用機器再預測對方下一個可能的落子點,模擬對方下一個棋子,這時再判斷誰獲得優勢,如果機器處于劣勢,再回到第一步中,找到得分值次大的落子點,落下一個棋子,同樣,再預測對方下一個可能的落子點,并模擬對方下一個棋子,再判斷誰獲得優勢,依次類推,這就是回溯算法了。所以,總的來說,機器的智能來自獲勝表+回溯算法,有時間再詳細描述,感謝關注。
?? ? ? ? 歡迎交流和合作,Email: shyluo@gmail.com.
老羅的新浪微博:http://weibo.com/shengyangluo,歡迎關注!
總結
以上是生活随笔為你收集整理的介绍一款Android小游戏--交互式人机对战五子棋的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python-Django毕业设计好又多
- 下一篇: Android—拼图小游戏