下列超难五子棋棋算不算长连,为什么?

C语言—五子棋求大神帮忙看看,设计是按输入的坐标打印棋子。可打不出来-中国学网-中国IT综合门户网站
> C语言—五子棋求大神帮忙看看,设计是按输入的坐标打印棋子。可打不出来
C语言—五子棋求大神帮忙看看,设计是按输入的坐标打印棋子。可打不出来
转载 编辑:李强
为了帮助网友解决“C语言—五子棋求大神帮忙看看,设计是按输”相关的问题,中国学网通过互联网对“C语言—五子棋求大神帮忙看看,设计是按输”相关的解决方案进行了整理,用户详细问题包括: k++) { printf (&quot, &j);i++) { for(j=0, i ),b;%d&quot,p[i][k]);void main(){ for (i = 0;n&请输入一个坐标;};struct zuobiao weizhi[N]; for (i = 0;j& } } printf(&N;);&#92;;; i&%d:例如 3; }}void draw(){ printf (& draw();),4 & i++) { printf (& i&);棋子超过棋盘范围&#92.h& printf(&十&&#92.x=i;j; } printf (&n&);Please input the five_chess&#39;%2d&;j++) { if ((weizhi[j],%d&quot,i);&#92;;n&quot,j,j;j.y=k; scanf(& scanf (&); weizhi[i].y==b)) { p[a][b]=&#39; i++) { if(i==0) printf(&#define N 20#define X 10struct zuobiao{ } printf(&), &a; weizhi[i]; k& else printf(&%3d&N;@&#39,&b),k.x==a) && (weizhi[j]; for (k = 0;;char p[N][N];s board&#92;i&;, i ); printf (&n&void draw ();%2d& draw();n& for(i=0#include&lt,具体解决方案如下:解决方案1:<解决方案2:谢谢!通过对数据库的索引,我们还为您准备了:答:五子棋程序: #include int Hsheng(char a[][15]);//判断o子是否获胜的函数 int Bsheng(char a[][15]);//判断x子是否获胜的函数 int he(char a[][15]);//判断是否平局(也就是棋盘下满了)的函数 void qipan(char a[15][15...===========================================问:程序要求:1.由两个玩家分别下棋,当某一玩家五子相连,则赢。 2.界面...答:留邮箱或QQ,发给你===========================================问:程序要求:1.由两个玩家分别下棋,当某一玩家五子相连,则赢。 2.界面...答:#include #include #include #include #include #define LEFT 0x4b00 #define RIGHT 0x4d00 #define DOWN 0x5000 #define UP 0x4800 #define ESC 0x011b #define SPACE 0x3920 #define BILI 20 #define JZ 4 #define JS 3 #define N 19 int box[...===========================================问:实现利用计算机评判两个人五子棋比赛游戏、用C语言提供的图形库函数实现...答:现在在变成语言越变越快,底层程序都可以用可视化的界面来完成了,就不要再固守c语言了,当然如果初学的话还是研究完c语言把,现在多用java和vs,高深多一点的是erlang,平时研究的同时多接触点高级的东西,即便弄不懂也对自己有用处的。===========================================问:本程序设计为人与人对弈,双方有一方五子连成一线即为赢。 设计一游戏变...答:五子棋C语言代码如下: #include #include #include #include #include #define CROSSRU 0xbf /*右上角点*/ #define CROSSLU 0xda /*左上角点*/ #define CROSSLD 0xc0 /*左下角点*/ #define CROSSRD 0xd9 /*右下角点*/ #define CROSSL 0xc3 /*左...===========================================问:我急需一个用C语言编写五子棋游戏(2玩家的就行,不必要电脑玩家)的全...答:这个程序还需要两个文件,告诉我你邮箱,我发给你源程序前半部分/*加载头文件*/ #include #include #include #include #include/*编译预处理,定义按键码*/ #define LEFT 0x4b00 #define RIGHT 0x4d00 #define DOWN 0x5000 #define UP 0x4800 /*...===========================================问:求个C语言的五子棋AI思路……百度许久,看到不少页面介绍五子棋AI,由于才...答:好的AI算法,可不可以算一下每个可落子点的权重,然后在权最大的点上落子呢? 关键问题在于你要会下五子棋才好做... 判断禁手无非是33,44,长连,你能判断赢棋,就应该能判断 禁手。===========================================问:怎么样能在VC环境里用C语言输出五子棋的棋盘啊?不能用TC的函数。答:我真的想问你们老师有病啊 用vc++编译 c 说是用标准的c编写 又说可以用vc的库函数 自相矛盾===========================================问:设计课题十:五子棋游戏 一、问题描述: 运用数据结构的相关知识,用C语...答:mark一下,有空可以按照要求编写一个。===========================================不用指针行不 之前做了一个背单词的自己玩玩了 功能有:1.记录新学单词 2.单词测试 3.输出单词表 单词测试有三种: 1:随机测试 2:优先级测试(测试你最不会的单词) 3:按单元测...=========================================== 用switch来锁定要做的事用case &来斜街 =========================================== 程序已经完成,但是鉴于遇到过多次得到答案但不采纳的情况,所以在此贴图为证,如需要请留下邮箱并采纳,之后将代码发过去。===========================================
发到这个里面===========================================《c语言程序设计》《面向对象程序设计》,先把这两本书学好,学好了之后推荐你看《c和指针》这本书,这本书是国外的,有徐波翻译的,写的很好,讲的很透彻。===========================================把b,c都改成foat,printf,a,改下 & & &完成=========================================== ===========================================四六九4八二八66 加这个吧。。。 。。 如果上面的那位上午不在,可以问我,前提是先问他吧。===========================================在设计程序的时候考虑各种有可能的错误和异常, 因为用户并不一定会严格按照程序员... 不合法则提示继续输入)。 c++引入的异常机制,来处理程序异常。c的话,要自己仔细考...===========================================//这个是非ISO&C标准,大部分编译器已不支持2.&if(strcmp(str[i],"a")==0)&这个不能这样写str[i]是字符,不能用strcmp与串比较的这个很简单的,按Taru2...===========================================
本文欢迎转载,转载请注明:转载自中国学网: []
用户还关注
可能有帮助站内网址搜索
本页最后更新: 15:18:48
【韩日先锋下法遭痛批 聂卫平:我对李赫绝对有信心】
网站分类:
网站名称:
网站地址:
站长邮箱:
站长QQ:
收录时间:
报告错误:
韩日先锋下法遭痛批 聂卫平:我对李赫绝对有信心已报错(0)次,打不开请
收录查询:
数据统计:
今日点入:0 总点入:0 总点出:0
网站简介:
聂卫平关注比赛
  新浪体育讯 3月1日,第5届黄龙士双登杯世界女子围棋擂台赛第一阶段在姜堰打响。首局比赛在韩日先锋之间展开。开赛不久后聂卫平[微博]来到研究室和中国队的女棋手们一起关注赛况。  对于吴政娥中腹强行分断黑棋的下法,聂卫平说道:“本来刚才白棋有好多种下法都是简明优势,(这样直接发力)缺乏女性的美。”  中腹黑棋扳头后,吴政娥还在执着地对左上角黑棋进行攻击。而研究室内已经嗅到一股逆转的味道。王磊说道:可能中腹这个扳吴政娥根本没有意识到很大,她认为是不毛之地。老聂认同王磊的看法,说道:“这中腹确实太大了,白棋这一段下得什么啊!都是些单官。”  不过,日本棋手奥田纹好景不长,紧接着在左下角的下法亏损严重,遭到研究室的一致批评。而韩国棋手吴政娥似乎找到了调子,愈战愈勇。黑棋先动手的中腹反而遭到白棋反攻,聂卫平看着这一段的变化不禁感慨:“这下得都是五子棋,连国象都不是。”  此后的比赛正如研究室的观点一样,黑棋奥田纹处处受制而草草地失去了争胜的机会,后半盘吴政娥几乎没受到什么考验就轻松赢了下来。聂卫平看完这盘比赛向睦镇硕学了一句韩语并向韩国队的女孩们表示“祝贺”,不过,他随后转过头来对李赫说:“明天的比赛我绝对对你有信心,好好下啊”。  (路西法)
