早教吧作业答案频道 -->其他-->
一担挑游戏简单计算机模拟棋盘对弈。其中棋盘左上角坐标为(1,1),右下角坐标为(3,3)。游戏规则如下:(1)计算机移动时,使用相应函数扫描棋盘矩阵,寻找未占单元,发现空单
题目详情
一担挑游戏 简单计算机模拟棋盘对弈。其中棋盘左上角坐标为(1,1),右下角坐标为(3,3)。
游戏规则如下:
(1)计算机移动时,使用相应函数扫描棋盘矩阵,寻找未占单元,发现空单元后,置为"0",未发现时,报告平局退出。
(2)轮到对弈者时,使用相应函数要求对弈者回答想把"X"放在哪里。
(3)谁先三点连成一线了,则报告谁胜出。
(4)计算机与对弈者每下一步都会使相应位置变为"0"和"X",便于在屏上显示矩阵。
游戏规则如下:
(1)计算机移动时,使用相应函数扫描棋盘矩阵,寻找未占单元,发现空单元后,置为"0",未发现时,报告平局退出。
(2)轮到对弈者时,使用相应函数要求对弈者回答想把"X"放在哪里。
(3)谁先三点连成一线了,则报告谁胜出。
(4)计算机与对弈者每下一步都会使相应位置变为"0"和"X",便于在屏上显示矩阵。
▼优质解答
答案和解析
刚好我大一的时候课程设计就是写的这个。
#include
#include
void main()
{
int t,n,row,num,q=0,b,i,winner=0,j;
char a[3][3]={'1','2','3','4','5','6','7','8','9'};
printf("******************************************************\n");
printf("******************欢迎进入一担挑游戏******************\n");
printf("******************************************************\n");
printf("\n");
printf("进入游戏请按1,结束游戏请按0\n");
scanf("%d",&t);
while(t)
{
for(i=0;i<9&&winner==0;i++)
{
b=q%2+1;
printf(" %c | %c | %c\n",a[0][0],a[0][1],a[0][2]);
printf("---+---+---\n");
printf(" %c | %c | %c\n",a[1][0],a[1][1],a[1][2]);
printf("---+---+---\n");
printf(" %c | %c | %c\n",a[2][0],a[2][1],a[2][2]);
printf("玩家%d请选择\n",b);
q++;
scanf("%d",&n);
while(n<1||n>9)
{
printf("选择错误!无该位置.请重新选择\n");
scanf("%d",&n);
}
row=n/3;
num=n%3-1;
while(a[row][num]=='o'||a[row][num]=='x')
{
printf("选择错误!该位置已经被选择过.请重新选择\n");
scanf("%d",&n);
row=n/3;
num=n%3-1;
}
while(n<1||n>9)
{
printf("选择错误!无该位置.请重新选择\n");
scanf("%d",&n);
}
row=n/3;
num=n%3-1;
if(b==1)a[row][num]='o'; /*判断是否已经有玩家胜出*/
else a[row][num]='x';
if((a[0][0]==a[1][1]&&a[1][1]==a[2][2]&&a[0][0]=='o')||(a[0][2]==a[1][1]&&a[1][1]==a[2][0]&&a[0][2]=='o'))
winner=1;
else if((a[0][0]==a[1][1]&&a[1][1]==a[2][2]&&a[0][0]=='x')||(a[0][2]==a[1][1]&&a[1][1]==a[2][0]&&a[0][2]=='x'))
winner=2;
for(j=0;j<3;j++)
{
if((a[j][0]==a[j][1]&&a[j][1]==a[j][2]&&a[j][0]=='o')||(a[0][j]==a[1][j]&&a[1][j]==a[2][j]&a[0][j]=='o'))
winner=1;
else if((a[j][0]==a[j][1]&&a[j][1]==a[j][2]&&a[j][0]=='x')||(a[0][j]==a[1][j]&&a[1][j]==a[2][j]&a[0][j]=='x'))
winner=2;
}
}
if(winner!=0)printf("player%d胜利!\n",winner);
else printf("平局!\n");
printf("继续游戏请按1,结束游戏请按0\n");
scanf("%d",&t);
}
}
#include
#include
void main()
{
int t,n,row,num,q=0,b,i,winner=0,j;
char a[3][3]={'1','2','3','4','5','6','7','8','9'};
printf("******************************************************\n");
printf("******************欢迎进入一担挑游戏******************\n");
printf("******************************************************\n");
printf("\n");
printf("进入游戏请按1,结束游戏请按0\n");
scanf("%d",&t);
while(t)
{
for(i=0;i<9&&winner==0;i++)
{
b=q%2+1;
printf(" %c | %c | %c\n",a[0][0],a[0][1],a[0][2]);
printf("---+---+---\n");
printf(" %c | %c | %c\n",a[1][0],a[1][1],a[1][2]);
printf("---+---+---\n");
printf(" %c | %c | %c\n",a[2][0],a[2][1],a[2][2]);
printf("玩家%d请选择\n",b);
q++;
scanf("%d",&n);
while(n<1||n>9)
{
printf("选择错误!无该位置.请重新选择\n");
scanf("%d",&n);
}
row=n/3;
num=n%3-1;
while(a[row][num]=='o'||a[row][num]=='x')
{
printf("选择错误!该位置已经被选择过.请重新选择\n");
scanf("%d",&n);
row=n/3;
num=n%3-1;
}
while(n<1||n>9)
{
printf("选择错误!无该位置.请重新选择\n");
scanf("%d",&n);
}
row=n/3;
num=n%3-1;
if(b==1)a[row][num]='o'; /*判断是否已经有玩家胜出*/
else a[row][num]='x';
if((a[0][0]==a[1][1]&&a[1][1]==a[2][2]&&a[0][0]=='o')||(a[0][2]==a[1][1]&&a[1][1]==a[2][0]&&a[0][2]=='o'))
winner=1;
else if((a[0][0]==a[1][1]&&a[1][1]==a[2][2]&&a[0][0]=='x')||(a[0][2]==a[1][1]&&a[1][1]==a[2][0]&&a[0][2]=='x'))
winner=2;
for(j=0;j<3;j++)
{
if((a[j][0]==a[j][1]&&a[j][1]==a[j][2]&&a[j][0]=='o')||(a[0][j]==a[1][j]&&a[1][j]==a[2][j]&a[0][j]=='o'))
winner=1;
else if((a[j][0]==a[j][1]&&a[j][1]==a[j][2]&&a[j][0]=='x')||(a[0][j]==a[1][j]&&a[1][j]==a[2][j]&a[0][j]=='x'))
winner=2;
}
}
if(winner!=0)printf("player%d胜利!\n",winner);
else printf("平局!\n");
printf("继续游戏请按1,结束游戏请按0\n");
scanf("%d",&t);
}
}
看了一担挑游戏简单计算机模拟棋盘对...的网友还看了以下:
在机械波传播的过程中,机械能一定守恒.为什么不对?“能量守恒定律”应该同样适用于有摩擦、损耗能量的 2020-05-13 …
广数928TEA系统机床移动的距离与实际移动距离有误差请问要怎么调整?机床显示器上显示移动10MM 2020-05-16 …
以下哪一种身份验证机制为移动用户带来验证问题?A、可重复使用的密码机制B、一次性口令机制。C、 2020-05-26 …
如图所示为电工师傅用移动式升降机抢修一条动力外线,已知升降机的箱蓝重900N,用升降机将重600N 2020-06-13 …
我市某中学组织学生到长沙世界之窗春游,小明同学用照相机为另一同学拍全身照时,不小心让一滴泥水溅在了 2020-06-22 …
下列说法中正确的是()A.有机械振动一定会产生机械波B.有机械波一定有机械振动C.只要有介质,就一 2020-06-22 …
某型号挖掘机的质量为3吨,发动机的总功率是20kW,挖掘机在6秒内将装满铲斗质量为0.75吨的泥石 2020-06-26 …
某公司业务员小张、小王分别配发了单向收费移动电话(手机)各一部,已知小张手机的收费标准为:月租费2 2020-06-27 …
移动支付是指使用手机等移动终端进行购物支付的一种非接触结算方式。随着智能手机的快速普及,移动支付正 2020-07-12 …
某单缸四冲程汽油机的汽缸活塞面积为32cm²,一个冲程活塞在汽缸中移动的距离是80mm某单缸四冲程 2020-07-18 …