2019c语言课程设计

三,棋盘游戏
简单计算机模拟期棋盘对弈。其中棋盘左上角坐标为(1,1),右下角坐标为(3,3)。游戏规则如下:
(1)计算机移动时,使用相应函数扫描棋盘矩阵,寻找未占单元:发现空单元之后,置为“O”,未发现时,报告平局后推出。
(2)轮到对弈者时,使用想要函数要求对弈者回答想把“X"放在哪
(3)谁先三点连成一线了,则报告谁胜出
(4)计算机与对弈者每下一步棋都会使相应位置变为“O”和“X”,便于在屏上显示矩阵。

#include <stdio.h>
#include <stdlib.h>
void init_qipan();
void player_move();
void computer_move();
void disp();
char check();
char qipan[3][3];
int main(void)
{
 system("cls");
 system("color 3f");
 system("cls");
 printf("******************欢迎来到人机对战棋盘游戏*********************\n");
 char done;
 done = ' ';
 init_qipan();
 do {
  disp();
  player_move();
  done = check();
  if (done != ' ')break;
  computer_move();
  done = check();
 } while (done == ' ');
 if (done == 'X')
  printf("你赢了!\n");
 else
  printf("你输了! \n");
 disp();
 getchar();
 return 0;
}
void disp()
{
 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("\n-|-|-\n");
 }
 printf("\n");
}
void init_qipan()
{
 int i, j;
 for (i = 0; i < 3; i++)
 {
  for (j = 0; j < 3; j++)
   qipan[i][j] = ' ';
 }
}
void player_move()
{
 int x, y;
 printf("It's your turn:");
 scanf("%d%*c%d", &x, &y);
 x--; y--;
 if (qipan[x][y] != ' ')
 {
  printf("Error, try again.\n");
  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\n");
  exit(0);
 }
 else
  qipan[i][j] = '0';
}
char check()
{
 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 ' ';
}

不足之处,请多指教!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值