• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于Android的五子棋游戲設(shè)計(jì)

    2020-04-21 07:40:59黃建段志舉陳杉杉周紹景溫志雄
    關(guān)鍵詞:五子棋

    黃建 段志舉 陳杉杉 周紹景 溫志雄

    摘要:本文主要闡述以面向?qū)ο蟮某绦蜷_發(fā)語言,Android Studio為開發(fā)工具, 基于Android平臺(tái)設(shè)計(jì)開發(fā)一個(gè)五子棋游戲。本程序中設(shè)定了黑白兩方的對(duì)戰(zhàn)模式,并進(jìn)行輸贏方的判定。

    關(guān)鍵詞:五子棋;Android;游戲開發(fā)

    中圖分類號(hào):TP317 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2020)01-0161-02

    0 引言

    五子棋是一種兩人對(duì)弈的純策略型棋類游戲,起源于中國古代,它容易上手,老少皆宜,是全國智力運(yùn)動(dòng)會(huì)競技項(xiàng)目之一。隨著近幾年來使用Android手機(jī)的用戶不斷增加,Android平臺(tái)游戲憑借其可玩性高、上手容易、游戲穩(wěn)定、交流方便和擴(kuò)展性高等特點(diǎn)受到更多人的喜歡[1]。本文將基于Android平臺(tái)設(shè)計(jì)一個(gè)五子棋游戲,實(shí)現(xiàn)黑棋玩家與白棋玩家對(duì)弈并判定輸贏。

    1 應(yīng)用設(shè)計(jì)分析

    1.1 應(yīng)用功能分析

    游戲開始時(shí),由黑子開局,將一枚棋子落在棋盤一坐標(biāo)上,然后由白棋落子,如此輪流下子,直到某一方首先在棋盤的豎、橫或斜三方向上的五子連成線,則該方該局獲勝。功能劃分如圖1所示,(1)開始;(2)黑棋或白棋落子;(3)勝負(fù)判斷;(4)重玩;(5)任意一方悔棋;(6)退出游戲。

    1.2 應(yīng)用邏輯分析

    五子棋游戲邏輯分為四個(gè)部分:黑棋下、判斷黑棋是否獲勝、白棋下、判斷白棋是否獲勝;在判斷獲勝的黑白子方法相同,所以只需完成黑棋下、白棋下、判斷獲勝三個(gè)部分。

    1.3 方法設(shè)計(jì)

    onTouch()負(fù)責(zé)監(jiān)聽觸摸屏幕事件調(diào)用悔棋、重玩等功能,判斷玩家觸摸棋盤是否符合五子棋規(guī)則,goBack()實(shí)現(xiàn)悔棋功能,rePlay()清空所有棋子數(shù)據(jù)實(shí)現(xiàn)重玩游戲功能,checkWinner()判斷勝負(fù)。

    2 應(yīng)用關(guān)鍵功能實(shí)現(xiàn)

    2.1 應(yīng)用界面繪制

    五子棋界面的開發(fā)主要在Activity中使用自定義View完成。在自定義View中基于Canvas重寫onDraw()呈現(xiàn)圖像、文字、線條等二維圖形和坐標(biāo)。

    2.1.1 棋盤繪制

    在ChessFiveView類中,定義繪制線條的起始點(diǎn)x0、y0,間距D,最大行數(shù)maxRows如圖2所示,最大列數(shù)maxColx如圖3所示,復(fù)寫父類的onDraw方法,設(shè)置畫筆顏色為黑色,使用for循環(huán)調(diào)用drawLine方法即可繪制出垂直交叉的棋盤線如圖4所示。

    2.1.2 棋子繪制

    重寫onTouch方法監(jiān)聽玩家觸摸事件,通過event即可獲取玩家手指觸摸棋盤的x、y值。根據(jù)棋盤線條的繪制規(guī)則進(jìn)行運(yùn)算,用對(duì)應(yīng)的棋子占據(jù)該位置。使用三目運(yùn)算符更換下一個(gè)棋子類型,調(diào)用postInvalidate()方法重新繪制界面,將棋子繪制在棋盤上。當(dāng)使用postInvalidate()方法后,在onDraw()方法中根據(jù)二維數(shù)組行列號(hào)繪制棋子,如圖5所示。

    2.2 應(yīng)用功能實(shí)現(xiàn)

    2.2.1 悔棋功能

    在goBack()方法中從已下子對(duì)象數(shù)組中取出最后的一個(gè)元素lstStep.get(n-1),獲得lstStep中當(dāng)前行和列的信息,將對(duì)應(yīng)位置的二維數(shù)組清零chess[row][col]=0,使用postInvalidate方法重新畫圖,把最后一個(gè)元素移除lstStep.remove(n-1)。

    2.2.2 重玩功能

    在rePlay()方法中用for循環(huán)將chess[row][col]數(shù)組數(shù)值清零,重置棋子類型和勝負(fù),并重新畫圖。

    2.3 五子棋勝負(fù)判斷

    checkWinner()中給定一個(gè)點(diǎn)、一個(gè)方向、一個(gè)相對(duì)坐標(biāo)值,就能得到一個(gè)二維坐標(biāo)。將坐標(biāo)代入當(dāng)前棋盤數(shù)組chess中,保存對(duì)應(yīng)位置每個(gè)棋子的類型。在游戲中,每當(dāng)玩家下一步棋后獲取該棋子,判斷其橫、豎、正斜、反斜4個(gè)方向是否符合贏的條件[2]。若某一方向同類型棋子大于等于5,則獲取當(dāng)前棋子類型進(jìn)行勝負(fù)判斷,游戲結(jié)束。

    參考文獻(xiàn)

    [1] 衛(wèi)少林,衛(wèi)文學(xué).基于JavaScript的人機(jī)五子棋游戲的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代計(jì)算機(jī)(專業(yè)版),2016(25):58-62.

    [2] 彭健,陳蘭蘭.基于Java語言開發(fā)五子棋游戲項(xiàng)目的教學(xué)設(shè)計(jì)與實(shí)踐[J].江蘇科技信息,2016(33):47-48.

    猜你喜歡
    五子棋
    Sim Sim
    學(xué)下五子棋
    90后羅運(yùn)生:五子棋是我生命的一部分
    金色年華(2016年8期)2016-02-28 01:40:31
    財(cái)政部長吳波的“五子棋局”
    基于PSP技術(shù)的五子棋網(wǎng)絡(luò)系統(tǒng)的開發(fā)研究
    河南科技(2014年7期)2014-02-27 14:11:02
    夏日五子棋
    浮山县| 宜春市| 东丰县| 确山县| 临江市| 崇文区| 通道| 平罗县| 大渡口区| 若尔盖县| 如东县| 浙江省| 青冈县| 柳州市| 平谷区| 萍乡市| 永丰县| 土默特右旗| 石狮市| 辽阳市| 砀山县| 安龙县| 阜平县| 呈贡县| 昌黎县| 琼中| 宁津县| 常山县| 彰化县| 清流县| 曲水县| 营口市| 游戏| 黑龙江省| 太原市| 临西县| 虹口区| 鄢陵县| 靖边县| 万年县| 桦南县|