You need to enable JavaScript to run this app.
最新活动
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

C++,无限循环,套接字,井字棋程序

以下是一个使用C++编写的简单井字棋程序示例,该程序使用套接字进行通信,并在主循环中实现无限循环。该程序使用TCP套接字进行通信,并在服务器客户端之间传递游戏状态。

服务器端代码:

#include <iostream>
#include <cstring>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

#define PORT 8080

void printBoard(char board[3][3]) {
    std::cout << "---------" << std::endl;
    for (int i = 0; i < 3; i++) {
        std::cout << "|";
        for (int j = 0; j < 3; j++) {
            std::cout << " " << board[i][j] << " |";
        }
        std::cout << std::endl << "---------" << std::endl;
    }
}

bool checkWin(char board[3][3], char symbol) {
    // 检查行
    for (int i = 0; i < 3; i++) {
        if (board[i][0] == symbol && board[i][1] == symbol && board[i][2] == symbol) {
            return true;
        }
    }

    // 检查列
    for (int j = 0; j < 3; j++) {
        if (board[0][j] == symbol && board[1][j] == symbol && board[2][j] == symbol) {
            return true;
        }
    }

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

    return false;
}

int main() {
    int serverSocket, newSocket;
    struct sockaddr_in serverAddr, clientAddr;
    char buffer[1024] = {0};

    // 创建套接字
    if ((serverSocket = socket(AF_INET, SOCK_STREAM, 0)) == 0) {
        std::cerr << "套接字创建失败" << std::endl;
        return -1;
    }

    serverAddr.sin_family = AF_INET;
    serverAddr.sin_addr.s_addr = INADDR_ANY;
    serverAddr.sin_port = htons(PORT);

    // 绑定套接字到指定的IP和端口
    if (bind(serverSocket, (struct sockaddr *)&serverAddr, sizeof(serverAddr)) < 0) {
        std::cerr << "套接字绑定失败" << std::endl;
        return -1;
    }

    // 监听传入的连接
    if (listen(serverSocket, 3) < 0) {
        std::cerr << "监听失败" << std::endl;
        return -1;
    }

    std::cout << "等待连接..." << std::endl;

    socklen_t addrLen = sizeof(clientAddr);
    if ((newSocket = accept(serverSocket, (struct sockaddr *)&clientAddr, &addrLen)) < 0) {
        std::cerr << "接受连接失败" << std::endl;
        return -1;
    }

    std::cout << "连接成功" << std::endl;

    char board[3][3] = {{' ', ' ', ' '}, {' ', ' ', ' '}, {' ', ' ', ' '}};
    int row, col;
    bool gameOver = false;

    while (!gameOver) {
        // 接收客户端发送的坐标
        memset(buffer, 0, sizeof(buffer));
        if (recv(newSocket, buffer, sizeof(buffer), 0) < 0) {
            std::cerr << "接收数据失败" << std::endl;
            return -1;
        }

        sscanf(buffer, "%d %d", &row, &col);
        std::cout << "接收到坐标:" << row << " " << col << std::endl;

        // 更新棋盘
        board[row][col] = 'X';
        printBoard(board);

        // 检查胜利条件
        if (checkWin(board, 'X')) {
            std::cout << "服务器获胜" << std::endl;
            gameOver = true;
            break;
        }

        // 检查平局
        bool isDraw
本文内容通过AI工具匹配关键字智能整合而成,仅供参考,火山引擎不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系service@volcengine.com进行反馈,火山引擎收到您的反馈后将及时答复和处理。
展开更多
面向开发者的云福利中心,ECS 60元/年,域名1元起,助力开发者快速在云上构建可靠应用

社区干货

学习 SSL/TLS ,这一篇就够了

App 和小程序提供 HTTPS 安全解决方案,此外还有多个证书工具供免费使用。如果拥有已实名认证的火山引擎账号,可立刻前往产品介绍页去申请免费的SSL证书进行体验。详情可以点击链接了解更多 https://www.volcengin... 安全套接字层协议 || TLS | Transport Layer Security | 传输层安全性协议 || EV SSL | Extended Validation SSL Certificates | EV 证书,又...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

C++,无限循环,套接字,井字棋程序-优选内容

学习 SSL/TLS ,这一篇就够了
App 和小程序提供 HTTPS 安全解决方案,此外还有多个证书工具供免费使用。如果拥有已实名认证的火山引擎账号,可立刻前往产品介绍页去申请免费的SSL证书进行体验。详情可以点击链接了解更多 https://www.volcengin... 安全套接字层协议 || TLS | Transport Layer Security | 传输层安全性协议 || EV SSL | Extended Validation SSL Certificates | EV 证书,又...

C++,无限循环,套接字,井字棋程序-相关内容

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

产品体验

体验中心

云服务器特惠

云服务器
云服务器ECS新人特惠
立即抢购

白皮书

一图详解大模型
浓缩大模型架构,厘清生产和应用链路关系
立即获取

最新活动

爆款1核2G共享型服务器

首年60元,每月仅需5元,限量秒杀
立即抢购

火山引擎增长体验专区

丰富能力激励企业快速增长
查看详情

数据智能VeDI

易用的高性能大数据产品家族
了解详情

一键开启云上增长新空间

立即咨询