这是一个五子棋程序中的判断在行棋方向上是否有5个连续当前玩家的棋子的模块,请高手帮忙解释一下另外帮忙用if else语句把switch语句重写一下。。。答的好的追加高分
可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。
可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。
// 作用:判断指定行棋方向上,是否有含当前棋位的5个连续当前玩家棋子
// 求从当前棋子在行棋方向上起点棋位,既逆向数(不含当前棋子)的第4个棋子)的坐标,
// 以及该行棋方向沿水平方向,垂直方向的步长。
// pos.x -- 起点棋位(逆向数(不含当前棋子)的第4个棋位)的坐标x
// pos.y -- 起点棋位(逆向数(不含当前棋子)的第4个棋位)的坐标y
// dpos.x -- 行棋方向沿水平方向的步长,既行棋方向增加一格,则水平方向对应的坐标变化值。
// dpos.y -- 行棋方向沿垂直方向的步长,既行棋方向增加一格,垂直方向的对应的坐标变化值。
count=0; // 临时记录已有连续棋子的个数。
// 因为需要计算判断的范围是,从当前棋位正向或逆向各数testnum-1个棋子,
// 所以,加上当前棋子,需要判断的棋子次数等于
// 如果还想不明白,看下图,*表示当前棋位
count++; // 如果棋位上有该玩家棋子,则连续棋子数加一。
if(count>=testnum) // 如果连续棋子数大于等于“要判断的棋子个数”,则判断为真。
count=0; // 如果棋位上没有该玩家棋子,既出现空位或对家棋子,则连续棋子数清零。
// 每次循环,按步长计算一次行棋方向上的新棋位坐标。
输入格式 第1行输入两个数n和m,用空格分开,n为棋盘横纵坐标的最大值,m为步数:
输出格式 输出首次分出胜负那一步的序号(第一步为1),如果走完了都没有分出胜负,输出“aabb”。输入样例5 11
可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。
本来想给你实现一下的 但是、、、数组判断对角的胜利太麻烦了,发现还得用到树 唉 悲剧啊
如果你不嫌麻烦可以用数组来实现这个 以数值来表示是否有棋子 0:空,1:白棋,2:黑棋。
用坐标位置值相加的结果来表示胜利,sum是否等于 5||10, 祝你好运
输入的只是一方的棋子,不是双方的