欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 8149|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

安卓五子棋游戲開(kāi)發(fā)代碼工程+圖文+設(shè)計(jì)文檔資料下載

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
五子棋安卓開(kāi)發(fā)文檔及開(kāi)發(fā)工程見(jiàn)附件

[摘 要] 被業(yè)內(nèi)人士稱(chēng)為繼短信之后的又一座“金礦”。4G的普及,手機(jī)顯示性能的提高、手機(jī)屏幕的擴(kuò)大和較高的分辨率,解決了傳統(tǒng)手機(jī)行業(yè)的很多弊端,手機(jī)休閑娛樂(lè)應(yīng)用將成為PC休閑娛樂(lè)之后又一重要業(yè)務(wù)增長(zhǎng)點(diǎn)、同時(shí)Android采用了全面觸摸屏,可以完成更多復(fù)雜的操作。Android雖然基于Java,但是其虛擬機(jī)是基于寄存器的,速度得到很大的提升,這為Android平臺(tái)上開(kāi)發(fā)游戲提供了堅(jiān)強(qiáng)的后盾。


本文主要闡述以面向?qū)ο蟮某绦蜷_(kāi)發(fā)語(yǔ)言eclipse為開(kāi)發(fā)工具, 基于智能手機(jī)Android之上設(shè)計(jì)一個(gè)五子棋游戲。五子棋起源于中國(guó)古代的傳統(tǒng)黑白棋種之一,它不僅能增強(qiáng)思維能力 提高智力,而且富含哲理,有助于修身養(yǎng)性。本系統(tǒng)是本系統(tǒng)中設(shè)定了人機(jī)對(duì)戰(zhàn)和人人對(duì)戰(zhàn)兩種模式。人機(jī)對(duì)戰(zhàn)實(shí)現(xiàn)的是一些簡(jiǎn)單的算法,人人對(duì)戰(zhàn)只是進(jìn)行了輸贏方的判定。它與javame的五子棋設(shè)計(jì)有許多的不一樣,Android本來(lái)就是全觸摸的形式,而且操作非常簡(jiǎn)單。



目錄

引言              2

第一章 應(yīng)用背景與功能需求              3

1.1 應(yīng)用背景              3

1.2設(shè)計(jì)意義              3

1.3應(yīng)用需求分析              3

1.3.1 應(yīng)用的實(shí)用性              3

1.3.2 應(yīng)用需求              3

第二章 設(shè)計(jì)思路              4

第三章 布局設(shè)計(jì)              4

3.1 初始界面布局              4

3.2畫(huà)盤(pán)線              6

3.3按照棋盤(pán)模式構(gòu)建棋盤(pán)大小              7

3.4判斷該位置是否可下子              7

3.5交換棋手下棋              7

第四章 文件讀寫(xiě)類(lèi)的設(shè)計(jì)與實(shí)現(xiàn)              8

4.1獲勝機(jī)制              8

4.1.1 遍歷所有的五連子可能情況的權(quán)值。              8

4.1.2 初始化黑子白子上的每個(gè)權(quán)值上的連子數(shù)              9

4.1.3 檢查是否有人五連珠              10

4.1.4顯示結(jié)束信息              10

4.2人機(jī)對(duì)戰(zhàn)              11

4.3 輸贏判斷              11

第五章 其他相關(guān)工作              15

5.1 游戲主界面              15

5.2 游戲開(kāi)始界面              15

第六章 系統(tǒng)測(cè)試與部署              16

6.1 硬件環(huán)境              16

6.2 軟件環(huán)境              16

6.3測(cè)試用例              16

第七章 總結(jié)              17

參考文獻(xiàn)              17


引言

隨著社會(huì)的發(fā)展,目前全國(guó)的手機(jī)用戶數(shù)量已經(jīng)遠(yuǎn)超過(guò)了PC機(jī)的數(shù)量,而且手機(jī)的功能正在快速更新,其中智能手機(jī)所占的比例越來(lái)越大,特別是隨著5G技術(shù)發(fā)展時(shí)代的到來(lái),移動(dòng)互聯(lián)網(wǎng)已是一個(gè)巨大的市場(chǎng),許多國(guó)際大公司以及國(guó)內(nèi)的大公司斗在搶占智能手機(jī)領(lǐng)域的市場(chǎng)份額。這期間,出現(xiàn)的智能手機(jī)可謂五花八門(mén),種類(lèi)繁多。

