五子棋游戲五子連珠算法實(shí)現(xiàn)
1.游戲規(guī)則
五子棋是兩個(gè)人之間進(jìn)行的競(jìng)技活動(dòng),黑方白方規(guī)則規(guī)則相同,黑棋必須先行, 五連子的方向?yàn)闄M、豎、斜,如黑白色任一方先五子連一線則算勝出。
2. 五子連珠算法
在 9 X 9 (這里舉例子實(shí)際棋盤可以任意大小) 的游戲棋盤中 我們可以把它想象成一個(gè)二維數(shù)組,黑方下棋子后填充當(dāng)前點(diǎn)的數(shù)組的值1,白方下棋子后填充當(dāng)點(diǎn)的數(shù)組的值2,沒(méi)有下棋子的點(diǎn)在數(shù)組中值為0, 黑白雙方每走一步 則實(shí)際上在給這個(gè)二維數(shù)組賦值。 所以我們根據(jù)這個(gè)二維數(shù)組的值就可以計(jì)算出五子連珠,也可以繪制出棋盤上的黑白棋子。
玩家點(diǎn)擊屏幕后拿到一個(gè)屏幕的 x y 坐標(biāo) 然后除以棋盤每一格的寬高 就可以得到在二維數(shù)組中的索引根據(jù)X Y 這 兩個(gè)索引就可以知道棋子下在了這個(gè)二維數(shù)組中的那里。
現(xiàn)在筆者帶大家分析一下五子連珠的算法, 首先要想五顆棋子連成一線必定有8種可能 接下來(lái)我們分析一下有那八中可能.
第一種:如圖所示 X軸橫向 其中橫向四顆棋子已經(jīng)連成一線 左右兩邊任意下一顆棋子便五子連珠。可以用一個(gè)for循環(huán)遍歷當(dāng)前X點(diǎn)索引 , 起始點(diǎn)為 X -4 結(jié)束點(diǎn)為X + 4 一共便利 9 次 如果其中5顆棋子連續(xù)則五子連珠 否則只要有一個(gè)沒(méi)連上 直接break;
第二種:如圖所示 X軸橫向 其中左右兩邊若干棋子但是都未滿足五子連珠 但是如果將中間連上后遍滿足
所以在寫算法的時(shí)候必需以當(dāng)前棋子索引 前后都要便利5遍 才能確定當(dāng)前棋子后是否可以五子連珠。算法同上
第三種:如圖所示 Y軸縱向 遍歷的時(shí)候須要從 Y - 4 到 Y + 4
第四種:如圖所示 Y軸縱向 同理X軸
第五種:如圖所示 遍歷的時(shí)候須要從(X -4) (Y- 4) 到 (X +4) (Y+4)
第六種:如圖所示算法同上
第七種:如圖所示 遍歷的時(shí)候須要從(X + 4) (Y+ 4) 到 (X- 4) (Y + 4)
第八種:如圖所示算法同上
這樣五子連珠的算法就介紹完了 下面附上我的源碼下載地址目前我沒(méi)有加上AI 有興趣的朋友我們可以一起研究研究。
源碼下載地址: http://download.csdn.net/source/3395573
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
