如何使用C语言代码实现简单三子棋游戏

这篇文章主要介绍如何使用C语言代码实现简单三子棋游戏,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

编译软件VS2019

如何使用C语言代码实现简单三子棋游戏

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语言代码实现简单三子棋游戏”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注恰卡编程网行业资讯频道!

发布于 2021-07-29 21:58:40
收藏
分享
海报
0 条评论
185
上一篇:Java日常练习题的示例分析 下一篇:logBack配置日志文件及编码配置的示例分析
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码