写了一个五子棋游戏,不过没有完善,只有横向判断胜利,其余的还没有加,求指导!!!
//编写一个控制台下的五子棋游戏#include <stdio.h>
//定义一个二维数组表示棋盘
int piece[16][16];
//实现绘制棋盘的函数
void paint(void);
//实现下棋功能函数
void play(void);
//判断是否获胜
int judge(int player);
int main(void) {
//绘制棋盘
paint();
//开始启动游戏
play();
return 0;
}
//判断是否获胜
int judge(int player) {
//1.横向判断
int i = 0, j = 0;
for(i = 0; i < 16; i++){
for(j = 0; j < 12; j++)
{
if((piece[i][j]&piece[i][j+i]&piece[i][j+2]&piece[i][j+3]&piece[i][j+4]) == player) {
return 1;//表示获胜
}
}
}
//2.纵向判断
//3.左上到右下的判断
//4.右上到左下的判断
return 0;//表示没有获胜
}
//实现下棋功能函数
void play(void) {
int player = 0;//表示黑方
while(1) {
int x = 0, y = 0;
if(0 == player) {
printf("请黑方输入落子坐标:\n");
scanf("%d%d", &x, &y);
piece[x][y] = 1;
//从新绘制棋盘
paint();
//判断是否获胜
if(judge(player+1)) {
printf("黑方胜利,游戏结束\n");
break;
}
//切换下子方到白方
player = 1;
}
if(1 == player){
printf("请白方输入落子坐标:\n");
scanf("%d%d",&x, &y);
piece[x][y] = 2;
//从新绘制棋盘
paint();
//判断是否获胜
if(judge(player+1)) {
printf("白方胜利,游戏结束\n");
break;
}
//切换下子方
player = 0;
}
}
}
//实现绘制棋盘的函数
void paint(void) {
//1.绘制棋盘中的第一行坐标
int i = 0;
int j = 0;
for (i = 0; i < 17; i++) {
if(0 == i) {
printf(" ");
}
else
{
printf("%x ", i - 1);
}
}
printf("\n");
//2.绘制棋盘中剩余的部分内容
for(i = 0; i < 16; i++)
{
printf("%x ",i);
for(j = 0; j < 16; j++)
{
if(0 == piece[i][j]) {
printf("* ");
}
else if(1 == piece[1][j]) {
printf("@ ");
}
else{
printf("& ");
}
}
printf("\n");
}
}