0

0

怎样用C++实现井字棋游戏 二维数组与游戏逻辑设计

P粉602998670

P粉602998670

发布时间:2025-07-08 11:02:01

|

730人浏览过

|

来源于php中文网

原创

实现井字棋游戏的核心在于使用二维数组管理棋盘并设计游戏逻辑。1. 使用3x3二维数组表示棋盘,初始化为空格,并通过嵌套循环打印增强可视化;2. 实现玩家轮流落子,通过输入行和列更新棋盘,确保位置合法且未被占用,并切换玩家;3. 判断胜负需检查所有行、列及两条对角线是否一致,判断平局则确认棋盘是否已满。整个程序通过主循环不断调用上述函数推进游戏流程。

怎样用C++实现井字棋游戏 二维数组与游戏逻辑设计

实现一个简单的井字棋(Tic-Tac-Toe)游戏,是学习C++二维数组和基本游戏逻辑设计的一个好项目。它不仅锻炼了你对数组的使用能力,还能让你理解如何组织游戏流程、判断胜负等核心机制。

怎样用C++实现井字棋游戏 二维数组与游戏逻辑设计

1. 使用二维数组表示棋盘

井字棋的标准棋盘是3x3的格子,用二维数组来表示是最直接的方式。

怎样用C++实现井字棋游戏 二维数组与游戏逻辑设计
char board[3][3]; // 表示3x3的棋盘,初始为空或玩家符号

初始化时,每个位置可以设为一个默认字符,比如空格 ' ' 或者 '-',这样在打印时更清晰:

立即学习C++免费学习笔记(深入)”;

void initializeBoard() {
    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 3; j++)
            board[i][j] = ' ';
}

打印棋盘可以用嵌套循环,中间加一些边框线增强可视化效果:

怎样用C++实现井字棋游戏 二维数组与游戏逻辑设计
void printBoard() {
    cout << "  0   1   2\n";
    for (int i = 0; i < 3; i++) {
        cout << i;
        for (int j = 0; j < 3; j++) {
            cout << " " << board[i][j];
            if (j < 2) cout << " |";
        }
        if (i < 2) cout << "\n ---+---+---\n";
    }
    cout << endl;
}

2. 实现玩家轮流落子逻辑

两个玩家轮流进行操作,通常用一个变量记录当前玩家:

NeoAgent
NeoAgent

销售易推出的AI‑CRM智能体平台

下载
char currentPlayer = 'X'; // 假设X先手

每次让玩家输入行和列,检查是否合法(没有越界且该位置为空),然后更新棋盘:

void makeMove(char player) {
    int row, col;
    do {
        cout << "Player " << player << ", enter your move (row and column): ";
        cin >> row >> col;
    } while (row < 0 || row > 2 || col < 0 || col > 2 || board[row][col] != ' ');

    board[row][col] = player;
}

切换玩家也很简单:

currentPlayer = (currentPlayer == 'X') ? 'O' : 'X';

3. 判断胜负与平局

判断胜利条件是这个游戏的核心部分之一。需要检查:

  • 每一行是否相同
  • 每一列是否相同
  • 两条对角线是否相同
bool checkWin(char player) {
    // 检查行和列
    for (int i = 0; i < 3; i++) {
        if ((board[i][0] == player && board[i][1] == player && board[i][2] == player) ||
            (board[0][i] == player && board[1][i] == player && board[2][i] == player))
            return true;
    }

    // 检查对角线
    if ((board[0][0] == player && board[1][1] == player && board[2][2] == player) ||
        (board[0][2] == player && board[1][1] == player && board[2][0] == player))
        return true;

    return false;
}

判断平局只需要看是否所有格子都被填满即可:

bool isDraw() {
    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 3; j++)
            if (board[i][j] == ' ')
                return false;
    return true;
}

主循环中不断调用这些函数:

while (true) {
    printBoard();
    makeMove(currentPlayer);

    if (checkWin(currentPlayer)) {
        printBoard();
        cout << "Player " << currentPlayer << " wins!\n";
        break;
    }

    if (isDraw()) {
        printBoard();
        cout << "It's a draw!\n";
        break;
    }

    currentPlayer = (currentPlayer == 'X') ? 'O' : 'X';
}

