c编程怎么输出五子棋盘

时间:2025-03-05 03:14:48 明星趣事

在C语言中输出一个五子棋盘,你可以使用二维字符数组来表示棋盘,并通过嵌套循环来打印出棋盘的每一行和每一列。每个元素可以代表棋盘上的一个位置,通常使用字符来表示空位、玩家1的棋子(例如'X')和玩家2的棋子(例如'O')。

```c

include

include

define SIZE 15 // 棋盘大小

define EMPTY '.' // 空格字符

define PLAYER1 'X' // 玩家1的棋子

define PLAYER2 'O' // 玩家2的棋子

char board[SIZE][SIZE]; // 定义棋盘

// 初始化棋盘

void initBoard() {

for (int i = 0; i < SIZE; i++) {

for (int j = 0; j < SIZE; j++) {

board[i][j] = EMPTY;

}

}

}

// 打印棋盘

void printBoard() {

for (int i = 0; i < SIZE; i++) {

for (int j = 0; j < SIZE; j++) {

printf("%c ", board[i][j]);

}

printf("

");

}

}

// 判断是否有玩家连成五子

bool isWinner(char player) {

// 检查水平、垂直和斜向连子情况

// 这里只是一个简单的示例,实际判断需要更复杂的逻辑

for (int i = 0; i < SIZE; i++) {

for (int j = 0; j < SIZE - 4; j++) {

if (board[i][j] == player && board[i][j+1] == player && board[i][j+2] == player && board[i][j+3] == player && board[i][j+4] == player) return true;

}

for (int j = 0; j < SIZE - 4; j++) {

if (board[j][i] == player && board[j+1][i] == player && board[j+2][i] == player && board[j+3][i] == player && board[j+4][i] == player) return true;

}

}

for (int i = 0; i < SIZE - 4; i++) {

if (board[i][i] == player && board[i+1][i+1] == player && board[i+2][i+2] == player && board[i+3][i+3] == player && board[i+4][i+4] == player) return true;

}

for (int i = 0; i < SIZE - 4; i++) {

if (board[i][SIZE-1-i] == player && board[i+1][SIZE-2-i] == player && board[i+2][SIZE-3-i] == player && board[i+3][SIZE-4-i] == player && board[i+4][SIZE-5-i] == player) return true;

}

return false;

}

// 玩家轮流下棋

void playGame() {

int x, y;

char player = PLAYER1;

while (true) {

printBoard();

printf("Player %c, enter your move (x,y): ", player);

scanf("%d %d", &x, &y);

if (x < 0 || x >= SIZE || y < 0 || y >= SIZE || board[x][y] != EMPTY) {

printf("Invalid move, try again.

");

continue;

}

board[x][y] = player;

if (isWinner(player)) {

printBoard();

printf("Player %c wins!

", player);

break;

}

player = (player == PLAYER1) ? PLAYER2 : PLAYER1;

}

}

int main() {

initBoard();

printBoard();

playGame();

return 0;

}

```

这个程序首先初始化一个15x15的棋盘,然后进入一个循环,允许玩家轮流输入坐标来下棋。每次下棋后,程序会检查是否有玩家连成五子,如果有,