c++三子棋代码,C语言五子棋
源程序:一:game.h文件,存放函数声明
# define _ CRT _ SECURE _ NO _ WARNINGS 1
#包含标准视频
#包含标准库
#定义第3行//声明棋盘大小
#定义第3列
//声明初始化函数
void init chese(char chese[ROW][COL]);
//声明打印棋盘函数
void display chese(char chese[ROW][COL]);
//声明胜负判断函数
char是win(char chese[ROW][COL]);
//声明位置选择函数
void人工选择(char chese[ROW][COL]);
//声明计算机产生位置函数
void计算机选择(char[ROW][COL]);
二:game.c文件,存放函数实现
#包含" game.h "
#包含标准库
#包含时间。h
//实现初始化数组函数
void init chese(char chese[行][列])
{
int i,j=0;
for(I=0;我划船;我)
{
for(j=0;j COLj)
{
chese[I][j]=" ";
//printf(%c\n ,chese[I][j]);
}
}
}
//实现打印棋盘函数
void显示框(字符框[行][列])
{
//清屏
系统(“cls”);
for(int I=0;我划船;我)
{
printf(-\ n );
for(int j=0;j COLj)
{
printf( %c ,chese[I][j]);
}
printf( \ n );
}
printf(-\ n );
}
int isFall(char chese[ROW][COL])
{
int I=0;
int j=0;
for(I=0;j排;我)
{
for(j=0;j COLj)
{
if(chese[I][j]== );
返回0;//棋盘没满
}
}
返回1;
}
char isWin(char chese[ROW][COL])
{
//判断三行
for(int I=0;我划船;我)
{
if(chese[I][0]==chese[I][1]chese[I][1]==chese[I][2]chese[I][1]!= )
return chese[I][1];
}
//判断三列
for(int j=0;j COLj)
{
if(chese[0][j]==chese[1][j]chese[1][j]==chese[2][j]chese[1][j]!= )
return chese[1][j];
}
//判断对角线
if(chese[0][0]==chese[1][1]chese[1][1]==chese[2][2]chese[1][1]!= )
return chese[1][1];
if(chese[0][2]==chese[1][1]chese[1][1]==chese[2][0]chese[1][1]!= )
return chese[1][1];
//判断平局
//如果棋盘满了返回1,不满返回0
int ret=is fall(chese);
if (ret==1)
返回“e”;
//继续
返回“g”;
}
//实现位置选择函数
void人工选择(char chese[ROW][COL])
{
int i,j=0;
printf(请输入你的位置坐标:
//用户选择位置
while (1)
{
scanf(%d%d ,I,
//printf(%d%d ,I,j);
如果(i=3 i=1 j=3 j=1)
{
if (chese[i - 1][j - 1]== )
{
chese[I-1][j-1]= * ;
打破;
}
其他
printf(此处有棋子了!请重选:
}
其他
printf(棋子落到外面了!请重选:
}
}
//计算机产生位置
无效计算机选择(char chese[行][列])
{
srand((无符号int)time(NULL));
while (1)
{
int I=rand()% 3;
int j=rand()% 3;
if (chese[i - 1][j - 1]== )
{
chese[I-1][j-1]= # ;
打破;
}
}
}三:测试。c文件,用以测试
#包含" game.h "
//实现游戏函数
无效游戏()
{
char chese[ROW][COL]={ 0 };
char ret=//接受胜负判断函数的返回值
//初始化数组
initChese(切塞);
//打印棋盘
显示内容(切色);
while (1)
{
//玩家下棋
人类选择(chese);
//打印棋盘
显示内容(切色);
ret=is win(chese);
如果(ret!=g )断开;
//电脑下棋
计算机选择(chese);
//打印棋盘
显示内容(切色);
ret=is win(chese);
如果(ret!=g )断开;
}
if (ret==* )
printf(你赢了!\ n’);
else if (ret==# )
printf(你输了!\ n’);
其他
printf(平局!\ n’);
}
无效菜单()
{
//清屏
系统(“cls”);
printf(*****欢迎来到三子棋* * * * * \ n’);
printf(**** 1:播放0:退出* * * * \ n );
printf( * * * * * * * * * * * * * * * * * * * * * * * * * \ n );
printf(请选择:
}
无效测试()
{
int input=0;
做
{
//打印菜单
menu();
scanf(%d ,输入);
开关(输入)
{
案例0:
printf(游戏结束!\ n’);
打破;
案例1:
printf(开始游戏!\ n’);
game();
打破;
默认值:
printf(错误!请重新输入!\ n’);
打破;
}
系统("暂停");
}而(输入);
}
int main()
{
test();
返回0;
}总结:1.isWin()函数中,判断输赢时,把判断条件写死了,此时如果棋盘的类型要求改变,则需要修改源代码,不符合开闭原则,需要改进。
2.电脑下棋太笨了,没有设计算法,所以赢棋超级简单,想让电脑赢都难,哈哈。稍后,我们可以研究计算机象棋算法。
欢迎大家提出意见!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。