四子棋
(游戏:四子连)四子连是一个两个人玩的棋盘游戏,在游戏 中,玩家轮流将有颜色的棋子放在一个m行n列的垂直悬挂的 网格中,如下所示。 这个游戏的目的是在对手实现一行、一列或者一条对角线 上有四个相同颜色的棋子之前,你能先做到。程序提示两个玩 家交替地下红子 Red 或黄子 Yellow。当放下一子时,程序在控 制台重新显示这个棋盘,然后确定游戏的状态(贏、平局还是 继续)。下面是一个运行示例:
输入1:
5 5
1 1 2 2 3 3 4 4
棋盘大小 5 ∗ 5 ( m ∗ n ) 5*5(m*n) 5∗5(m∗n)
第一步,红子在1位置下棋,第二步,白子在1位置下棋,依次类推
输出1:
7,red
在第七步,红子赢了
输入2:
5 5
0 1 1 2 2 3 3 4 4
输出2 :
1,error
因为0是异常输入,不能输入0
输入3:
5 5
1 2 3 4 2 3 3 4 5 4 4 1 2 3
输出3:
11,red

输入4:
5 5
1 2 3 4 2 3 3 4 5 4 5 1 2 3
输出4:
15,error
输入5:
5 4
1 2 1 2 3 3 1 1 2 4 3 4 4
输出5:
13,red
输入5:
4 5
4 5 1 3 3 2 1 2 2 1 1
输出5:
13,red
行不通过输入
5 5
1 2 3 4 5 1 1 2 2 4 4 5 5
输出:
14,error

行通过输入
5 10
1 2 3 4 5 1 1 2 2 4 4 5 5 1 6 6 7 7
输出:

列不通过输入
5 5
3 1 3 3 3 2 3 4 5
输出:
10,error

列通过输入
5 5
3 1 3 2 3 4 3 5
输出:

左上斜角通过
5 5
1 2 3 4 2 3 3 4 5 4 4 1 2 3
输出:
11,red

右上斜角通过
5 5
2 3 5 4 5 3 4 2 3 2 2
输出:

右上斜角不通过
5 5
2 3 5 4 5 5 4 3 1 2 1 2 2 1 2 5 1
输出:没有连续的

通过上述测试用例,验证正确性
c++:
#include <iostream>
#include<vector>
#include<assert.h>
using namespace std;
//竖直四子棋
vector<int> GetWinner(int rows, int cols, vector<int> data) {
if (rows <= 3 || cols <= 3)
{
assert(1); //棋盘要4个才能赢,少于3行列的棋盘,不会有赢家,所以禁止输入
}
vector<int> result;
int* arr = new int[rows * cols];
int* arrHeight = new int[cols];
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++) {
arr[i * cols + j] =

该博客介绍了一个C++实现的四子棋游戏逻辑,包括游戏规则、异常处理以及胜利条件的检查。通过多个测试用例验证了程序的正确性,涉及棋盘状态更新、行、列和对角线的连续棋子检查。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