文章关键词:聂卫平吴政娥李赫围棋
点击下载【新浪体育客户端】,赛事视频直播尽在掌握
【最新来访网站】
?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&
【相关点出网站】
?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&
免责声明:888导航以上所有广告内容均为赞助商广告提供,对其经营行为本网站恕不负责。Copyright&
All Right Reserved
强烈建议使用 IE5.0 以上浏览器 分辨率中国五子棋网 中国五子棋 中国五子棋竞赛规则 五子棋游戏 五子棋单机版 五子棋 五..
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
五子棋是中国传统文化的精粹
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口VC编译的五子棋游戏核心算法分析(附源码) - chenyujing1234的专栏
- 博客频道 - CSDN.NET
1319人阅读
&转载请标明是引用于
前段时间在CSDN的资源里载得五子棋VC的源码,由于忘了链接地址,这里没有标明出处,请作者谅解。
但我也把在VS2005上编译通过且加入清楚的注释的源码放到了下面链接,请下载:
一、界面简介
1、 界面框架设计
整个游戏的界面是建立的单文档的基础上。
很多小游戏不是建立在对话框的基础上,而是在单文档或是自己创建窗口的基础上。
因为它们自动提供了菜单栏和状态栏,方便进行游戏设置和控件。
(1)函数LRESULT CMainFrame::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
进行处理的,如最大化、最小化、鼠标左键按下
(2) CWuziqiView类的响应消息。
通过它的有如:左键单击、右键单击、右键双击
绘制界面的地方是在
void CWuziqiView::OnDraw(CDC* pDC)
这里不做介绍,大家可以自行去看.
2、 逻辑类设计
由于五子棋游戏中的角色不多只有白棋子、黑棋子: chess
再加上棋盘: Overall
&二、 算法分析
&主要的算法集中在OnLButtonDown函数里,下面贴出此段代码:
void CWuziqiView::OnLButtonDown(UINT nFlags, CPoint point)
&CRect rectC
&GetClientRect(rectClient);&// 精确定位棋子位置 x位置
&temp=point.x*15;
&temp=temp/rectClient.
&if(temp - com & 0.5)
&&x = temp+1;
&&x =&// 精确定位棋子位置 y位置
&temp=point.y*15;
&temp=temp/rectClient.
&if(temp - com & 0.5)
&&y = temp + 1;
&// 没有连接,直接更新数据
&if(connect == 0)
&&// 判断是不是所点位置没有放棋子
&&if(all.allqipan[x][y] == 0)
&&&MessageBeep(MB_OK);&&&if(who == 1)& // 此时是黑棋
&&&&//& 黑棋自己做标记
&&&&black.keydown(x, y, who);
&&&&// 全局棋盘做标记
&&&&all.allqipan[x][y] = 1;
&&&&// 双四且禁手
&&&&if(all.shuangsi(x,y)==1 && whohasjinshou == 1)
&&&&&Invalidate();
&&&&&lost.m_Who.Format(&黑棋输!有2种4个棋子一条线!&);
&&&&&lost.DoModal();
&&&&&OnRuleRestart();
&&&&}&&&&// 判断当前的位置是不是五子长连
&&&&int win = all.winchanglian(x, y);
&&&&if(win == 1) // 刚好有5个棋子颜色一样,则黑棋胜
&&&&&Invalidate();
&&&&&win.m_Who.Format(&黑棋胜!&);
&&&&&win.DoModal();
&&&&&OnRuleRestart();
&&&&if(win == 0 && whohasjinshou==1) // 少于5个棋子颜色一样,且自己是禁手了,黑棋输
&&&&&Invalidate();
&&&&&lost.m_Who.Format(&黑棋输!long!&);
&&&&&lost.DoModal();
&&&&&OnRuleRestart();
&&&&// 双三且是禁手
&&&&if(all.shuangsan(x,y) == 1&& whohasjinshou == 1)
&&&&&Invalidate();
&&&&&fail.m_Who.Format(&黑棋输!double 3!&);
&&&&&fail.DoModal();
&&&&&OnRuleRestart();
&以下是游戏的规则:
//以下是规则判断,双三,双四都使禁手
//活三定义:再下一步成为活四
//活四定义:有多于一种的方法成为五颗
//冲四定义:只有一步能够成为五颗
//同时形成两个以上的活三,冲四,或者长连就是禁手
它们对应的函数如下:
1、判断是不是双冲四
// 判断是不是双冲四
// 冲四定义:只有一步能够成为五颗
// 返回值:
不是双冲四
int Overall::shuangsi(int x, int y)
int nCountx,nCounty,nColor,nCount,recordx,
nColor = allqipan[x][y];
/*=================================横的方向======================================*/
// 横向判断,先向左
for(nCountx = allqipan[nCountx][y] == nColor && nCountx&=0; nCountx--);
// 如果下往左边走,边缘的位置上是空的
if(nCountx &= 0 && allqipan[nCountx][y] == 0)
// 那么就把此位置填充为当前的颜色,再判断是不是能连五
allqipan[nCountx][y] = nC
if(winchanglian(nCountx,y) == 1) // 能够连五
// 记录此位置及个数
recordx = nC
// 清除临时填充的棋子
allqipan[nCountx][y] = 0;
// 横向判断,向左
for(nCountx=x + 1; allqipan[nCountx][y] == nColor && nCountx&=17; nCountx++);
if(nCountx &= 17 && allqipan[nCountx][y] == 0)
allqipan[nCountx][y]=nC
if(winchanglian(nCountx, y) == 1)
// 跨度不是5
if(nCountx - recordx != 5)
allqipan[nCountx][y]=0;
recordx = recordy = -50;
/*=================================竖的方向======================================*/
// 竖的,向下
for(nCounty = allqipan[x][nCounty] == nColor && nCounty &= 0; nCounty--);
if(nCounty &= 0 &&
allqipan[x][nCounty] == 0)
allqipan[x][nCounty] = nC
if(winchanglian(x,nCounty)==1)
recordx=x;
recordy=nC
allqipan[x][nCounty]=0;
// 竖的,向上
for(nCounty = y+1; allqipan[x][nCounty] == nColor&&nCounty&=17;nCounty++);
if(nCounty &= 17 && allqipan[x][nCounty] == 0)
allqipan[x][nCounty] = nC
if(winchanglian(x,nCounty) == 1)
if(nCounty - recordy != 5)
allqipan[x][nCounty] = 0;
recordx=recordy=-50;
/*=================================左右的方向======================================*/
左右方向,先左
for(nCountx=x, nCounty=y; allqipan[nCountx][nCounty]==nColor && nCountx &= 0 && nCounty&=0; nCountx--,nCounty--);
if(nCounty&=0&&nCountx&=0&&allqipan[nCountx][nCounty]==0)
allqipan[nCountx][nCounty]=nC
if(winchanglian(nCountx,nCounty)==1)
recordx=nC
recordy=nC
allqipan[nCountx][nCounty]=0;
// 左右方向,再右
for(nCountx=x+1,nCounty=y+1;allqipan[nCountx][nCounty]==nColor&&nCountx&=17&&nCounty&=17;nCountx++,nCounty++);
if(nCounty&=17&&nCountx&=17&&allqipan[nCountx][nCounty]==0)
allqipan[nCountx][nCounty]=nC
if(winchanglian(nCountx,nCounty)==1)
if(nCountx-recordx!=4&&nCounty-recordy!=5)
allqipan[nCountx][nCounty]=0;
recordx=recordy=-50;
/*=================================右左的方向======================================*/
for(nCountx=x,nCounty=y;allqipan[nCountx][nCounty]==nColor&&nCountx&=0&&nCounty&=17;nCountx--,nCounty++);
if(nCounty&=0&&nCountx&=17&&allqipan[nCountx][nCounty]==0)
allqipan[nCountx][nCounty]=nC
if(winchanglian(nCountx,nCounty)==1)
recordx=nC
recordy=nC
allqipan[nCountx][nCounty]=0;
for(nCountx=x+1,nCounty=y-1;allqipan[nCountx][nCounty]==nColor&&nCountx&=17&&nCounty&=17;nCountx++,nCounty--);
if(nCounty&=17&&nCountx&=0&&allqipan[nCountx][nCounty]==0)
allqipan[nCountx][nCounty]=nC
if(winchanglian(nCountx,nCounty)==1)
if(nCountx-recordx!=4&&recordy-nCounty!=5)
allqipan[nCountx][nCounty]=0;
/*=================================结果======================================*/
// 有两个或两个以上可能产生双四
if(nCount &= 2)
2、 判断当前的位置是不是五子长连
// 判断当前的位置是不是五子长连
int Overall::winchanglian(int x, int y)
// 判断是不是长连禁手
int nCountx, nCounty, nColor, nC
// 当前位置的颜色
nColor = allqipan[x][y];
// 横向方向判断
nCount = 0;
for(nCountx=x; allqipan[nCountx][y]==nColor&&nCountx&=0; nCountx--,nCount++);
for(nCountx=x+1; allqipan[nCountx][y]==nColor&&nCountx&=17; nCountx++,nCount++);
// 达到5个棋子,胜了
if(nCount == 5)
if(nCount & 5)
// 纵向方向判断
nCount = 0;
for(nCounty=y;allqipan[x][nCounty]==nColor&&nCounty&=0;nCounty--,nCount++);
for(nCounty=y+1;allqipan[x][nCounty]==nColor&&nCounty&=17;nCounty++,nCount++);
if(nCount==5)
if(nCount&5)
// 左右方向判断
nCount = 0;
for(nCountx=x,nCounty=y;allqipan[nCountx][nCounty]==nColor&&nCountx&=0&&nCounty&=0;nCountx--,nCounty--,nCount++);
for(nCountx=x+1,nCounty=y+1;allqipan[nCountx][nCounty]==nColor&&nCountx&=17&&nCounty&=17;nCountx++,nCounty++,nCount++);
if(nCount==5)
if(nCount&5)
// 右左方向判断
nCount = 0;
for(nCountx=x,nCounty=y;allqipan[nCountx][nCounty]==nColor&&nCountx&=0&&nCounty&=0;nCountx--,nCounty++,nCount++);
for(nCountx=x+1,nCounty=y-1;allqipan[nCountx][nCounty]==nColor&&nCountx&=17&&nCounty&=17;nCountx++,nCounty--,nCount++);
if(nCount==5) return 1;
if(nCount&5) return 0;
// 小于5个棋子颜色一样
return -1;
3、判断是不是双三
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1167807次
积分:13955
积分:13955
排名:第323名
原创:243篇
转载:265篇
评论:349条
(1)(2)(5)(1)(1)(1)(2)(5)(4)(1)(1)(4)(3)(2)(6)(5)(14)(6)(4)(29)(20)(33)(25)(45)(49)(61)(55)(56)(69)五子棋是中国传统文化的精粹_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
&&&#165;3.99
喜欢此文档的还喜欢
五子棋是中国传统文化的精粹
阅读已结束,如果下载本文需要使用
想免费下载本文?
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢

我要回帖

更多关于 奥维五子棋 的文章

 

随机推荐