基本上就这些。整个程序不算复杂,但涉及到了数组操作、输入处理、状态判断等多个基础知识点,非常适合练习巩固。如果你已经掌握了这些内容,还可以试着加上AI对手或者图形界面进一步拓展功能。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
苹果官方查询网站 苹果手机正品激活查询入口
苹果官方查询网站 苹果手机正品激活查询入口

苹果官方查询网站主要通过 checkcoverage.apple.com/cn/zh/ 进行,可用于查询序列号(SN)对应的保修状态、激活日期及技术支持服务。此外,查找丢失设备请使用 iCloud.com/find,购买信息与物流可访问 Apple (中国大陆) 订单状态页面。

0

2026.01.26

npd人格什么意思 npd人格有什么特征
npd人格什么意思 npd人格有什么特征

NPD(Narcissistic Personality Disorder)即自恋型人格障碍,是一种心理健康问题,特点是极度夸大自我重要性、需要过度赞美与关注,同时极度缺乏共情能力,背后常掩藏着低自尊和不安全感,影响人际关系、工作和生活,通常在青少年时期开始显现,需由专业人士诊断。

1

2026.01.26

windows安全中心怎么关闭 windows安全中心怎么执行操作
windows安全中心怎么关闭 windows安全中心怎么执行操作

关闭Windows安全中心(Windows Defender)可通过系统设置暂时关闭,或使用组策略/注册表永久关闭。最简单的方法是:进入设置 > 隐私和安全性 > Windows安全中心 > 病毒和威胁防护 > 管理设置,将实时保护等选项关闭。

0

2026.01.26

2026年春运抢票攻略大全 春运抢票攻略教你三招手【技巧】
2026年春运抢票攻略大全 春运抢票攻略教你三招手【技巧】

铁路12306提供起售时间查询、起售提醒、购票预填、候补购票及误购限时免费退票五项服务,并强调官方渠道唯一性与信息安全。

3

2026.01.26

个人所得税税率表2026 个人所得税率最新税率表
个人所得税税率表2026 个人所得税率最新税率表

以工资薪金所得为例,应纳税额 = 应纳税所得额 × 税率 - 速算扣除数。应纳税所得额 = 月度收入 - 5000 元 - 专项扣除 - 专项附加扣除 - 依法确定的其他扣除。假设某员工月工资 10000 元,专项扣除 1000 元,专项附加扣除 2000 元,当月应纳税所得额为 10000 - 5000 - 1000 - 2000 = 2000 元,对应税率为 3%,速算扣除数为 0,则当月应纳税额为 2000×3% = 60 元。

1

2026.01.26

oppo云服务官网登录入口 oppo云服务登录手机版
oppo云服务官网登录入口 oppo云服务登录手机版

oppo云服务https://cloud.oppo.com/可以在云端安全存储您的照片、视频、联系人、便签等重要数据。当您的手机数据意外丢失或者需要更换手机时,可以随时将这些存储在云端的数据快速恢复到手机中。

1

2026.01.26

抖币充值官方网站 抖币性价比充值链接地址
抖币充值官方网站 抖币性价比充值链接地址

网页端充值步骤:打开浏览器,输入https://www.douyin.com,登录账号;点击右上角头像,选择“钱包”;进入“充值中心”,操作和APP端一致。注意:切勿通过第三方链接、二维码充值,谨防受骗

3

2026.01.26

Java Spring Security 与认证授权
Java Spring Security 与认证授权

本专题系统讲解 Java Spring Security 框架在认证与授权中的应用,涵盖用户身份验证、权限控制、JWT与OAuth2实现、跨站请求伪造(CSRF)防护、会话管理与安全漏洞防范。通过实际项目案例,帮助学习者掌握如何 使用 Spring Security 实现高安全性认证与授权机制,提升 Web 应用的安全性与用户数据保护。

25

2026.01.26

c++ 根号
c++ 根号

本专题整合了c++根号相关教程,阅读专题下面的文章了解更多详细内容。

76

2026.01.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
10分钟--Midjourney创作自己的漫画
10分钟--Midjourney创作自己的漫画

共1课时 | 0.1万人学习

Midjourney 关键词系列整合
Midjourney 关键词系列整合

共13课时 | 0.9万人学习

AI绘画教程
AI绘画教程

共2课时 | 0.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号