C语言实现的三子棋游戏

头文件

#ifndef __game_h__
#define __game_h__
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
extern void Get_board(char a[][3],int LINE,int LIST);
extern void Player_operation(char a[][3],int LINE,int LIST);
extern void Computer_operation(char a[][3],int LINE,int LIST);
extern void Init(char a[][3],int LINE,int LIST);
extern int Discriminant_board(char a[][3],int LINE,int LIST); 
extern int Winning_or_losing_discriminant(char a[][3],int LINE,int LIST);
#endif

游戏测试模块

#include "game.h"
 void menu()
{printf("######################\n");
 printf("####1.PALY  2.EXIT####\n");
 printf("######################\n");
}

void game()
{
      int  line = 3;
      int  list = 3;
      char board[][3] ={"a"};
      Init(board,line,list);
    while(1)
{ 
      Get_board(board,line,list);
          
   if(1==Winning_or_losing_discriminant(board,line,list))
  { printf("玩家赢\n");Sleep(2000);Init(board,line,list); Get_board(board,line,list);}

  if(2==Winning_or_losing_discriminant(board,line,list))
  {  printf("电脑赢\n");Sleep(2000);Init(board,line,list); Get_board(board,line,list);}

  if(Discriminant_board(board,line,list))
    {if(Winning_or_losing_discriminant(board,line,list)==0)
      { printf("平局\n");Sleep(2000);Init(board,line,list); Get_board(board,line,list);}}
     
     Player_operation(board,line,list);



        if(1==Winning_or_losing_discriminant(board,line,list))
  { printf("玩家赢\n");Sleep(2000);Init(board,line,list); Get_board(board,line,list);}

  if(2==Winning_or_losing_discriminant(board,line,list))
  {  printf("电脑赢\n");Sleep(2000);Init(board,line,list); Get_board(board,line,list);}

  if(Discriminant_board(board,line,list))
    {if(Winning_or_losing_discriminant(board,line,list)==0)
      { printf("平局\n");Sleep(2000);Init(board,line,list); Get_board(board,line,list);}}

     Computer_operation(board,line,list);
    }
      }

int main()
{ 
 int input = 0;
 srand((unsigned int)time(NULL));
 menu();
 do{
 printf("please input:>\n");
 scanf_s("%d",&input);
    switch(input)
    {case 1:
           game();
           break;
        case 2:
            printf("退出程序\n");
             goto end;
        default:
            printf("输入错误\n");
    }
  
  }while(1);
end:
 system("pause");
  return 0;
}

游戏实现函数模块

```
void Init(char a[][3],int LINE,int LIST)
{ int i = 0;
int j = 0;
for(i=0; i<LINE; i++)
for(j=0; j<LIST; j++)
a[i][j] = ' ';

  }//初始化棋盘

   void Get_board(char a[][3],int LINE,int LIST)
  {int i = 0;
  int j = 0;
  for(i=0; i<LINE; i++)
  { for(j=0; j<LIST; j++)
         {  printf("_%c_",a[i][j]);
     if(j<LIST-1)
  printf("|");
            
  }
 printf("\n");
 }

}//打印棋盘


 void Player_operation(char a[][3],int LINE,int LIST)
 { int x = 1;
   int y = 1;
   printf("玩家请走:>\n");

rp: scanf("%d%d",&x,&y);
if((x<4&&x>0)&&(y<4&&y>0)&&a[x-1][y-1]==' ')
a[x-1][y-1] = 'X';
else if(a[x-1][y-1]!=' ')
{printf("输入错误,当前已被占用,请重新输入:>\n");
goto rp;}
else
printf("err\n");

 }//玩家操作


 void Computer_operation(char a[][3],int LINE,int LIST)
 {int x = 0;
  int y = 0;
  printf("电脑操作:>\n");
  while(1)
  {x = rand()%3;
   y = rand()%3;
  if((a[x][y]!='X')&&(a[x][y]!='0'))
  {a[x][y] = '0';
    break;
   }
  }
 }//电脑操作


  int Discriminant_board(char a[][3],int LINE,int LIST)
  { int i = 0;
    int j = 0;
    int num = 0;
    for(i=0; i<LINE; i++)
    {   for(j=0; j<LIST; j++)
        {  if(a[i][j]==' ')
           num++;
            }
    }
    if(num)
    return 0;
    if(!num)
    return 1;
  }//判别式函数一

  int Winning_or_losing_discriminant(char a[][3],int LINE,int LIST)
  { int i = 0;
    int j = 0;
    for(i=0; i<LINE; i++)
      { if(((a[i][0]=='X')&&(a[i][1]=='X')&&(a[i][2]=='X'))||
           ((a[0][i]=='X')&&(a[1][i]=='X')&&(a[2][i]=='X'))||
           ((a[0][0]=='X')&&(a[2][2]=='X')&&(a[1][1]=='X'))||
           ((a[0][2]=='X')&&(a[1][1]=='X')&&(a[2][0]=='X')))
           { return 1;}
        if(((a[i][0]=='0')&&(a[i][1]=='0')&&(a[i][2]=='0'))||
           ((a[0][i]=='0')&&(a[1][i]=='0')&&(a[2][i]=='0'))||
           ((a[0][0]=='0')&&(a[2][2]=='0')&&(a[1][1]=='0'))||
           ((a[0][2]=='0')&&(a[1][1]=='0')&&(a[2][0]=='0')))
           {return 2;}
        else
           {return 0;}

       }
    
  }//判别函数二

猜你喜欢

转载自www.cnblogs.com/liuzhengkai/p/9096954.html