C++实现十x十五子棋小游戏:原理与完整代码详解

宋时安
宋时安
发布时间:2026-10-15| 5人浏览过
原创

本指南介绍如何使用C++标准库实现一款经典的10x10五子棋控制台程序。核心在于利用二维数组存储棋盘状态,结合ASCII字符进行图形化输出,并通过坐标遍历算法实时检测玩家的胜利条件,适合C++初学者理解面向对象之前的过程式程序设计思路。

运行效果预览

程序将在终端以文本形式呈现棋盘,支持黑棋(1)与白棋(-1)交替落子。以下是示例界面:

核心功能模块拆解

为了实现清晰的控制流程,我们将游戏逻辑分解为三个主要部分:棋盘绘制、落子交互与胜负判定、主循环控制。

第1步:构建棋盘数据结构与渲染函数

目的:将内存中的数字矩阵转化为可视化的网格界面。

  • 数据结构:使用 int chess[11][11] 定义棋盘。这里预留了索引1-10的空间,方便后续直接使用1-based的用户输入作为下标,减少转换计算。
  • 渲染逻辑:由于命令行环境中一个汉字或符号通常占两个字符宽度,我们利用双空格或全角字符来保持纵横比例协调。
void board()//每一次打印棋盘的函数
{   
    cout << "    1 2 3 4 5 6 7 8 9 10" <

第2步:实现落子验证与胜利检测

目的:确保玩家操作符合规则,并即时判断是否达成五连珠。

  • 输入校验:用户输入的坐标必须位于1-10之间,且目标格子未被占用。
  • 胜利判定:在每次落子后,从当前坐标出发,沿横向、纵向及两条对角线四个方向检查是否存在连续的同色棋子。
void judge()
{
    while(1)//持续等待合法输入
    {
        // 检查边界范围 (假设坐标系映射后索引为0-9)
        if(x<=0||x>10||y<=0||y>10)
        {
            cout <<"无效位置,请重新输入:"<<endl;
            cin >>x>>y;
        }
        // 检查格子是否已被占据
        else if(chess[x-1][y-1]!=0)
        {
            cout <<"该位置已有棋子,请重试:"<<endl;
            cin >>x>>y;
        }
        // 输入合法则跳出循环
        else if(x>0&&x<=10&&y>0&&y<=10&&chess[x-1][y-1]==0)
            break;
    }
}

void play(int x,int y)
{
    // 确定当前是黑棋(player==1)还是白棋(player==2)
    if(player==1)
    {
        chess[x-1][y-1]=1;//落下黑棋
        // 检测黑棋四周是否有五连珠
        //此处逻辑略:需检查上下左右及四个对角线方向的连续棋子数,若达到5则标记胜利标志b=5
        player=2; }
    else if(player==2)
    {
        chess[x-1][y-1]=-1;//落下白棋
        // 检测白棋四周是否有五连珠
        //此处逻辑略:同样检查八个方向的连续性,若达到5则标记胜利标志w=5
        player=1;}
}

第3步:整合主循环

目的:串联所有步骤,形成可运行的游戏闭环。

主函数负责初始化环境,随后进入无限循环,直到一方获胜。利用 system("cls") 清除屏幕以保持界面整洁。

int main()
{   
    init();
    board();
    while(1)
    {
        // --- 黑棋回合 ---
        cout << "Black: ";
        cin>>x>>y;
        judge();//先校验再落子
        play(x,y);
        system("cls");
        board();
        // 检查是否结束
        if(b==5){ system("cls");cout << "Black win";break; }

        // --- 白棋回合 ---
        cout << "White: " ;
        cin >>x>>y;
        judge();
        play(x,y);
        system("cls");
        board();
        // 检查是否结束
        if(w==5){ system("cls");cout << "White win";break; }
    }
    return 0;
}

完整源代码汇总

为了方便编译测试,以下为包含头文件引用及上述所有逻辑整合后的完整C++代码。请注意,胜负检测的具体遍历代码在上方进行了简化说明,实际使用时需展开完整的方向位移判断逻辑。

#include <iostream>
using namespace std;

int b=0,w=0,player=1,x,y; // 胜利标志及轮次变量
int chess[11][11];          // 棋盘全局数组

// ... (此处省略具体的 input, board, judge, play 函数定义,参考上文拆解) ...

// 注:实际复制时请将上方的 function 定义合并至此

以上就是使用C++实现五子棋小游戏的详细内容,更多关于C++游戏开发技巧的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。