用C++设计五子棋游戏,如何判断输赢拜托各位了 3Q

2024-11-15 11:19:58
推荐回答(1个)
回答1:

就像楼上说的,不过不用整个遍历,五个走一条的情况最多也就被包含在落子点周围上下坐右各4格的9X9=81的平面上,如果遍历,那么搜索这个区域足够了,而事实上,这仍然工作量巨大。其实你需要判断的只有以落子为中心,4个方向上连通的子的个数而已,也就是水平向竖直向以及夹在中间的两个倾斜45度的方向。你可以先确定落子点,然后向某个既定的方向后退,直到无同色子,然后再向反方向前进计数至无同色子,如果是瞎玩玩的,也就是连6个7个也算赢的,那么>=5就搞定,如果是正规的,有长连禁手的,那么连多了判输,其他的禁手以此方法判断也不会太复杂,并且像双三禁手这样的东西几乎和判赢判输没有区别,两个bool值一&就可以处理完,算法如此,依靠二维数组实现的话实现难度也相当之低了。