當(dāng)互聯(lián)網(wǎng)巨頭Google宣布依靠android系統(tǒng)進(jìn)軍手機(jī)操作系統(tǒng)領(lǐng)域之后,三年來(lái)Android一路高歌,快速的獲得眾多用戶和廠商的認(rèn)同。隨著Android手機(jī)終端的熱銷(xiāo),Android也引起眾多手機(jī)應(yīng)用程序開(kāi)發(fā)商的關(guān)注,Android的出現(xiàn),帶給了智能手機(jī)領(lǐng)域更多的機(jī)遇和挑戰(zhàn),由于Android基于Linux內(nèi)核且具有開(kāi)源、免費(fèi)的特性,他迅速得到廣大愛(ài)好者以及許多廠商的支持,基于Android所開(kāi)發(fā)的手機(jī)游戲擁有巨大潛力已成為行業(yè)共識(shí)。

中華民族是一個(gè)有著幾千年悠久歷史和璀璨文化的國(guó)家,而棋類(lèi)娛樂(lè)卻早已突破了純游戲的范疇而成為中華傳統(tǒng)文化的一個(gè)分支。五子棋的棋文化源遠(yuǎn)流長(zhǎng),具有東方的神秘和西方的直觀,是中西文化的交流點(diǎn),是古今哲理的結(jié)晶。

現(xiàn)在人們壓力日益增大,需要?jiǎng)谝萁Y(jié)合才能獲得更高的工作效率,工作之余的娛樂(lè)對(duì)每一個(gè)人來(lái)說(shuō)都是必不可少的。五子棋這種娛樂(lè)方式簡(jiǎn)單易學(xué)又具有深?yuàn)W的技巧,非常富有趣味性和消遣性。在經(jīng)過(guò)不斷發(fā)展后五子棋已經(jīng)成為棋盤(pán)娛樂(lè)的一個(gè)重要組成部分,他能夠增強(qiáng)思維能力、開(kāi)發(fā)智力,是人們休閑娛樂(lè)的不錯(cuò)選擇


第一章 應(yīng)用背景與功能需求
1.1 應(yīng)用背景

在我們的生活中有許多的游戲,但是游戲不同她也會(huì)給玩家?guī)?lái)不同的感受和生活理念。游戲是我們?nèi)粘I畹囊粋(gè)必不可少的娛樂(lè)項(xiàng)目,也帶動(dòng)了游戲相關(guān)產(chǎn)業(yè)市場(chǎng)的發(fā)展。游戲平臺(tái)是經(jīng)過(guò)從游戲機(jī)到電視游戲,然后從PC游戲,到手機(jī)游戲,中間經(jīng)歷了很多的技術(shù)的更新和變革。但隨著新技術(shù)的發(fā)簪和我們生活水平質(zhì)量的提高,手機(jī)開(kāi)始普及,因?yàn)槭謾C(jī)是非常小巧便捷的,而且方便的特性成為我們?nèi)粘I钪斜貍渫ㄓ嵐ぞ。而基于手機(jī)平臺(tái)的游戲也就擁有的市場(chǎng)空間是巨大的的,也因隨著4G的開(kāi)通和應(yīng)用,手機(jī)游戲必然會(huì)迎來(lái)新的一輪游戲熱潮。

1.2設(shè)計(jì)意義

本次設(shè)計(jì)是基于Android平臺(tái)開(kāi)發(fā)的一個(gè)小型五子棋游戲程序。五子棋游戲的簡(jiǎn)單易學(xué),老少皆宜這些特性與智能手機(jī)的移動(dòng)方便,大范圍普及等特點(diǎn)結(jié)合起來(lái),必定會(huì)大放光芒,廣受歡迎

1.3應(yīng)用需求分析
1.3.1 應(yīng)用的實(shí)用性

