五子棋c语言代码 贴吧,控制台版本的五子棋游戏
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
需求定义:
编写程序实现两人互玩的五子棋游戏。游戏开始时要求在控制台输出以下棋盘,然后提示黑方和白方下子,玩家从命令行输入落子坐标,如:1-2,表示在第二行第三列落子,其中黑方的子用@表示,白方的子用O(大写字母O)表示,空白位置用*表示,每有一方落子,则要重新输出棋盘的状态,程序还要能判断某一方获胜,并终止游戏。
棋盘初始状态如下:
代码实现:
#include
#define N 14
#include
char state[N][N];
void init(void);
void printState(void);
bool isWin(bool isBlack,int x,int y);
bool isLevelWin(bool isBlack,int x,int y);
bool isVerticalWin(bool isBlack,int x,int y);
bool isLeftInclinedWin(bool isBlack,int x,int y);
bool isRightObliqueWin(bool isBlack,int x,int y);
bool isWin(bool isBlack,int x,int y)
{
return isLevelWin(isBlack,x,y)
||isVerticalWin(isBlack,x,y)
||isLeftInclinedWin(isBlack,x,y)
||isRightObliqueWin(isBlack,x,y);
}
bool isLevelWin(bool isBlack,int x,int y)
{
char c = isBlack ? '@':'O';
int count;
while(y>0 && state[x][y] == c)
{
y--;
}
count =0;
if(state[x][y] == c) count = 1;
y++;
while(y < N && state[x][y] == c)
{
count++;
if(count == 5)
{
return true;
}
y++;
}
return false;
}
bool isVerticalWin(bool isBlack,int x,int y)
{
char c = isBlack ? '@':'O';
int count;
while(x>0 && state[x][y] == c)
{
x--;
}
count =0;
if(state[x][y] == c) count = 1;
x++;
while(x < N && state[x][y] == c)
{
count++;
if(count == 5)
{
return true;
}
x++;
}
return false;
}
bool isLeftInclinedWin(bool isBlack,int x,int y)
{
char c = isBlack ? '@':'O';
int count;
while(x>0 && y>0 && state[x][y] == c)
{
y--;
x--;
}
count =0;
if(state[x][y] == c) count = 1;
x++;
y++;
while(x < N && y < N && state[x][y] == c)
{
count++;
if(count == 5)
{
return true;
}
x++;
y++;
}
return false;
}
bool isRightObliqueWin(bool isBlack,int x,int y)
{
char c = isBlack ? '@':'O';
int count;
while(x>0 && y
{
y++;
x--;
}
count =0;
if(state[x][y] == c) count = 1;
x++;
y--;
while(x < N && y >= 0 && state[x][y] == c)
{
count++;
if(count == 5)
{
return true;
}
x++;
y--;
}
return false;
}
void init(void)
{
int i,j;
for(i=0;i
{
for(j=0;j
{
state[i][j] = '*';
}
}
}
void printState(void)
{
int i,j;
printf("%3c",' ');
for(i=0;i
printf("%3d",i);
printf("\n");
printf("-----------------------------------------------------\n");
for(i=0;i
{
printf("%3d",i);
for(j=0;j
{
printf("%3c",state[i][j]);
}
printf("\n");
}
}
int main(void)
{
int x,y;
bool isBlack = true;
init();
printf("------------------\n");
printState();
while(1)
{
printf("please %s quick snip\n",(isBlack?"black":"white"));
printf("example:(1-2)\n");
scanf("%d-%d",&x,&y);
if(state[x][y]=='@' || state[x][y]=='O')
{
printf("this position to have pieces\n");
continue;
}
state[x][y] = (isBlack?'@':'O');
printState();
if(isWin(isBlack,x,y))
{
printf("%s win\n",(isBlack?"black":"white"));
break;
}
isBlack = !isBlack;
}
}
嵌入式、C语言基础知识专栏,欢迎交流!
五子棋c语言代码 贴吧,控制台版本的五子棋游戏相关推荐
- 五子棋c语言代码ppt答辩,C语言案例:控制台版本的五子棋游戏【代码】
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 return true; } x++; } return false; } bool isLeftInclinedWin(bool isBlack,int ...
- 五子棋开发案列c语言,C语言案例:控制台版本的五子棋游戏【代码】
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 return true; } x++; } return false; } bool isLeftInclinedWin(bool isBlack,int ...
- c语言五子棋排行榜代码,C语言案例:控制台版本的五子棋游戏【代码】
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 return true; } x++; } return false; } bool isLeftInclinedWin(bool isBlack,int ...
- c 语言五子棋游戏代码,C语言案例:控制台版本的五子棋游戏【代码】
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 return true; } x++; } return false; } bool isLeftInclinedWin(bool isBlack,int ...
- 指定开局五子棋c语言代码,C语言案例:控制台版本的五子棋游戏【代码】
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 return true; } x++; } return false; } bool isLeftInclinedWin(bool isBlack,int ...
- 用c 语言写出五子棋的代码,C语言案例:控制台版本的五子棋游戏【代码】
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 return true; } x++; } return false; } bool isLeftInclinedWin(bool isBlack,int ...
- 五指棋小游戏c语言代码,C语言案例:控制台版本的五子棋游戏【代码】
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 return true; } x++; } return false; } bool isLeftInclinedWin(bool isBlack,int ...
- c语言手机游戏五子棋代码,C语言案例:控制台版本的五子棋游戏【代码】
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 return true; } x++; } return false; } bool isLeftInclinedWin(bool isBlack,int ...
- 有悔棋功能的五子棋c语言代码,有保存读取悔棋功能的五子棋.doc
有保存读取悔棋功能的五子棋 制作拖动鼠标产生水纹动画的制作 1.导入一张合适的图片到库中 2.在库中刚导入的图片上点击右键.点击"链接",再按下图设置链接属性. 3.新建一个空影片 ...
最新文章
- 如何使用Extentions创建菜单
- 云炬随笔20211021(2)
- java中File的使用
- mysql数据库入门教程(10):标识列和事务
- datagrid vue_类似 easyui 中 datagrid 使用习惯的 element-ui 数据表格组件(el-datagrid)...
- 最终计算供应链管理生产计划排程逻辑管理
- C和指针之字符串编程练习10(判断字符串是否是回文数)
- Django通过中间件实现登录验证demo
- linux将程序锁死,Linux死锁现象及分析方法(转)
- mysql复制学习二 安装及首次复制配置
- canvasnest 移动距离_GitHub - XiaoxinJiang/canvas-nest: 仿知乎登录页面canvas-nest
- socket:通常每个套接字地址(协议/网络地址/端口)只允许使用一次
- 西南科技大学OJ题 有序顺序表的合并操作的实现0941
- 多功能扩音器索爱S-318,教师、导游们的辅助神器
- Poj 1328 Radar Installation 贪心
- 区块链以及蚂蚁开放联盟链初探索
- 使用python绘制函数曲线
- 常见的DNS攻击与防御
- 在html中怎么格式化输出json字符串
- shell十三问--shell教程
热门文章
- 麦角硫因/超级抗氧化
- 感人的校园爱情故事 伤感日志分享
- 计算机专业进农商行还是电信,农商行好进嘛?为什么那么多人选择报考农商行?...
- ChinaUnicom 中国联通wifi连接上输入联通手机号和密码后提示ip非法的解决办法
- 「1114」Family Property
- iPhone必须掌握的几个日常使用技巧
- 青铜10:千锤百炼-如何解决生产者与消费者经典问题
- P2P应用(BT种子,Skype,洪泛式查询)
- emc存储设备型号_【EMC网络存储】EMC网络存储报价及图片大全-列表版-ZOL中关村在线...
- win7 php,Win7 搭建PHP环境