鄒元杰



【摘要】五子棋起源于中國古代的傳統黑白棋種之一,它不僅能增強思維能力 提高智力,而且富含哲理,有助于修身養性。本文主要闡述以eclipse為開發工具, 基于智能手機Android設計一個五子棋游戲,并對其中相關算法進行研究。
【關鍵詞】Android 五子棋 算法
一、Android開發環境介紹
Android的上層應用程序是使用的Java語言開發,同時還需要基于Dalvik虛擬機。所以,Google公司推薦使用主流的Java去繼承開發環境Eclipse。不過只有Eclipse還是遠遠不夠的,因為是使用Java語言進行開發,所以這部分還應該有由SUN公司提供的Java SDK(其中包括JRE:Java Runtime Environment)。此外,Android的應用程序開發和Java開發有較大區別的,所以還需要有Google提供的Android SDK。在Eclipse上安裝一個AVD的虛擬機也是必要的。同時,還需要在Eclipse安裝ADT,使得在有更新程序的時候可以能夠為Android開發提供開發工具的升級或者變更,也是Eclipse下開發工具的升級下載的工具。
二、Android應用程序組件
Android的一個主要特點是,一個應用程序可以利用其他應用程序的元素(假設這些應用程序允許的話)。例如,如果你的應用程序需要顯示一個圖像的滾動列表,且其他應用程序已經開發了一個合適的滾動條并可以提供給別的應用程序用,你可以調用這個滾動條來工作,而不用自己開發一個。你的應用程序不用并入其他應用程序的代碼或鏈接到它。相反,當需求產生時它只是啟動其他應用程序塊。
對于這個工作,當應用程序的任何部分被請求時,系統必須能夠啟動一個應用程序的進程,并實例化該部分的Java對象。因此,不像其他大多數系統的應用程序,Android應用程序沒有一個單一的入口點(例如,沒有main()函數)。相反,系統能夠實例化和運行需要幾個必要的組件。有四種類型的組件:活動(Activities)、服務(Services)、廣播接收者(Broadcast receivers)、內容提供者(Content providers)。
然而,并不是所有的應用程序都必須包含上面的四個部分,你的應用程序可以由上面的一個或幾個來組建。當你決定使用以上哪些組件來構建Android應用程序時,你應該將它們列在AndroidManifest.xml文件中,在這個文件中你可以聲明應用程序組件以及它們的特性和要求。
三、設計思路
此游戲主要是采用Android的View框架編寫,部分框架運用Android中的其他組件。主要運用了算法來實現對棋局的分析,棋盤輸贏的判定。
UI方面:此游戲當進入游戲的界面時,調用的是一個用相對布局-AbsoluteLayout的XML布局文件。其中包括了一個IamgeView和4個Button.分別實現了不同的功能。第一個Button是進入新游戲,點擊按鈕進入新游戲,來選擇對手。第二個Button是幫助,用了一個TextView來說明怎樣來進行游戲。第三個Button是游戲的關于,用了一個AlertDialog來介紹了一下游戲的這個游戲的好處。第四個Button是游戲的退出按鈕。在游戲中,用畫線來布滿了整個的手機屏幕,在上面用了TextView來進行了文字的說明和提示。
四、相關的算法研究
關于盤面情況的表示,首先得到屏幕的大小,然后根據所畫棋子的大小來確定下一條棋盤的畫線。產生棋盤上所有的線。分析規則中,判斷各個四個方向的棋子:在某個方向(八個中的一個)可下多少棋子,判斷是否還能下到滿5個棋子,最核心的應該是勝負判斷,實際上,是根據當前最后一個落子的情況來判斷勝負的。需要從四個位置判斷,以該子為出發點的水平,豎直和兩條分別為 45度角和135度角的線,目的是看在這四個方向是否最后落子的一方構成連續五個的棋子,如果是的話,就表示該盤棋局已經分出勝負。部分核心算法實現如下:
開始分析,掃描所有空白點,形成第一次分析結果;
第二次分析,分析第一次形成的結果,第一次分析結果會把一步棋在四個方向上可形成的結果生成最多四個FirstAnalysisResult對象(敵我各四);
第三次分析,雙方都不可以制造活4,找雙活3棋子,不行就找半活4,再不行就找單活3,雙活2;endprint