現(xiàn)在人們壓力日益增大,需要?jiǎng)谝萁Y(jié)合才能獲得更高的工作效率,工作之余的娛樂(lè)對(duì)每一個(gè)人來(lái)說(shuō)都是必不可少的。五子棋這種娛樂(lè)方式簡(jiǎn)單易學(xué)又具有深?yuàn)W的技巧,非常富有趣味性和消遣性。在經(jīng)過(guò)不斷發(fā)展后五子棋已經(jīng)成為棋盤(pán)娛樂(lè)的一個(gè)重要組成部分,他能夠增強(qiáng)思維能力、開(kāi)發(fā)智力,是人們休閑娛樂(lè)的不錯(cuò)選擇。

1.3.2 應(yīng)用需求

游戲說(shuō)明:游戲開(kāi)始時(shí),由黑子開(kāi)局,將一枚棋子落在棋盤(pán)一坐標(biāo)上,然后由白棋落子,如此輪流下子,直到某一方首先在棋盤(pán)的豎、橫或斜三方向上的五子連成線,則該方該局獲勝。功能列表如下:

(1)輸出棋盤(pán);

(2)提示用戶下子;

(3)查看用戶是否出界;

(4)系統(tǒng)自動(dòng)下子;

(5)判斷游戲是否輸贏;

(6)判斷是否進(jìn)入下一局;

(7)退出游戲。


第二章 設(shè)計(jì)思路

在軟件設(shè)計(jì)分析的基礎(chǔ)上,為了方便玩家的使用,界面設(shè)計(jì)的簡(jiǎn)潔明了,布局合理。應(yīng)用設(shè)計(jì)內(nèi)容主要為五子棋人機(jī)對(duì)戰(zhàn),由人與計(jì)算機(jī)進(jìn)行相互下子,進(jìn)行合理的布局以及算法使計(jì)算機(jī)可以自動(dòng)判斷勝利條件,并于玩家進(jìn)行博弈。使玩家在閑暇時(shí)可以得到適當(dāng)?shù)姆潘伞?/p>

本應(yīng)用的設(shè)計(jì)目標(biāo)是建立于一個(gè)基于Android手機(jī)游戲軟件,基本可以滿足人們?cè)陂e暇時(shí)間的娛樂(lè)以及放松。

打開(kāi)游戲,進(jìn)入初始主界面可選擇開(kāi)始或退出,若點(diǎn)擊開(kāi)始,進(jìn)行判斷電腦還是玩家先下子,判斷后進(jìn)行下子,一方下完進(jìn)行判斷輸贏,若有一方勝利則結(jié)束游戲,若沒(méi)有人獲勝,則返回下棋階段,流程圖如圖2-1所示:

圖2-1 流程圖

第三章 布局設(shè)計(jì)
3.1 初始界面布局

采用線性布局作為初始化界面,插入背景圖片,按照上中下布局分布,插入游戲名稱(chēng),新游戲等文本框,編輯按鈕文本,實(shí)現(xiàn)代碼如下:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:background="@drawable/timg"

    android:orientation="vertical"

    android:padding="30dip" >


    <LinearLayout

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:layout_weight="0.17"

        android:gravity="center"

        android:orientation="vertical" >


        <TextView

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:text="@string/main_title"

            android:textColor="@color/text_title"

            android:textSize="64sp" />

    </LinearLayout>


    <Button

        android:id="@+id/btn_newgame"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:text="@string/btn_newgame" />


    <Button

        android:id="@+id/btn_exit"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:layout_weight="0.00"

        android:text="@string/btn_exit" />


</LinearLayout>


3.2畫(huà)盤(pán)線

本模塊是整個(gè)游戲系統(tǒng)的平臺(tái)性模塊,之后所有的功能都將依附該模塊來(lái)體現(xiàn),主要需要實(shí)現(xiàn)棋盤(pán)的繪制,本游戲系統(tǒng)選擇的是15*15的棋盤(pán),與左邊和上邊的距離: 3推算其他線條計(jì)算方法。使用程序?qū)崿F(xiàn)以上計(jì)算方法,創(chuàng)建出15根橫線與整線,存進(jìn)集合中。實(shí)現(xiàn)代碼如下:

