C/C++知识点之C语言实现的三子棋游戏
小标 2018-10-10 来源 : 阅读 1369 评论 0

摘要:本文主要向大家介绍了C/C++知识点之C语言实现的三子棋游戏,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍了C/C++知识点之C语言实现的三子棋游戏,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

头文件

#ifndef __game_h__
#define __game_h__
#include 
#include 
#include 
#include 
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;}

       }
    
  }//判别函数二
 本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 1
看完这篇文章有何感觉?已经有2人表态,50%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程