如何使用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语言如...
