黑白棋子c语言思路,最近无聊在写奥赛罗(黑白棋),求关于落棋可行判定的思路...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
struct coordinate
{
int x;
int y;
}direct[8]={{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};
char map[10][10];
char p[3];
//地图类
int exitcode;
int flag;
//开关类
int me,op;
int d;
//控制变量类
int num[2];
int temp;
//普通记录变量类
void initmap()
{
memset(map,0,sizeof(map));
int i,j;
for (i=0;i<10;i++)
for (j=0;j<10;j++)
map[i][j]=p[3];
map[4][4]=p[me];
map[5][5]=p[me];
map[4][5]=p[op];
map[5][4]=p[op];
}
void init()
{
num[0]=2;
num[1]=2;
me=0;
op=1;
p[me]='*';
p[op]='@';
p[3]='.';
exitcode=2;
initmap();
}
void printmap()
{
int i,j;
printf(" 1 2 3 4 5 6 7 8\n");
for (i=1;i<=8;i++)
{
printf("%d",i);
for (j=1;j<=8;j++)
printf(" %c",map[i][j]);
printf("\n");
}
printf("\n");
printf("%c --- %d\n",p[0],num[0]);
printf("%c --- %d\n",p[1],num[1]);
printf("\n");
}
void change()
{
temp=me;
me=op;
op=temp;
}
int search(int i,int j,int step)
{
if (map[i][j]==p[3])
return 0;
else if (map[i][j]==p[me])
return step-1;
else if (step=search(i+direct[d].x,j+direct[d].y,step+1))
map[i][j]=p[me];
return step;
}
void sortgame()
{
int i,j;
while (exitcode)
{
printmap();
i=0;
j=0;
printf("%c's turn.Your coordinate(y,x):",p[me]);
scanf("%d,%d",&i,&j);
while ((i<1)||(i>8)||(j<1)||(j>8))
{
printf("You have entered an unreachable position, please input again.\n");
printf("%c's turn.Your coordinate(x,y):",p[me]);
scanf("%d,%d",&i,&j);
}
flag=0;
for (d=0;d<8;d++)
if (temp=search(i+direct[d].x,j+direct[d].y,1))
{
num[me]+=temp;
num[op]-=temp;
flag=1;
}
if (!flag)
{
exitcode--;
printf("Unusable step.\n");
}
else
{
map[i][j]=p[me];
num[me]++;
exitcode=2;
}
change();
}
printf("Either of you have no way to go, game exit.\n");
}
main()
{
init();
sortgame();
getch();
}
黑白棋子c语言思路,最近无聊在写奥赛罗(黑白棋),求关于落棋可行判定的思路...相关推荐
- 指数爆炸c语言编程,【草稿】贪吃蛇,黑白棋,五子棋,扫雷的思路。大家来看看行不行...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 [新手进阶教程]贪吃蛇,黑白棋,五子棋,扫雷的思路. 以上我只做过贪吃蛇,看过<C语言入门经典>的黑白棋(具体玩法上网搜搜)的代码,不过,个人 ...
- C语言零基础项目:黑白棋游戏!详细思路+源码分享
每天一个C语言小项目,提升你的编程能力! <黑白棋>也叫翻转棋或者奥赛罗,其游戏过程是相互翻转对方的棋子,最后以棋盘上谁的棋子多来判断胜负.虽然规则简单,但是变化复杂,是典型的易学难精,奥 ...
- 用C语言实现三子棋游戏(附上思路+项目展示+源代码)
文章目录 前言 一.三子棋游戏整体实现思路 二.实现步骤 分模板实现 (以及具体应用实列) 1.test.c 源文件讲解: 2. game.c 源文件讲解: 3.game.h 源文件讲解 三 game ...
- 信息学奥赛一本通 1327:【例7.6】黑白棋子的移动 | 洛谷 P1259 黑白棋子的移动
[题目链接] ybt 1327:[例7.6]黑白棋子的移动 洛谷 P1259 黑白棋子的移动 注:两题仅输出要求不同 [题目释义] 开始时,末尾有两个空位可以使用. 棋子移动后,会在原位置留有空位,相 ...
- c语言链表交换,求单链表的数据交换解决思路
当前位置:我的异常网» C语言 » 求单链表的数据交换解决思路 求单链表的数据交换解决思路 www.myexceptions.net 网友分享于:2013-11-04 浏览:14次 求单链表的数据 ...
- 信息学奥赛一本通(1327:【例7.6】黑白棋子的移动)
1327:[例7.6]黑白棋子的移动 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 5394 通过数: 2403 [题目描述] 有2n个棋子(n≥4)排成 ...
- 黑白棋,又叫翻转棋(Reversi)、苹果棋或奥赛罗棋(Othello)。棋盘共有8行8列共64格。开局时,棋盘正中央的4格先置放黑白相隔的4枚棋子。双方轮流落子,只要落子和棋盘上任一枚己方的棋子
黑白棋,又叫翻转棋(Reversi).苹果棋或奥赛罗棋(Othello).棋盘共有8行8列共64格. 开局时,棋盘正中央的4格先置放黑白相隔的4枚棋子.双方轮流落子,只要落子和棋盘上任一枚己方的棋子在 ...
- 【华为机试题】黑白棋子的最大匹配度
棋盘上有黑白两种颜色的棋子,选出一对黑白棋子,若黑棋的横坐标小于等于白棋的横坐标,黑棋的纵坐标小于等于白棋的纵坐标,则称这一对棋子为匹配.求任意个数的黑白棋中最佳匹配的对数. 输入: 测试用例数 对每 ...
- Go语言版黑白棋(十):棋子个数统计、胜负判断
功能说明 增加棋子个数统计.胜负判断功能,游戏结束后可选择继续游戏. 示例代码 package mainimport ("fmt""os""strco ...
最新文章
- 高防服务器如何进行防御措施
- WinRAR最新版V3.93 破解方法
- 昂贵的聘礼(poj 1062)
- java会编译失败吗?_请问为什么这个通用java代码不会编译?
- Unity3D_(游戏)2D坦克大战 像素版
- win10 无法连接路由器共享设备 报错0X80004005
- Supersocket 如何使用 教程1
- Python使用pyechart绘制3d散点图
- OpenCv之Canny边界检测(笔记13)
- python中delete怎么用_python删除np.deletePython基础教程05 - 缩进和选择
- 无法支持python程序的编辑运行和调试_python程序的调试方法
- mysql输入正确,但远程连接报错
- [洛谷P1119]灾后重建
- 前端小技巧之ajax后遍历生成相同结构不同数据的dom
- 阿里云10 PB+/天的日志系统设计和实现
- privoxy基本配置-简洁版
- 微信小程序--微信扫一扫登录pc页面功能的实现
- Android App开发常用尺寸规范
- ssh secure shell:server responded algorithm negotiation failed
- 对金融基础知识的小总结