freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于android五子棋的設(shè)計與實現(xiàn)(參考版)

2024-12-10 01:25本頁面
  

【正文】 在實際軟件項目開。單元測試和集成測試在編寫代碼的時候已經(jīng)測試過了。 ()。 } })。 (確定 , new () { public void onClick(DialogInterface dialog, int whichButton) { setResult(RESULT_OK)。 ()。 (溫馨提示: )。 private void showExitGameAlert() { 30 //final AlertDialog dlg = new (this).create()。 提示框的實現(xiàn)是運用了 Android中的 ,通過給 Builder添加標(biāo)題、 按鈕,按鈕對應(yīng)的事件即可完成對應(yīng)提示框。 用戶點擊“退出”按鈕后,系統(tǒng)會跳出一個提示框給用戶進(jìn)一步確認(rèn)。 } else return false。 } mWinFlag = wbflag。amp。amp。amp。amp。amp。 j GRID_SIZE 1。 i GRID_SIZE 1。每判斷一個子做一次標(biāo)記,當(dāng)同一方向的五個子標(biāo)記相同則判斷出勝負(fù)即五連那方贏,代碼如下(以 橫向方向為例), 具體效果如圖 所示 。 判斷方法 是通過遍歷整個棋盤即通過兩個 for實現(xiàn)。 ()。 public void onDrawForReset() { if(reback==1) { mChessTable[][] = 0。 return point。 = maxScore。 = j。 if (maxScore = tmpScore) { maxScore = tmpScore。 tmpScore += playerTable[i][j][2]。 } tmpScore = playerTable[i][j][0]。 = i。 point = new ChessPoint()。 tmpScore += puterTable[i][j][3]。 tmpScore += puterTable[i][j][1]。 j CHESS_GRID。 i CHESS_GRID。 int tmpScore = 0。 //ChessPoint point。在機子自動落子的關(guān)鍵就是找出最大估值,下面是落子實現(xiàn)的核心代碼。 棋子自動落子實現(xiàn) 棋子自動落子分為兩個等級的菜鳥級別 與大蝦級別。 } else { y = (int) ((() mStartY) / grid_width) 1。 } else { x = (int) ((() mStartX) / grid_width) 1。 float y0 = grid_width (() mStartY) % grid_width。 如果是則遍歷每一個坐標(biāo),判斷 26 是否是有棋子,如果等于 0則無棋子;然后用觸屏獲得的 x和 y的坐標(biāo)值分別減去棋盤的坐標(biāo)的 x坐標(biāo)和 y坐標(biāo) 的值得到兩個值,兩個值平方再相加賦給臨時變量 temp。 ()。 stopService(intent)。 (關(guān)閉 , new () { public void onClick(DialogInterface dialog, int whichButton) { Intent intent=new Intent()。 startService(intent)。 (開啟 , new () { public void onClick(DialogInterface dialog, int which) { Intent intent=new Intent()。 (選擇音樂模式 )。 private void startMusic() { // TODO Autogenerated method stub final Builder dlg = new (this)。音樂聽膩時可以選擇關(guān)閉音樂。 } else if (mChessTable[i][j] == WHITE) { // 通過圖片來畫 (mChessBW[1], mStartX + (i + 1) * grid_width (chess_dia 1), mStartY + (j + 1) * grid_width (chess_dia 1), mPaint)。 j CHESS_GRID。 i CHESS_GRID。 第三個參數(shù) 指的是對應(yīng)的畫筆。 這個方法第一個參數(shù)是圖片原來的大小,第二個參數(shù)是繪畫該圖片需顯示多少。 } 23 圖 棋盤 棋子的繪制 通過 for循環(huán),遍歷整個棋盤, 若 當(dāng)前遍歷到的棋子的值為 2 時,繪制黑子;當(dāng)遍歷到的棋子的值為 1 時,繪制白子。 } } // 畫棋盤的外邊框 (4)。 int mBottom = mTop + grid_width。 int mTop = j * grid_width + mStartY。 j GRID_SIZE。 i GRID_SIZE。 ()。 ()。代碼實現(xiàn)如下, 具體效果如圖 所示 。 Paint: 繪制時所使用的畫筆。 (mLeft, mTop, mRright, mBottom, paintRect)。 Canvas類主要實現(xiàn)了屏幕的繪制過程,其中包含了很多實用的方法 。然后有時當(dāng)玩家剛打開游戲想進(jìn)行一番切磋,因為這樣那樣的原因,不得不停止游戲,則玩家可以點擊“退出”按鈕,等有 時間再與機子進(jìn)行棋藝切磋,如圖 所示。對于有一定五子棋經(jīng)驗的玩家,可以點擊“大蝦”按鈕,與機子進(jìn)行對弈。 對于五子棋新手或者對五子棋游戲不熟練的,可以點擊“菜鳥”按鈕。 activity都需要再 。創(chuàng)建activity有四個要點: activity是一個類,要繼承 activity類。 21 5 五子棋 實現(xiàn) 歡迎界面實現(xiàn) 五子棋的設(shè)計首先設(shè)計一個歡迎界面,游戲歡迎頁面包含一些五子棋的介紹文字,以及三個按鈕。這時再調(diào)用模塊 4 對預(yù)測后的棋進(jìn)行盤面分析,如果出現(xiàn)了 ‘ 四三 ’ 、 ‘ 雙三 ’ 或 ‘ 雙四 ’ 等制勝點,那么己方就可以獲勝了;否則 , 照同樣的方法向下分析,就可預(yù)測出第二步、第三步 。 大蝦級別算法 如上 的算法也僅僅是考慮了當(dāng)前的最優(yōu)解,要進(jìn)一步提高人工智能,就要用 更高級的搜索法, 需要 對未來的幾步進(jìn)行搜索。例如: 如果 己方 放某一點能成活 3,而 玩家 若 放另一點就是四三了, 己方 就要搶先占了 該點 。 上面說了用兩個數(shù)組分別保存黑子和白子的信息是有必要的,因為可以計算出某一點對黑白雙方的重要程度。每下一步棋,就用一個 151 5 的二重循環(huán)去遍歷棋盤上的每一個點,可以參照如下的方法,即對于每一個點,我們假定這個點放上黑子,這時候就判斷這個黑子放上去后,會形成多少個活 活 活 4 和五,然后把對應(yīng)的數(shù)值填入上面所說的二維數(shù)組里面,然后再假定這個點放白棋,又會形成多少個活 活 活 4 和五,用兩個二維數(shù)組分別存儲黑子和白子的情況。第二個步驟就是,對收集到的信息進(jìn)行分析處理,即要給出一個規(guī)則,用窮舉搜索的辦法遍歷所有收集到的信息,搜索的過程實際上是用所定下的規(guī)則去衡量每一點的權(quán)值,搜索的目的是 為了找到一個權(quán)值最大的點,這個點就是當(dāng)前的最優(yōu)解 [23],也就是應(yīng)該下的子。本次設(shè)計中我定義如下數(shù)據(jù),以便算法進(jìn)行估值。介于本游戲分為菜鳥級別與大蝦級別,所以在棋子下完第一步后的算法就有所不同。 首先 考慮到系統(tǒng)的運行效率,根據(jù)平常下棋的經(jīng)驗,手機下的第一步子不需要經(jīng) 過復(fù)雜的分析計算。當(dāng)然,僅當(dāng)前盤面進(jìn)行判斷是遠(yuǎn)遠(yuǎn)不夠的,這樣下棋很容易掉進(jìn)玩家設(shè)下的陷阱,因為它沒有考慮以后的變化。對數(shù)據(jù)存儲中數(shù)據(jù)的讀寫操作應(yīng)該通過適當(dāng)?shù)?ContentProvider傳遞,而不是直接訪問文件或數(shù)據(jù)庫。 ContentProvider是 Android 的數(shù)據(jù)存儲抽象機制。當(dāng)你想將你的應(yīng)用數(shù)據(jù)與其它的應(yīng)用共享時, Content Provider將會很有用。 以 媒體播放器這個例子來說,我們還可以進(jìn)行暫停、重播等操作。另外,我們還可以通過使用 ()方法,連接到一個 service上(如果這個 service還沒有運行將啟動它)。在這個例子中,媒體播放器這個activity會使用 ()來啟動一個 service,從而可以在后臺保持音樂的播放。在一個媒體播放器的應(yīng)用中,應(yīng)該會有多個 activity,讓使用者可以選擇歌曲并播放歌曲。 18 服務(wù) ( Service) 一個 Service是一段長生命周期的,沒有用戶界面的程序。從一個屏幕導(dǎo)航到另一個屏幕是很簡單的。一個 activity如果要顯示一個人的聯(lián)系方式時,需要聲明一個 IntentFilter,這個 IntentFilter要知道怎么去處理 VIEW動作和表示一個人的 URI。與之有關(guān)系的一個類叫 IntentFilter。典型的動作類型有: MAIN( activity的門戶)、 VIEW、 PICK、 EDIT等。因此, Intent在這里起著一個媒體中介的作用,專門提供組件互相調(diào)用的相關(guān)信息,實現(xiàn)調(diào)用者與被調(diào)用者之間的解耦。 Android則根據(jù)此 Intent的描述,負(fù)責(zé)找到對應(yīng)的組件,將 Intent傳遞給調(diào)用的組件,并完成組件的 調(diào)用。所有應(yīng)用的 Activity都繼承于 ,該類是 Android提供 5 的基層類,其他的 Activity繼承父類后,通過父類的方法來實現(xiàn)各種功能。 簡單理解 , Activity表示一個可視化的用戶界面,關(guān)注用戶從事的事件 [24]。在這兩種情況下,都需要通過方法的參數(shù)傳遞一個 Intent。如果應(yīng)用程序只需 “ 切換 ” 到新的活動,就應(yīng)該使用前一個方法。這些活動通常與 應(yīng)用程序中的屏幕形成一對一關(guān)系。視圖類實現(xiàn)各種 UI元素,比如文本框、標(biāo)簽、按鈕和計算平臺上常見的其他 UI元素。 17 活動( Activity) 活動是最常用的 Android應(yīng)用程序形式。當(dāng)然也不是每個 Android應(yīng)用程序都必須由這四部分組成,可以根據(jù)開發(fā)者的需求進(jìn)行組合。包括數(shù)據(jù)結(jié)構(gòu)定義、 XML文件生成、 XML解析 [21],如下圖 。包括游戲人工智能、游戲繪圖引擎、人機交互控制。包括:游戲邏輯與數(shù)據(jù)持久化。這些操作會被包裝成意圖,然后意圖會根據(jù)對應(yīng)有關(guān)的 activity進(jìn)行處理。 16 4 相關(guān)技術(shù)概念 在游戲的具體實現(xiàn)過程中還會采用 Android的 view框架, activity和 intent組件。 創(chuàng)建虛擬機:點擊 eclipse中 Opens the Android SDK manager?new?輸入新建的虛擬 15 機的 name以及版本 create AVD。模擬手機運行的情況,這樣就算我們沒有 Android手機,照樣可以對 Android程序進(jìn)行運行調(diào)試。然后 eclipse會自動找到相應(yīng)的版本,選中安裝即可。 ADT的安裝和配置 ADT是 google發(fā)布的 eclipse插件,可以大大提高開發(fā) Android應(yīng)用程序的效率, ADT會幫助完成很多開發(fā)過程中的重復(fù)性工作。在 path環(huán)境變量中放入 SDK安裝路徑。這個安裝相當(dāng)緩慢,我安裝時花費了 6 個小時左右。 Android SDK配置步驟如下:到 google網(wǎng)站的 Android developers下載 Android SDK,點擊 SDK 。主要分為兩大部分:一是可執(zhí)行文件,主要命令行中用的命令,例 adb。 Java程序具有與體系結(jié)構(gòu)無關(guān)的特性; Java語言能夠檢查程序在編譯和運行 14 時的錯誤; Java程序是可解釋的,字節(jié)碼不是直接由系統(tǒng)執(zhí)行,而是在解釋器中運行;可以用“一個對外接口,多個內(nèi)在實現(xiàn)方法”表示; Java去除了 C語言的指針內(nèi)容,這樣就不能直接作用于硬件,這對于計算機來說提高了安全性 [19]。并且 Java還提供了 Null指針檢測、數(shù)組邊界檢測、異常出口、 Byte code校驗等功能 [19]。 Java自己操縱內(nèi)存減少了內(nèi)存出錯的可能性。 健壯性 , Java致力于檢查程序在編譯和運行時的錯誤。庫函 數(shù)提供了用 HTTP和 FTP協(xié)議傳送和接受信息的方法。 Java提供的 Object類及其子類的繼承關(guān)系如同一棵倒立的樹形,根類為 Object類, Object類功能強大,經(jīng)常會使用到它及其它派生的子類 [18]。在 Java中,類的繼承關(guān)系是單一的非多重的 。程序員只需把主要精力用在類和接口的設(shè)計和應(yīng)用上。 面向?qū)ο?, Java吸取了 C++面向?qū)ο蟮母拍睿瑢?shù)據(jù)封裝于類中,利用類的優(yōu)點,實現(xiàn)了程序的簡 潔性和便于維護(hù)性。 Java舍棄了C++的指針對存儲
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1