工作閑暇之余踪蹬,琢磨了一下五子棋小游戲的實(shí)現(xiàn),下面自己總結(jié)了一下大概的實(shí)現(xiàn)思路臣咖,仍有不足之處跃捣,還要學(xué)習(xí)ing.
五子棋游戲的玩法,橫夺蛇、縱疚漆、45°有連續(xù)的五顆棋子即勝利。我們知道這個(gè)之后刁赦,就方便縷清思路愿卸。我們可以給五子棋棋盤看成一個(gè)坐標(biāo)系,每個(gè)棋子都有自己的坐標(biāo)截型。我們只要計(jì)算出新添加棋子的坐標(biāo)周圍(即橫趴荸、縱、45°)有連續(xù)的五顆棋子就OK宦焦。
看了網(wǎng)上一些實(shí)現(xiàn)的辦法发钝,這里說一下我自己的一些看法顿涣。我將新添加的每個(gè)棋子坐標(biāo)周圍的棋子的橫縱坐標(biāo)取出來,分別放在數(shù)組中酝豪。將得到的數(shù)組排序后涛碑,做等差判斷,如果某個(gè)數(shù)組有連續(xù)的5顆棋子是差值為1的等差數(shù)(45°只是把橫縱結(jié)合起來)即Win孵淘。
更新:
![Uploading 7E3A7748-D480-4DA2-A241-F5AE56BFC3F6_522215.png . . .]增加了局域網(wǎng)對(duì)戰(zhàn)蒲障,利用UDP實(shí)現(xiàn)。UDP傳輸速度上比TCP快一點(diǎn)瘫证,但是容易丟包揉阎。
測(cè)試代碼
if ([[PlayData shareDataManager] addPoint:CGPointMake(pointX, pointY) atRole:mine]) {
NSLog(@"棋子坐標(biāo)添加");
if ([[PlayManager shareManager] finalWinAtRole:mine]) {
NSLog(@"贏了");
}
}
Demo中是寫了實(shí)現(xiàn)的邏輯毙籽,可以簡單的測(cè)試。