用C++编写一个简单的六子棋博弈算法
时间: 2024-06-09 09:10:41 浏览: 98
六子棋 程序 c++
3星 · 编辑精心推荐
好的,以下是一个基本的六子棋博弈算法的C代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define BOARD_SIZE 6 // 棋盘大小
int board[BOARD_SIZE][BOARD_SIZE]; // 定义棋盘
// 初始化棋盘
void init_board(){
for(int i=0; i<BOARD_SIZE; i++){
for(int j=0; j<BOARD_SIZE; j++){
board[i][j] = 0;
}
}
}
// 检查某方是否胜利
int check_win(int player){
int i, j;
// 水平方向
for(i=0; i<BOARD_SIZE; i++){
for(j=0; j<=BOARD_SIZE-6; 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 && board[i][j+5]==player){
return 1;
}
}
}
// 垂直方向
for(i=0; i<=BOARD_SIZE-6; i++){
for(j=0; j<BOARD_SIZE; j++){
if(board[i][j]==player && board[i+1][j]==player && board[i+2][j]==player &&
board[i+3][j]==player && board[i+4][j]==player && board[i+5][j]==player){
return 1;
}
}
}
// 左上到右下方向
for(i=0; i<=BOARD_SIZE-6; i++){
for(j=0; j<=BOARD_SIZE-6; j++){
if(board[i][j]==player && board[i+1][j+1]==player && board[i+2][j+2]==player &&
board[i+3][j+3]==player && board[i+4][j+4]==player && board[i+5][j+5]==player){
return 1;
}
}
}
// 右上到左下方向
for(i=0; i<=BOARD_SIZE-6; i++){
for(j=5; j<BOARD_SIZE; j++){
if(board[i][j]==player && board[i+1][j-1]==player && board[i+2][j-2]==player &&
board[i+3][j-3]==player && board[i+4][j-4]==player && board[i+5][j-5]==player){
return 1;
}
}
}
return 0;
}
// 打印棋盘
void print_board(){
for(int i=0; i<BOARD_SIZE; i++){
for(int j=0; j<BOARD_SIZE; j++){
if(board[i][j]==1){
printf("O ");
}else if(board[i][j]==2){
printf("X ");
}else{
printf(". ");
}
}
printf("\n");
}
printf("\n");
}
int main(){
int player = 1; // 当前玩家
int x, y; // 落子坐标
init_board(); // 初始化棋盘
print_board(); // 打印棋盘
while(1){
printf("Player %d's turn, please enter the position to place the piece (x,y): ", player);
scanf("%d,%d", &x, &y); // 输入落子坐标
if(x<0 || x>=BOARD_SIZE || y<0 || y>=BOARD_SIZE || board[x][y]!=0){
printf("Invalid position, please try again.\n");
continue;
}
board[x][y] = player; // 落子
print_board(); // 打印棋盘
if(check_win(player)){ // 判断胜利
printf("Player %d wins!\n", player);
break;
}
if(player==1){
player = 2;
}else{
player = 1;
}
}
return 0;
}
```
这个算法实现了一个简单的六子棋博弈,玩家可以依次在棋盘上落子,当其中一方连成六子时即可获胜。
阅读全文