六子棋博弈系统c语言程序代码
时间: 2023-12-29 19:04:13 浏览: 39
以下是一个简单的六子棋博弈系统的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define BOARD_SIZE 6
int board[BOARD_SIZE][BOARD_SIZE];
void init_board() {
int i, j;
for(i = 0; i < BOARD_SIZE; i++) {
for(j = 0; j < BOARD_SIZE; j++) {
board[i][j] = 0;
}
}
}
void print_board() {
int i, j;
for(i = 0; i < BOARD_SIZE; i++) {
for(j = 0; j < BOARD_SIZE; j++) {
printf("%d ", board[i][j]);
}
printf("\n");
}
}
int is_valid_move(int x, int y) {
if(x < 0 || x >= BOARD_SIZE || y < 0 || y >= BOARD_SIZE) {
return 0;
}
if(board[x][y] != 0) {
return 0;
}
return 1;
}
int is_game_over() {
int i, j;
for(i = 0; i < BOARD_SIZE; i++) {
for(j = 0; j < BOARD_SIZE; j++) {
if(board[i][j] == 0) {
return 0;
}
}
}
return 1;
}
int check_horizontal(int x, int y, int player) {
int count = 1;
int i;
for(i = y - 1; i >= 0; i--) {
if(board[x][i] == player) {
count++;
} else {
break;
}
}
for(i = y + 1; i < BOARD_SIZE; i++) {
if(board[x][i] == player) {
count++;
} else {
break;
}
}
return count >= 6;
}
int check_vertical(int x, int y, int player) {
int count = 1;
int i;
for(i = x - 1; i >= 0; i--) {
if(board[i][y] == player) {
count++;
} else {
break;
}
}
for(i = x + 1; i < BOARD_SIZE; i++) {
if(board[i][y] == player) {
count++;
} else {
break;
}
}
return count >= 6;
}
int check_diagonal_up(int x, int y, int player) {
int count = 1;
int i, j;
for(i = x - 1, j = y - 1; i >= 0 && j >= 0; i--, j--) {
if(board[i][j] == player) {
count++;
} else {
break;
}
}
for(i = x + 1, j = y + 1; i < BOARD_SIZE && j < BOARD_SIZE; i++, j++) {
if(board[i][j] == player) {
count++;
} else {
break;
}
}
return count >= 6;
}
int check_diagonal_down(int x, int y, int player) {
int count = 1;
int i, j;
for(i = x - 1, j = y + 1; i >= 0 && j < BOARD_SIZE; i--, j++) {
if(board[i][j] == player) {
count++;
} else {
break;
}
}
for(i = x + 1, j = y - 1; i < BOARD_SIZE && j >= 0; i++, j--) {
if(board[i][j] == player) {
count++;
} else {
break;
}
}
return count >= 6;
}
int check_win(int x, int y, int player) {
if(check_horizontal(x, y, player)) {
return 1;
}
if(check_vertical(x, y, player)) {
return 1;
}
if(check_diagonal_up(x, y, player)) {
return 1;
}
if(check_diagonal_down(x, y, player)) {
return 1;
}
return 0;
}
void play_game() {
int player = 1;
int x, y;
int winner = 0;
init_board();
while(!is_game_over() && !winner) {
printf("Player %d's turn:\n", player);
printf("Enter x coordinate: ");
scanf("%d", &x);
printf("Enter y coordinate: ");
scanf("%d", &y);
if(is_valid_move(x, y)) {
board[x][y] = player;
if(check_win(x, y, player)) {
winner = player;
} else {
player = player == 1 ? 2 : 1;
}
} else {
printf("Invalid move.\n");
}
}
print_board();
if(winner) {
printf("Player %d wins!\n", winner);
} else {
printf("Draw.\n");
}
}
int main() {
play_game();
return 0;
}
```
该代码包含了初始化棋盘、打印棋盘、判断落子是否合法、判断游戏是否结束、检查是否有玩家获胜等函数,以及主函数来控制游戏的流程。用户可以通过输入坐标来落子,程序会自动判断是否合法,并切换玩家。若有一方获胜或出现平局,游戏结束并输出结果。