五子棋代码一枚
  • 板块灌水区
  • 楼主LMZ202311
  • 当前回复8
  • 已保存回复9
  • 发布时间2024/1/25 08:27
  • 上次更新2024/1/25 11:04:40
查看原帖
五子棋代码一枚
1213830
LMZ202311楼主2024/1/25 08:27

#include <iostream>
using namespace std;

const int SIZE = 15;
char board[SIZE][SIZE];

// 初始化棋盘
void initBoard() {
    for (int i = 0; i < SIZE; i++) {
        for (int j = 0; j < SIZE; j++) {
            board[i][j] = '+';
        }
    }
}

// 打印棋盘
void printBoard() {
    for (int i = 0; i < SIZE; i++) {
        for (int j = 0; j < SIZE; j++) {
            cout << board[i][j] << " ";
        }
        cout << endl;
    }
}

// 判断是否获胜
bool checkWin(int row, int col, char player) {
    int count = 1;

    // 检查水平方向
    for (int i = col - 1; i >= 0 && board[row][i] == player; i--) {
        count++;
    }
    for (int i = col + 1; i < SIZE && board[row][i] == player; i++) {
        count++;
    }
    if (count >= 5) {
        return true;
    }

    // 检查竖直方向
    count = 1;
    for (int i = row - 1; i >= 0 && board[i][col] == player; i--) {
        count++;
    }
    for (int i = row + 1; i < SIZE && board[i][col] == player; i++) {
        count++;
    }
    if (count >= 5) {
        return true;
    }

    // 检查左上到右下方向
    count = 1;
    for (int i = row - 1, j = col - 1; i >= 0 && j >= 0 && board[i][j] == player; i--, j--) {
        count++;
    }
    for (int i = row + 1, j = col + 1; i < SIZE && j < SIZE && board[i][j] == player; i++, j++) {
        count++;
    }
    if (count >= 5) {
        return true;
    }

    // 检查右上到左下方向
    count = 1;
    for (int i = row - 1, j = col + 1; i >= 0 && j < SIZE && board[i][j] == player; i--, j++) {
        count++;
    }
    for (int i = row + 1, j = col - 1; i < SIZE && j >= 0 && board[i][j] == player; i++, j--) {
        count++;
    }
    if (count >= 5) {
        return true;
    }

    return false;
}

int main() {
    int row, col;
    char player = 'X';

    initBoard();

    while (true) {
        printBoard();

        cout << "Player " << player << ", enter your move (row col): ";
        cin >> row >> col;

        if (row < 0 || row >= SIZE || col < 0 || col >= SIZE || board[row][col] != '+') {
            cout << "Invalid move. Try again." << endl;
            continue;
        }

        board[row][col] = player;

        if (checkWin(row, col, player)) {
            cout << "Player " << player << " wins!" << endl;
            break;
        }

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

    printBoard();

    return 0;
}

代码在此,喜欢自取(点个赞吧)

2024/1/25 08:27
加载中...