c++实现五子棋的代码怎么写

以下是一个简单的C++实现五子棋的代码示例:#include #include const int BOARD_SIZE = 15;char board[BOARD_SIZE][BOARD_SIZE];void initBoard() {for (int i = 0; i < BOARD_SIZE; i++) {for (int j = 0; j < BOA

以下是一个简单的C++实现五子棋的代码示例:

#include <iostream>
#include <vector>

const int BOARD_SIZE = 15;

char board[BOARD_SIZE][BOARD_SIZE];

void initBoard() {
    for (int i = 0; i < BOARD_SIZE; i++) {
        for (int j = 0; j < BOARD_SIZE; j++) {
            board[i][j] = '.';
        }
    }
}

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

bool checkWin(int x, int y, char player) {
    // 检查横向
    int count = 1;
    for (int i = 1; i < 5; i++) {
        if (x+i >= BOARD_SIZE || board[x+i][y] != player) {
            break;
        }
        count++;
    }
    for (int i = 1; i < 5; i++) {
        if (x-i < 0 || board[x-i][y] != player) {
            break;
        }
        count++;
    }
    if (count >= 5) {
        return true;
    }

    // 检查纵向
    count = 1;
    for (int i = 1; i < 5; i++) {
        if (y+i >= BOARD_SIZE || board[x][y+i] != player) {
            break;
        }
        count++;
    }
    for (int i = 1; i < 5; i++) {
        if (y-i < 0 || board[x][y-i] != player) {
            break;
        }
        count++;
    }
    if (count >= 5) {
        return true;
    }

    // 检查斜向
    count = 1;
    for (int i = 1; i < 5; i++) {
        if (x+i >= BOARD_SIZE || y+i >= BOARD_SIZE || board[x+i][y+i] != player) {
            break;
        }
        count++;
    }
    for (int i = 1; i < 5; i++) {
        if (x-i < 0 || y-i < 0 || board[x-i][y-i] != player) {
            break;
        }
        count++;
    }
    if (count >= 5) {
        return true;
    }

    // 检查反斜向
    count = 1;
    for (int i = 1; i < 5; i++) {
        if (x+i >= BOARD_SIZE || y-i < 0 || board[x+i][y-i] != player) {
            break;
        }
        count++;
    }
    for (int i = 1; i < 5; i++) {
        if (x-i < 0 || y+i >= BOARD_SIZE || board[x-i][y+i] != player) {
            break;
        }
        count++;
    }
    if (count >= 5) {
        return true;
    }

    return false;
}

int main() {
    initBoard();

    char player = 'X';
    int x, y;

    while (true) {
        printBoard();

        std::cout << "Player " << player << ": ";
        std::cin >> x >> y;

        if (x < 0 || x >= BOARD_SIZE || y < 0 || y >= BOARD_SIZE || board[x][y] != '.') {
            std::cout << "Invalid move, try again." << std::endl;
            continue;
        }

        board[x][y] = player;

        if (checkWin(x, y, player)) {
            printBoard();
            std::cout << "Player " << player << " wins!" << std::endl;
            break;
        }

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

    return 0;
}

这段代码实现了一个简单的五子棋游戏,玩家可以轮流下棋,当有玩家连成五子时游戏结束并宣布胜利。您可以在此基础上进行更多的扩展和优化。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/1008118.html

(0)
派派
上一篇 2024-04-27
下一篇 2024-04-27

相关推荐

  • linux中pkill命令的作用是什么

    在Linux中,pkill 命令用于根据进程名或其他属性来终止进程。它的作用是通过进程名称或其他匹配条件来查找并结束正在运行的进程。pkill 命令的语法如下:pkill [options] pattern其中,pattern 是要匹配的进程名或其他属性的模式,可以是正则表达式。选项可以用于指定搜索和终止进程的方式。pkill 命令会扫描当前系统中所有正在运行的进程,并与给定的模式进行匹配

    2024-02-05
    0
  • tcping安装和使用的方法是什么

    tcping是一个用于测试TCP端口是否可达的工具。在Linux系统中,可以使用以下步骤安装tcping并进行使用:首先,在终端中执行以下命令安装tcping:sudo apt-get install tcptraceroute安装完成后,可以使用以下命令来测试TCP端口的可达性:tcping [hostname] [port]其中,[hostname]为目标主机的域名或IP地址,[port]为要

    2024-02-22
    0
  • php中array_walk函数怎么使用

    array_walk函数用于对数组中的每个元素应用用户自定义函数。其语法如下:array_walk(array $array, callable $callback [, mixed $userdata = NULL]): bool参数说明:$array:要处理的数组$callback:自定义函数,对数组中的每个元素进行处理$userdata(可选):可选参数,传递给回调函数的额外参数示例:

    2024-02-28
    0
  • 有限空间co是什么意思(有限空间的定义是什么意思)

    有限空间co是什么意思,有限空间的定义是什么意思 内容导航: 有限空间作业一氧化碳安全范围时多少 有限空间的定义是什么 “银行理财收益下跌空间有限”是什么意思 一氧化碳的单位ppm…

    2022-08-16
    0
  • 如何深度搜索网页(怎么深度搜索)

    如何深度搜索网页,怎么深度搜索内容导航:搜索引擎爬虫在不知道域名的情况下如何搜索到网站怎样在百度深度搜索如何搜索网页深度搜上可以搜索到的文献资料全面吗一、搜索引擎爬虫在不知道域名的情况下如何搜索到网站这个做不到吧?我们以在国内最主要的百度爬虫为例。你有一个新网

    2022-05-02
    0
  • Android开发中Fragment的用法是什么

    在Android开发中,Fragment是一种可重用的组件,用于构建灵活的用户界面。它可以在Activity中嵌入多个Fragment,每个Fragment可以有自己的布局和行为,类似于一个独立的子Activity。Fragment的主要用法包括以下几个方面:界面复用:通过将界面的不同部分封装为Fragment,可以在不同的Activity中重复使用,提高代码的复用性和维护性。界面切换:通过替换

    2024-01-27
    0

发表回复

登录后才能评论