c语言五子棋应该用什么字符集,用c语言设计五子棋游戏

以下是游戏代码

/*************************主模块*********************/

/********棋盘大小********/

#define N 19

/********1为A子,2为B子********/

int pieces[N][N]={0};

/********1为A子,2为B子********/

int flag=1;

/****棋盘模块*******/

void DrawPanel()

{

int count=1;          /*计数*/

int i,j;

system("CLS");        /*清屏*/

for(i=0;i<=N;i++)

{

if(i==0)

{

printf("  ");

}else

{

printf("%3d",count);

count++;

}

}

printf("\n");

printf("\n");

count=1;      /*重置count变量为1*/

for(i=0;i

{

for(j=-1;j

{

if(j==-1)          /*如果是第一列,则输出字符*/

{

printf("%2d",count);

count++;

}

else         /*根据落子情况输出相应的符号标志*/

{

if(pieces[i][j]==0)

{

printf("  .");

}else if(pieces[i][j]==1)

{

printf(" ①");     /*为A子*/

}else if(pieces[i][j]==2)

{

printf(" ②");

}

}

}

printf("\n");

}

}

/****************下棋模块****************/

/********走棋行*****/

int zouqihang()

{

int x;

if(flag==1)

{

printf("玩家A①");

}else

{

printf("玩家B②");

}

printf("请输入要走棋子所在行数!\n");

printf("x=");

scanf("%d",&x);

while(x>N-1||x<1)

{

printf("errorn");

if(flag==1)

{

printf("玩家A①");

}else

{

printf("玩家B②");

}

printf("请出入要走棋子所在行数!\n");

printf("x=");

scanf("%d",&x);

}

return x;

}

/********走棋列*****/

int zouqilie()

{

int y;

if(flag==1)

{

printf("玩家A①");

}else

{

printf("玩家B②");

}

printf("请输入要走棋子所在列数!\n");

printf("y=");

scanf("%d",&y);

while(y>N-1||y<1)

{

printf("errorn");

if(flag==1)

{

printf("玩家A①");

}else

{

printf("玩家B②");

}

printf("请出入要走棋子所在列数!\n");

printf("y=");

scanf("%d",&y);

}

return y;

}

/****************信息模块***************/

/**********和棋*******/

void heqi()

{

system("CLS");     /*清屏*/

printf("***************************************************\n");

printf("*  *\n");

printf("*  *\n");

printf("*  *\n");

printf("*  *\n");

printf("*heqi  *\n");

printf("*  *\n");

printf("*  *\n");

printf("*  *\n");

printf("***************************************************\n");

}

/*******游戏结束********/

void over()

{

system("CLS");     /*清屏*/

printf("***************************************************\n");

printf("*  *\n");

printf("*  *\n");

printf("*  *\n");

printf("*  *\n");

printf("*Game Over  *\n");

printf("*  *\n");

printf("*  *\n");

printf("*  *\n");

printf("***************************************************\n");

}

/*******游戏开始*******/

void welcome()

{

system("CLS");     /*清屏*/

printf("***************************************************\n");

printf("*  *\n");

printf("*  *\n");

printf("*  *\n");

printf("*  *\n");

printf("*welcome  *\n");

printf("*  *\n");

printf("*  *\n");

printf("*  *\n");

printf("***************************************************\n");

printf("输入0, 五子棋游戏开始!");

getchar();

}

/***********判断输赢模块*************/

/*返回1表示A赢,返回2表示B赢,否则继续*/

int check(int x,int y)

{

/*检查行*/

int count=1;

int i=x,j=y;

j++;

/*向右数*/

while(j

{

if(pieces[i][j]==pieces[x][y])    /*判断是否有落子及是否为同一玩家*/

{

count++;

}else       /*无落子或者不是同一玩家*/

{

break;      /*退出循环*/

}

j++;

}

/*向左数*/

j=y-1;

while(j>=0&&count<5)

{

if(pieces[i][j]==pieces[x][y])    /*判断是否有落子及是否为同一玩家*/

{

count++;

}else       /*无落子或者不是同一玩家*/

{

break;      /*退出循环*/

}

j--;

}

if(count==5)      /*行程五个落子连成一条线的状态*/

{

return pieces[x][y];      /*返回pieces[x][y]的值*/

}

/*检查列*/

i=x;

j=y;

count=1;

/*往下数*/

i+=1;

while(i

{

if(pieces[i][j]==pieces[x][y])    /*判断是否有落子及是否为同一玩家*/

{

count++;

}else       /*无落子或者不是同一玩家*/

{

break;      /*退出循环*/

}

i++;

}

/*往上数*/

i=x-1;

while(i>=0&&count<5)

{

if(pieces[i][j]==pieces[x][y])    /*判断是否有落子及是否为同一玩家*/

{

count++;

}else       /*无落子或者不是同一玩家*/

{

break;      /*退出循环*/

}

i--;

}

if(count==5)      /*判断五子一线*/

{

return pieces[x][y];     /*返回pieces[x][y]的值*/

}

/*左斜行*/

i=x;

j=y;

count=1;

/*左斜往上*/

i=i-1;

j=j-1;

while(j>=0&&i>=0&&count<5)

{

if(pieces[i][j]==pieces[x][y])    /*判断是否有落子及是否为同一玩家*/

{

count++;

}else       /*无落子或者不是同一玩家*/

{

break;      /*退出循环*/

}

i--;

j--;

}

/*左斜往下*/

i=x+1;

j=y+1;

while(i

{

if(pieces[i][j]==pieces[x][y])    /*判断是否有落子及是否为同一玩家*/

{

count++;

}else       /*无落子或者不是同一玩家*/

{

break;      /*退出循环*/

}

i++;

j++;

}

if(count==5)     /*判断是否形成五子一线*/

{

return pieces[x][y];

}

/*右斜行*/

i=x;

j=y;

count=1;

/*右斜向上*/

i=x-1;

j=y+1;

while(i>=0&&j

{

if(pieces[i][j]==pieces[x][y])    /*判断是否有落子及是否为同一玩家*/

{

count++;

}else       /*无落子或者不是同一玩家*/

{

break;      /*退出循环*/

}

i--;

j++;

}

/*右斜向下*/

i=x+1;

j=y-1;

while(i=0&&count<5)

{

if(pieces[i][j]==pieces[x][y])    /*判断是否有落子及是否为同一玩家*/

{

count++;

}else       /*无落子或者不是同一玩家*/

{

break;      /*退出循环*/

}

i++;

j--;

}

if(count==5)    /*判断是否形成五子一线*/

{

return pieces[x][y];

}

return 0;     /*未形成五子一线,返回0*/

}

/********主模块********/

void main()

{

int x,y;        /*落子行列坐标*/

int winner;     /*代表赢家*/

int countpieces=0;      /*计算落子数*/

welcome();        /*欢迎界面*/

DrawPanel();      /*画棋盘*/

while(countpieces

{

/*获取下子的行列坐标*/

x=zouqihang();

y=zouqilie();

x=x-1;

y=y-1;

/*判断是否可以落子*/

if(pieces[x][y]==0)

{

/*可以落子*/

pieces[x][y]=flag;

countpieces++;

/*改变游戏状态*/

if(flag==1)

{

flag=2;

}else

{

flag=1;

}

/*检查判断输赢和游戏是否继续*/

winner=check(x,y);

if(winner==1)

{

/*A赢了*/

printf("恭喜A赢了!\n");

system("pause");

break;

}else if(winner==2)

{

/*B赢了*/

printf("恭喜B赢了!\n");

system("pause");

break;

}

}else

{

/*不能落子*/

printf("ERROR!\n");

printf("落子行列错误,请随意按按键重新输入!\n");

getchar();

getchar();

}

/*重画棋盘*/

DrawPanel();

}

if(countpieces==N*N)

{

heqi();    /*和棋*/

system("pause");

}

else

{

over();     /*游戏结束*/

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值