0
点赞
收藏
分享

微信扫一扫

redis开源协议变更了?我们还能用吗?

大自然在召唤 04-04 20:30 阅读 1

当用C++编写一款五子棋游戏时,可以按照以下步骤进行:

  1. 创建一个棋盘:使用二维数组来表示棋盘,每个元素代表一个位置,可以使用数字或字符来表示空位、黑子和白子。

  2. 实现游戏规则:根据五子棋的规则,需要实现以下功能:

    • 判断胜负:检查是否有五个连续的棋子在横、竖、斜线上。
    • 下棋:根据玩家的输入,在合法的位置放置对应的棋子。
    • 判断合法性:检查玩家的输入是否在棋盘范围内,并且该位置是否为空。
  3. 实现游戏逻辑:创建一个游戏循环,让两个玩家交替下棋,直到有一方获胜或者平局。

  4. 可选的增强功能:可以添加一些额外的功能来提升游戏体验,例如:

    • 悔棋功能:允许玩家悔棋一步。
    • 重新开始游戏:在游戏结束后,询问玩家是否重新开始游戏。

以下是一个简单的示例代码:

 

#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(char player) {
    // 检查横向
    for (int i = 0; i < SIZE; i++) {
        for (int j = 0; j <= SIZE - 5; j++) {
            bool win = true;
            for (int k = 0; k < 5; k++) {
                if (board[i][j + k] != player) {
                    win = false;
                    break;
                }
            }
            if (win) return true;
        }
    }

    // 检查纵向
    for (int i = 0; i <= SIZE - 5; i++) {
        for (int j = 0; j < SIZE; j++) {
            bool win = true;
            for (int k = 0; k < 5; k++) {
                if (board[i + k][j] != player) {
                    win = false;
                    break;
                }
            }
            if (win) return true;
        }
    }

    // 检查正斜线
    for (int i = 0; i <= SIZE - 5; i++) {
        for (int j = 0; j <= SIZE - 5; j++) {
            bool win = true;
            for (int k = 0; k < 5; k++) {
                if (board[i + k][j + k] != player) {
                    win = false;
                    break;
                }
            }
            if (win) return true;
        }
    }

    // 检查反斜线
    for (int i = 0; i <= SIZE - 5; i++) {
        for (int j = 4; j < SIZE; j++) {
            bool win = true;
            for (int k = 0; k < 5; k++) {
                if (board[i + k][j - k] != player) {
                    win = false;
                    break;
                }
            }
            if (win) return true;
        }
    }

    return false;
}

// 下棋
void makeMove(int row, int col, char player) {
    board[row][col] = player;
}

// 判断合法性
bool isValidMove(int row, int col) {
    if (row < 0 || row >= SIZE || col < 0 || col >= SIZE) {
        return false;
    }
    if (board[row][col] != ' ') {
        return false;
    }
    return true;
}

int main() {
    initBoard();
    char currentPlayer = 'X';

    while (true) {
        printBoard();

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

        if (!isValidMove(row, col)) {
            cout << "Invalid move! Please try again." << endl;
            continue;
        }

        makeMove(row, col, currentPlayer);

        if (checkWin(currentPlayer)) {
            cout << "Player " << currentPlayer << " wins!" << endl;
            break;
        }

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

    return 0;
}

以上代码由C知道编写

举报

相关推荐

0 条评论