如何使用C语言代码实现简单三子棋游戏
作者
这篇文章主要介绍如何使用C语言代码实现简单三子棋游戏,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
编译软件VS2019
c语言实现三子棋运用到了二维数组的知识,在编写三子棋程序时用到了多文件编译(不是必须的,但是使用多文件编译会增加代码的可读性),首先我们先建立一个头文件和两个源文件·:
test.c//主程序函数实现 game.c//主要用于自定义函数的定义 game.h//声明自定义函数
主要代码实现
test.c
调用各个功能的函数
#define_CRT_SECURE_NO_WARNINGS1 #include<stdio.h>//#include<>:编译器直接从系统类库目录里查找头文件: #include"game.h"//#include"":默认从项目当前目录查找头文件,所谓项目当前目录,就是项目工程文件所在的目录 voidmenu(){ printf("*********************************\n"); printf("*************1.play**********\n"); printf("*************0.exit**********\n"); printf("*********************************\n"); } voidgame(){ //三子棋过程 charboard[row][col];//棋盘数组 //初始化棋盘--board的元素都给成空格 InitBoard(board,row,col); //打印棋盘 DisplayBoard(board,row,col); //下棋 charret=0; while(1){ PlayMove(board,row,col); DisplayBoard(board,row,col); //判断输赢 ret=IsWin(board,row,col); if(ret!='C'){ break; } ComputerMove(board,row,col); DisplayBoard(board,row,col); ret=IsWin(board,row,col); if(ret!='C'){ break; } } if(ret=='*') printf("玩家赢\n"); elseif(ret=='#') printf("电脑赢\n"); else printf("和局\n"); DisplayBoard(board,row,col); } intmain(){ intinput=0; srand((unsignedint)time(NULL)); do{ menu(); printf("请选择>"); scanf("%d",&input); switch(input) { case1: game(); break; case0: printf("退出游戏\n"); break; default: printf("选择错误\n"); break; } }while(input); return0; }
game.c
主程序当中的自定义函数的定义
#define_CRT_SECURE_NO_WARNINGS #include"game.h" voidInitBoard(charboard[row][col],intROW,intCOL){ for(inti=0;i<ROW;i++){ for(intj=0;j<COL;j++){ board[i][j]=''; } } } voidDisplayBoard(charboard[row][col],intROW,intCOL){ for(inti=0;i<ROW;i++){ //打印数据 for(intj=0;j<COL;j++){ printf("%c",board[i][j]); if(j<COL-1) printf("|"); } printf("\n"); //打印分割行 if(i<ROW-1){ for(intj=0;j<COL;j++){ printf("---"); if(j<COL-1) printf("+"); } } printf("\n"); } } voidPlayMove(charboard[row][col],intROW,intCOL){ printf("玩家下棋:>\n"); intx=0; inty=0; 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("坐标被占用,请重新输入\n"); } } else printf("坐标非法,超出范围\n"); } } voidComputerMove(charboard[row][col],intROW,intCOL){ intx=0; inty=0; printf("电脑走:>\n"); while(1){ x=rand()%ROW; y=rand()%COL; if(board[x][y]==''){ board[x][y]='#'; break; } } } //判断棋盘是否已满 intfull(charboard[row][col],intROW,intCOL){ inti=0; intj=0; for(i=0;i<ROW;i++){ for(j=0;j<COL;j++){ if(board[i][j]=='') return0; } } return1; } charIsWin(charboard[row][col],intROW,intCOL){ //1.判断输赢 //三行 inti=0; for(i=0;i<ROW;i++){ if(board[i][0]==board[i][1]&&board[i][1]==board[i][2]&&board[i][0]!=''){ returnboard[i][0]; } } //三列 for(i=0;i<COL;i++){ if(board[0][i]==board[1][i]&&board[1][i]==board[2][i]&&board[0][i]!=''){ returnboard[0][i]; } } //对角线 if(board[0][0]==board[1][1]&&board[1][1]==board[2][2]&&board[0][0]!=''){ returnboard[0][0]; } elseif(board[2][0]==board[1][1]&&board[1][1]==board[0][2]&&board[2][0]!='') returnboard[1][1]; //2.判断平局 elseif(full(board,ROW,COL)==1) return'Q'; //3.游戏继续 else return'C'; }
game.h
用于声明自定义函数
#pragmaonce #include<stdio.h> #include<stdlib.h> #include<time.h> #definerow3 #definecol3 //初始化棋盘 voidInitBoard(charboard[row][col],intROW,intCOL); //打印棋盘 voidDisplayBoard(charboard[row][col],intROW,intCOL); //玩家下棋 voidPlayMove(charboard[row][col],intROW,intCOL); //电脑下棋 voidComputerMove(charboard[row][col],intROW,intCOL); //判断输赢 //要返回四种不同的状态 //玩家赢-返回“*”,电脑赢返回“#”,和局返回“Q” //继续游戏返回'C' charIsWin(charboard[row][col],intROW,intCOL); //判断棋盘是否已满 intfull(charboard[row][col],intROW,intCOL);
以上是“如何使用C语言代码实现简单三子棋游戏”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注恰卡编程网行业资讯频道!
目录
推荐阅读
0 条评论
本站已关闭游客评论,请登录或者注册后再评论吧~