(C语言)一担挑游戏
【题目】
【要求】
简单计算机模拟期棋盘对弈。其中棋盘左上角坐标为(1,1),右下角坐标为(3,3)。
游戏规则如下:
(1)计算机移动时,使用相应函数扫描棋盘矩阵,寻找未占单元:发现空单元之后,置为“O”,未发现时,报告平局后推出。
(2)轮到对弈者时,使用想要函数要求对弈者回答想把“X"放在哪里。
(3)谁先三点连成一线了,则报告谁胜出。
(4)计算机与对弈者每下一步棋都会使相应位置变为“O”和“X”,便于在屏上显示矩阵。
【提示】
棋盘位置用2维数组代表,初始状态每一位置均应为“ ”(空)。其分隔线(即棋盘线)可用————或||来分隔。
【代码】
下载此代码
点此留言
#include "stdio。
h"
#include "stdlib。h"
void init_qipan();
void player_move();
void computer_move();
void disp();
char check();
int main(void)
{
char done;
done=' ';
init_qipan();
do
{
disp();
player_move();
done=check();
if(done!=' ')
break;
computer_move();
done=check();
}
while(done==' ');
if(done=='X')
printf("You won!
");
else
printf("You lost!
");
disp();
getchar();
return 0;
}
char qipan[3][3];
void init_qipan(void)
{
int i,j;
for(i=0;i<3;i )
for(j=0;j<3;j )
qipan[i][j]=' ';
}
void player_move(void)
{
int x,y;
printf("It's your turn:");
scanf("%d%*c%d",&x,&y);
x--;y--;
if(qipan[x][y]!=' ')
{
printf("Error, try again。
");
player_move();
}
else qipan[x][y]='X';
}
void computer_move(void)
{
int i,j;
for(i=0;i<3;i )
{
for(j=0;j<3;j )
if(qipan[i][j]==' ')
break;
if(qipan[i][j]==' ')
break;
}
if(i*j==9)
{
printf("pingju
");
exit(0);
}
else
qipan[i][j]='0';
}
void disp(void)
{
int t;
for(t=0;t<3;t )
{
printf("%c|%c|%c ",qipan[t][0],qipan[t][1],qipan[t][2]);
if(t!=2)
printf("
-|-|-
");
}
printf("
");
}
char check(void)
{
int i;
for(i=0;i<3;i )
if(qipan[i][0]==qipan[i][1]&&qipan[i][0]==qipan[i][2])
return qipan[i][0];
for(i=0;i<3;i )
if(qipan[0][i]==qipan[1][i]&&qipan[0][i]==qipan[2][i])
return qipan[0][i];
for(i=0;i<3;i )
if(qipan[0][0]==qipan[1][1]&&qipan[0][0]==qipan[2][2])
return qipan[0][0];
for(i=0;i<3;i )
if(qipan[0][2]==qipan[1][1]&&qipan[1][1]==qipan[2][0])
return qipan[0][2];
return ' ';
}
--------------------------------------------------------------------------------。
全部