如何使用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语言代码实现简单三子棋游戏”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注恰卡编程网行业资讯频道!
推荐阅读
-
windows安装touble c
近期有些网友想要了解windows?安装touble的相关情况,小编通过整理给您分享一下。为什么现在还需要TurboC?在当今V...
-
C/C++如何获取CAN信号
C/C++如何获取CAN信号本篇内容主要讲解“C/C++如何获取C...
-
C语言怎么通过二分查找实现猜数字游戏
C语言怎么通过二分查找实现猜数字游戏本文小编为大家详细介绍“C语言...
-
C语言数据结构中的线性表怎么使用
C语言数据结构中的线性表怎么使用这篇文章主要介绍“C语言数据结构中...
-
C语言的数据结构怎么理解
C语言的数据结构怎么理解这篇文章主要介绍了C语言的数据结构怎么理解...
-
C语言与C++中内存管理的方法
C语言与C++中内存管理的方法这篇文章主要介绍了C语言与C++中内...
-
C语言链式队列与循环队列怎么实现
C语言链式队列与循环队列怎么实现这篇文章主要介绍了C语言链式队列与...
-
C语言冒泡排序怎么实现
C语言冒泡排序怎么实现这篇文章主要介绍了C语言冒泡排序怎么实现的相...
-
C语言如何实现斐波那契数列
C语言如何实现斐波那契数列这篇文章主要介绍了C语言如何实现斐波那契...
-
C语言如何实现无符号数和有符号数间的运算
C语言如何实现无符号数和有符号数间的运算本篇内容主要讲解“C语言如...