for (int i=0; i <= maxX; i++) {//豎線

lines. add (new Line (xoffset+i*POINT_ SIZE, yoffset,xOffset+i*POINT SIZE, yoffset tmaxY*POINT SIZE));

for (int i=0; i <= maxY; i+) {//橫線

lines. add (new Line (x0ffset, yoffset+i*POINT SIZE,(maxX+1)*P0INT SIZE, yoffset+i*POINT SIZED);

//在ondraw方法畫(huà)出所有棋盤(pán)線

for (Line line : lines){

canvas. drawLine(line. xStart, line. yStart, line. xStop, line. yStop,paint):

盤(pán)線圖如圖3-1所示:

              

圖3-1 盤(pán)線圖

3.3按照棋盤(pán)模式構(gòu)建棋盤(pán)大小

通過(guò)輸入相對(duì)棋盤(pán)的X和Y設(shè)置rect的值 使之變?yōu)樵揦和Y代表的屏幕區(qū)域值

private void getRect(int x, int y, Rect rect) {

                            rect.set((int) (x * gridSize + getTopX()),

                                                        (int) (y * gridSize + getTopY()), (int) (x * gridSize

                                                                                    + gridSize + getTopX()),

                                                        (int) (y * gridSize + gridSize + getTopY()));

3.4判斷該位置是否可下子

              計(jì)算棋盤(pán)上某一方格上八個(gè)方向棋子的最大值,這八個(gè)方向分別是:左、右、上、下、左上、左下、右上、右下,如果可下子,則下子,如果超出棋盤(pán)范圍或該點(diǎn)已有棋子則不能下子。

              public boolean chessExist(int i,int j){

                 if(this.arrMapShow[ i][j]==1 || this.arrMapShow[ i][j]==2)

                  return true;

                 return false;

              }


判斷該坐標(biāo)位置是否可下棋子。

              public void readyplay(int x,int y){

                 if(badxy(x,y))

                  return;

                 if (chessExist(x,y))

                  return;

                 this.arrMapShow[x][y]=3;

              }

3.5交換棋手下棋

設(shè)置交換棋手的標(biāo)識(shí)符

              public void setisOdd(boolean isodd){

                 if(isodd)

                  this.isOdd=true;

                 else

                  this.isOdd=false;

              }


獲取是否交換棋手的標(biāo)識(shí)符。

              public boolean getisOdd(){

                 return this.isOdd;

              }


第四章 文件讀寫(xiě)類(lèi)的設(shè)計(jì)與實(shí)現(xiàn)
4.1獲勝機(jī)制
4.1.1 遍歷所有的五連子可能情況的權(quán)值。

從橫向、豎向、右斜、左斜,四個(gè)方向判斷獲勝機(jī)制,如果四個(gè)方向其中一個(gè)方向有五子連珠的情況,則獲勝,如果沒(méi)有則繼續(xù)下子。i從0到14,循環(huán)15次,j從0到10循環(huán)11次,k從0到4循環(huán)5次,判斷橫縱坐標(biāo)的位置以及連珠數(shù)量。

(1)

        for(int i=0;i<15;i++)

            for(int j=0;j<11;j++){

                for(int k=0;k<5;k++){

                    this.table[1][j+k][ i][icount] = true;

                    this.table[0][j+k][ i][icount] = true;

                }

                icount++;

            }

(2)

        for(int i=0;i<15;i++)

            for(int j=0;j<11;j++){

                for(int k=0;k<5;k++){

                    this.table[1][ i][j+k][icount] = true;

                    this.table[0][ i][j+k][icount] = true;

                }

                icount++;

            }

(3)右斜

        for(int i=0;i<11;i++)

            for(int j=0;j<11;j++){

                for(int k=0;k<5;k++){

                    this.table[1][j+k][i+k][icount] = true;

                    this.table[0][j+k][i+k][icount] = true;

                }

                icount++;

            }

(4)左斜

        for(int i=0;i<11;i++)

            for(int j=14;j>=4;j--){

                for(int k=0;k<5;k++){

                    this.table[1][j-k][i+k][icount] = true;

                    this.table[0][j-k][i+k][icount] = true;

                }

                icount++;


4.1.2 初始化黑子白子上的每個(gè)權(quán)值上的連子數(shù)

判斷有無(wú)一方勝利,若沒(méi)有則初始化棋盤(pán),重新下棋子。

        for(int i=0;i<=1;i++)  

            for(int j=0;j<572;j++)

                this.combo[ i][j] = 0;


        if(!IndexActivity.playerFirst){

                      isUsersTurn = false;

                                          Coordinate c = ai.comTurn(null);

                                          setPieceIfValid(c.x,c.y,1);

        }

        IndexActivity.playerFirst = !IndexActivity.playerFirst;

              }


              public int[][] getGridBoard(){

                            return gridBoard;

              }

              public void setPieceIfValid(int selectX, int selectY,int id) {

                            if(gridBoard[selectX][selectY] != 0 || haveWinner()){

                                          return;

                            }

                            if(isUsersTurn && id==2){

                                          setPiece(selectX,selectY,id);

                                          nextTurn();

                            }else if(!isUsersTurn && id==1){

                                          setPiece(selectX,selectY,id);

                                          nextTurn();

                            }

              }


4.1.3 檢查是否有人五連珠

              通過(guò)語(yǔ)句從572種五連珠可能性中,檢查該連珠情況是否符合其中一種,如果有則獲勝,如果沒(méi)有,則交換對(duì)手下棋。

private boolean haveWinner(){

                            for(int i=0;i<2;i++){

                                          for(int j=0;j<572;j++){

                                                        if(combo[ i][j] == 5){

                                                                      showWinner(i);

                                                                      return true;


4.1.4顯示結(jié)束信息

如電腦先連成五連珠,則輸出玩家失敗,如玩家先連成五連珠,則輸出玩家獲勝。


  1. <font style="font-size: 12pt">              private void showWinner(int id){
  2.                             Builder builder = new AlertDialog.Builder(this);
  3.                             String title = "";
  4.                             String msg = "";
  5.                             switch(id){
  6.                             case 0://電腦贏了,玩家輸了
  7.                                           title = this.getResources().getString(R.string.title_lose);
  8.                                           msg = this.getResources().getString(R.string.text_lose);
  9.                                           break;
  10.                             case 1://玩家贏了
  11.                                           title = this.getResources().getString(R.string.title_victor);
  12.                                           msg = this.getResources().getString(R.string.text_victor);
  13.                                           break;
  14.                             }
  15.                             builder.setTitle(title);
  16.                             builder.setMessage(msg);
  17.                             builder.setPositiveButton("back",               new DialogInterface.OnClickListener() {

  18.                                          
  19.                                           @Override
  20.                                           public void onClick(DialogInterface dialog, int which) {
  21.                                                         BackgammonActivity.this.finish();//退出此窗口                          

  22.                                           }</font>
復(fù)制代碼


4.2人機(jī)對(duì)戰(zhàn)

輪到電腦下棋時(shí),電腦先取出一個(gè)空白棋位(一個(gè)Point對(duì)象),以此棋位為起點(diǎn)計(jì)算四個(gè)方向能形成多少部連續(xù)的棋子,此為第一次計(jì)算。

FirstAnalysisResult{

Point point;   //棋位

int count;  //連續(xù)數(shù)

int aliceState;  //狀態(tài)

int direction;  //方向

因?yàn)榈谝淮斡?jì)算的結(jié)果對(duì)一個(gè)棋位都會(huì)形成四個(gè)結(jié)果(每個(gè)方向一個(gè)結(jié)果),這一步將這些結(jié)果匯總到一個(gè)類(lèi)對(duì)象中。

SecondAnalysisResult implements Comparable<SecondAnalysisResult>{

Point point;  //棋位

int alive4 = 0;  //活4

int alive3 = 0;  //活3數(shù)量

int halfAlive4 = 0;  //半活4,一頭封

int halfAlive3 = 0;  //半活3,一頭封

Int alive2 = 0;  //活2數(shù)量

對(duì)第二次計(jì)算結(jié)果進(jìn)行排序,將結(jié)果分成三個(gè)等級(jí),每個(gè)等級(jí)有一個(gè)集合裝載,有子類(lèi)在排序結(jié)果挑選想要下的棋子。為了性能在第一次計(jì)算前,必須確定一個(gè)較小的計(jì)算范圍,不能全部都算。另外,在每次找到必殺棋時(shí),直接返回,不在計(jì)算。

4.3 輸贏判斷

從左、右、上、下、左上、右上、右下、左下,八個(gè)方向判斷是否有五子連珠的情況。i從1到5循環(huán)5次,判斷是否有連珠情況。

(1)判斷右邊是否有五子連珠的情況,如果有,則獲勝。

                 for(int i=1;i<6;i++){

                  x_temp1+=1;

                  if(x_temp1>this.width)

                   break;

                  if(this.arrMapShow[x_temp1][y_temp1]==arrvalue)

                   num++;

                  else

                   break;

                 }

(2)判斷左邊是否有五子連珠的情況,如果有,則獲勝。

                 x_temp1=x_temp;

                 for(int i=1;i<6;i++){

                  x_temp1-=1;

                  if(x_temp1<0)

                   break;

                  if(this.arrMapShow[x_temp1][y_temp1]==arrvalue)

                   num++;

                  else

                   break;

                 }

                 if(num==5)

                  return true;

(3)判斷上方是否有五子連珠的情況,如果有,則獲勝。

                 x_temp1=x_temp;

                 y_temp1=y_temp;

                 num=1;

                 for(int i=1;i<6;i++){

                  y_temp1-=1;

                  if(y_temp1<0)

                   break;

                  if(this.arrMapShow[x_temp1][y_temp1]==arrvalue)

                   num++;

                  else

                   break;

                 }

(4)判斷下方是否有五子連珠的情況,如果有,則獲勝。

                 y_temp1=y_temp;

                 for(int i=1;i<6;i++){

                  y_temp1+=1;

                  if(y_temp1>this.height)

                   break;

                  if(this.arrMapShow[x_temp1][y_temp1]==arrvalue)

                   num++;

                  else

                   break;

                 }

                 if(num==5)

                  return true;


(5)判斷左上是否有五子連珠的情況,如果有,則獲勝。

                 x_temp1=x_temp;

                 y_temp1=y_temp;

                 num=1;

                 for(int i=1;i<6;i++){

                  x_temp1-=1;

                  y_temp1-=1;

                  if(y_temp1<0 || x_temp1<0)

                   break;

                  if(this.arrMapShow[x_temp1][y_temp1]==arrvalue)

                   num++;

                  else

                   break;


(6)判斷右下是否有五子連珠的情況,如果有,則獲勝。

                 x_temp1=x_temp;

                 y_temp1=y_temp;

                 for(int i=1;i<6;i++){

                 x_temp1+=1;

                 y_temp1+=1;

                 if(y_temp1>this.height || x_temp1>this.width)

                  break;

                  if(this.arrMapShow[x_temp1][y_temp1]==arrvalue)

                   num++;

                  else

                   break;

                 }

                 if(num==5)

                  return true;


(7)判斷右上是否有五子連珠的情況,如果有,則獲勝。

                 x_temp1=x_temp;

                 y_temp1=y_temp;

                 num=1;

                 for(int i=1;i<6;i++){

                  x_temp1+=1;

                  y_temp1-=1;

                  if(y_temp1<0 || x_temp1>this.width)

                   break;

                  if(this.arrMapShow[x_temp1][y_temp1]==arrvalue)

                   num++;

                  else

                   break;

                 }

(8)判斷左下是否有五子連珠的情況,如果有,則獲勝。

                 x_temp1=x_temp;

                 y_temp1=y_temp;

                 for(int i=1;i<6;i++){

                  x_temp1-=1;

                  y_temp1+=1;

                  if(y_temp1>this.height || x_temp1<0)

                   break;

                  if(this.arrMapShow[x_temp1][y_temp1]==arrvalue)

                   num++;

                  else

                   break;

                 }

                 if(num==5)

                  return true;

                 return false;


第五章 其他相關(guān)工作
5.1 游戲主界面

游戲主界面如圖5-1所示。

                                          
圖5-1 游戲主界面圖                                                                                       5-2 開(kāi)局界面
5.2 游戲開(kāi)始界面

五子棋的開(kāi)局界面如圖5-2所示:

第六章 系統(tǒng)測(cè)試與部署

6.1 硬件環(huán)境

電腦、Android手機(jī)、數(shù)據(jù)線

6.2 軟件環(huán)境

Windows操作系統(tǒng)、Android手機(jī)系統(tǒng)、Eclepse

6.3測(cè)試用例

系統(tǒng)測(cè)試,即對(duì)軟件進(jìn)行全面統(tǒng)一的測(cè)試,包括對(duì)性能、娛樂(lè)性以及對(duì)運(yùn)行環(huán)境的調(diào)試。

測(cè)試游戲進(jìn)行界面(玩家為黑棋),如圖6-1所示:

圖6-1 游戲進(jìn)行界面

測(cè)試輸贏界面,如圖6-2 勝利界面,圖6-3失敗界面:

                              

圖6-2 勝利界面                                                                                                                圖6-3 失敗界面                                         


第七章 總結(jié)

本文實(shí)現(xiàn)了五子棋游戲中的人機(jī)對(duì)戰(zhàn)模式。在這次的實(shí)驗(yàn)中我遇到了很多困難,在克服這些困難的過(guò)程中學(xué)到了很多的知識(shí),讓我對(duì)Android有了更深層次的了解。

五子棋游戲邏輯十分簡(jiǎn)單,可以明顯的分為四個(gè)部分:白棋下、判斷白棋是否獲勝、黑棋下、判斷黑棋是否獲勝;在判斷獲勝的兩個(gè)部分可以使用相同的方法,所以總結(jié)起來(lái)我們只需完成白棋下、黑棋下、判斷獲勝三個(gè)部分。所以我在選擇實(shí)現(xiàn)順序的時(shí)候選擇實(shí)現(xiàn)人機(jī)對(duì)戰(zhàn)的模式來(lái)進(jìn)行設(shè)計(jì)。

我個(gè)人認(rèn)為人機(jī)對(duì)戰(zhàn)的實(shí)現(xiàn)相對(duì)于人人對(duì)戰(zhàn)模式更加復(fù)雜,人機(jī)對(duì)戰(zhàn)模式的實(shí)現(xiàn)相對(duì)于人人模式增加了游戲AI,而且僅僅是增加了游戲AI,所以在這個(gè)實(shí)現(xiàn)中對(duì)游戲AI的實(shí)現(xiàn)成為了重點(diǎn)。通過(guò)在網(wǎng)上的查找和總結(jié),知道最通用的實(shí)現(xiàn)五子棋游戲AI的算法就是:根據(jù)五子棋游戲規(guī)則指定在不同情況下每個(gè)位置的權(quán)值,然后在開(kāi)始下棋時(shí)在地圖上計(jì)算權(quán)值最大的位置即可。經(jīng)過(guò)對(duì)五子棋游戲的簡(jiǎn)單研究,之后又在網(wǎng)上查找了相關(guān)算法的實(shí)現(xiàn)資料,自己實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的五子棋算法。雖然不能有很高的AI不過(guò)已經(jīng)可以達(dá)到初級(jí)玩家的水平。




完整的Word格式文檔51黑下載地址:
五子棋.docx (560.85 KB, 下載次數(shù): 47)

源碼:
FiveChess.7z (1.14 MB, 下載次數(shù): 67)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:562585 發(fā)表于 2019-6-14 15:33 | 只看該作者
請(qǐng)問(wèn)能私發(fā)一份嗎?
回復(fù)

使用道具 舉報(bào)

板凳
ID:575346 發(fā)表于 2019-7-1 09:49 | 只看該作者
請(qǐng)問(wèn)能使用 android studio來(lái)實(shí)現(xiàn)嗎
回復(fù)

使用道具 舉報(bào)

地板
ID:563554 發(fā)表于 2019-9-30 21:19 | 只看該作者
非常好的資料,支持一下
回復(fù)

使用道具 舉報(bào)

5#
ID:656468 發(fā)表于 2019-12-5 09:22 | 只看該作者

RE: 安卓五子棋游戲開(kāi)發(fā)代碼工程+圖文+設(shè)計(jì)文檔資料下載

可以下載的嗎??
回復(fù)

使用道具 舉報(bào)

6#
ID:716484 發(fā)表于 2020-3-26 20:39 | 只看該作者
可以用嗎?
回復(fù)

使用道具 舉報(bào)

7#
無(wú)效樓層,該帖已經(jīng)被刪除
8#
ID:1046464 發(fā)表于 2022-10-2 11:06 | 只看該作者
希望能參考一下
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表