【无标题】写了第一个比较长的程序,一个简单的井字棋小游戏₍˄·͈༝·͈˄*₎◞ ̑̑

 

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

#define ROW 3

#define COL 3

//判断棋盘满否,返回1表示棋盘满,0返回没满

int IsFull(char board[ROW][COL],int row,int col){

 int i=0;

 int j=0;

 for(i=0;i<row;i++){

  for(j=0;i<col;j++){

   if(board[i][j]==' '){

    return 0 ;

   }

   else if(board[i][j]!=' '){

   }

  }

 }

 return 1;

}

 

//判断输赢

char Iswin(char board[ROW][COL],int row, int col){

 int i =0;

 for(i=0;i<row;i++){

  //横

  if(board[i][0]==board[i][1]&&board[i][1]==board[i][2]&&board[i][1]!=' ')

  {

   return board[i][0];

  }

 }

 for(i=0;i<col;i++){

  //列

  if(board[0][i]==board[1][i]&&board[0][i]==board[2][i]&&board[0][i]!=' ')

  {

   return board[0][i];

  } 

 }

 //判断斜线

 if(board[0][0]==board[1][1]&&board[1][1]==board[2][2]&&board[1][1]!=' ')

 {return board[0][0];

  

 }

 if(board[2][0]==board[1][1]&&board[2][0]==board[0][2]&&board[2][0]!=' '){

  return board[2][0];

 }

 //判断平局

 if(IsFull(board,ROW,COL)==1){

  return 'q';

 

 }

  return 'c';

 

 

}

//电脑下棋

void ComputerMove(char board[ROW][COL],int row,int col){

 int x =0;

 int y =0;

 printf("电脑走\n");

 while(1){

 x =rand()%row;

 y =rand()%col;

 if(board[x][y]==' '){

  board[x][y]='#';

  break;

 }

}

}

//玩家下棋

void PlayerMove(char board[ROW][COL],int row,int col){

 int x =0;

 int y =0;

 printf("玩家走:\n");

 while(1){

 printf("请输入要下的坐标:");

 scanf("%d%d",&x,&y);

 //判断坐标合法性

 if(x>=1&&x<=row && y>=1&&y<=col){

  if(board[x-1][y-1]==' '){

   board[x-1][y-1]='*';

   break;

   }

   else{

    printf("该坐标已经有棋子");

   }

  

 }

 else{

  printf("非法坐标,重新输入\n"); 

  }

}

}

//打印棋盘

void DisplayBoard(char board[ROW][COL],int row, int col){

 int i =0;

 for(i =0;i<row;i++){

  int j =0;

  for(j=0;j<col;j++){

   printf(" %c ",board[i][j]);

   if(j<col)

    printf("|");

  }

  printf("\n");

  if(i<row-1){

   for(j=0;j<col;j++){

    printf("---");

    if(j<col)

     printf("|");

   }

   printf("\n");

  }

 }

 

 

}

//初始化棋盘

void InitBoard(char board[ROW][COL], int row, int col) {

 int i = 0;

 int j = 0;

 for (i = 0; i < row; i++) {

  for (j = 0; j < col; j++) {

   board[i][j] = ' ';

  }

 }

 

}

//游戏主题

void game() {

 char board[ROW][COL] = {0};

 //初始化棋盘

 InitBoard(board, ROW, COL);

 //打印棋盘

    DisplayBoard(board, ROW, COL);

    //下棋

    while(1){

  //玩家下棋

  PlayerMove(board,ROW,COL);

  DisplayBoard(board,ROW,COL);

  //判断玩家是否赢

  char ret;

  Iswin(board,ROW,COL);//Iswin告诉 电脑赢-# 玩家赢-* 平局 继续-C

  ret=Iswin(board,ROW,COL);

  if(ret=='c'){

  }

  if(ret=='*'){

   printf("玩家赢\n");

   break;

  }

  else if(ret=='#'){

   printf("电脑赢\n");

   break;

  }

  else if(ret=='q')

  {

      printf("平局\n");

      break;

   }

  //电脑下棋

  ComputerMove(board,ROW,COL);

  DisplayBoard(board,ROW,COL);

  //判断电脑是否赢

   Iswin(board,ROW,COL);//Iswin告诉 电脑赢-# 玩家赢-* 平局 继续-C

    ret=Iswin(board,ROW,COL);

    if(ret=='c'){

    }

    if(ret=='*'){

     printf("玩家赢\n");

     break;

    }

    else if(ret=='#'){

     printf("电脑赢\n");

     break;

    }

    else if(ret=='q')

    {

        printf("平局\n");

        break;

     }

  

  

 }

 

}

//菜单

void menu () {

 printf("_____________________________\n");

 printf("____输入1 play 输入0 out____\n");

 printf("_____________________________\n");

 

}

void test() {

 int input;

 srand((unsigned int) time(NULL));

 scanf("%d", &input);

 do {

  switch (input) {

   case 1:

    printf("__________开始游戏__________\n");

    game();

    break;

    

    

   case 0:

    printf("__________退出game__________\n");

    break;

   default:

    printf("__________输入有误__________\n");

    break;

  }

 } while (input != 1 && input != 0);

}

int main() {

 menu();

 test();

 return 0;

}829e2a5edc634bdc92d59b0b1539d10e.png

 

 

  • 52
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值