谁编过下棋的程序!(从现在起,凡符合条件的每人50分,绝对守信!!!)

fu_gui 2002-03-31 05:20:25
我正在编一个功能极其强大的跳棋游戏,现已实现大部分功能,但还有很多地方非常头痛,各位若有兴趣可以留下联系方法,我将随时向大家请教。
...全文
53 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianlinyi 2002-04-30
  • 打赏
  • 举报
回复
交流

tianlinyi@sina.com
oicq:82578143

我也是学生,计算机系
fu_gui 2002-04-21
  • 打赏
  • 举报
回复
再说一下功能:
音乐:不同的局势播放不同的音乐。

动画:分全局动画,棋手动画,棋子动画三种,只有安装了DirectX7.0以上
才能显示动画,若没安装,则显示画面全用GDI函数---但是不能显
示动画。

音效:与动画相配套,若有DirectX7.0则用DirectX,否则也用GDI函数。

显示思路:在电脑计算的时候随时显示当前已经算出来的最好棋。

显示路线:电脑或人下棋时将其行棋路线显示,接着的任一动作将抹去
其行棋路线。

提示:任何时候对某一粒出发棋子发出请求提示(Ctrl+左键单击棋子),则显示这粒子能下的所有可下地址。

规则:分两种规则,第一种规则是隔多远跳多远,第二种规则是只能挨着跳,
默认为第一种(好玩些),游戏中可以随时转换规则。

限时:限定计算时间,时间一到,不管下没下,都强制进入下一步,其下的
棋是:对于电脑,是当前已算出来的最好棋,对于人,则看其下了多
少,没下也跳过去。

中止:当电脑正在算棋时,若按了中止键则强行进入下一步,其下的棋是当
前已算出来的最好棋。

暂停/恢复:暂停核心运算/恢复核心运算。

性能显示:显示系统性能。

全屏/窗口:当前处于DirectX7.0下时,有全屏显示和窗口显示两种状态。

打开/保存:对游戏进行存档或取出。

新游戏:重新设置所有数据并开始新游戏。

重玩:以当前的设置再来一盘。

悔棋:当悔棋时会暂停核心运算,必须按恢复键恢复核心运算。

设置:对界面和操作进行设置。

退出:退出游戏。

帮助:帮助显示在即时文本中。

控制台显示:
即时文本:随时显示帮助性文字资料。

计算进度条:显示计算的进度,对于人按定限时间匀速显示,对于电脑
棋手,显示已计算的百分比(因算法是纵向搜索,故基本上能匀速显示)。

游戏者水平:显示游戏者的水平。

步数:显示当前已经下了多少步。

人气指数:当前棋手的人气,在电脑算棋的时候会根据人气指数确定对某
方的敌对程度。

棋风:显示各棋手的棋风。

最高分:当前已算出来的棋的最高分。

当前棋手:选择当前棋手。
fu_gui 2002-04-21
  • 打赏
  • 举报
回复
我来说一下程序的特点:
(1)采用多线程:界面跟运算分开(异步,运算优先级低两级),操作跟动画都
极为流畅

(2)内存统一分配:动态内存一次性极大分配(60K),搜索以数组为主,链表
为辅,绝无内存漏洞,内部分配纯手工计算,速度极快

(3)内核纯数据化:内核全无函数调用,大量采用大型数组(手工计算出来的)

(4)界面全DIY:界面元素全外部链接,并配有详细的创作说明,以便二次创作

(5)界面人性化:从整体,到棋手,到每个棋子都有丰富的感情因素
如棋子,当轮到下时或差棋变好或已到家或被堵等等等,
都会有相应的动画及音效(以棋子为单位)

(6)DirectX7.0动画:动画采用DirectX7.0,若没有,则全部用GDI函
数,但只能显示静止画面

(7)规则多样化:现已支持两种规则,将来准备支持所有可行规则

(8)方位人数任意:从2到6人无限制,方位也任意

(9)(两人/多人)分开:两人对战纯粹比棋力,多人对战则参有感情因素,电脑
算棋由各方的绝对人气指数及相对自己的人气指数以及
自己的棋所确定(相对人气指数随局势变动)

(10)水平/风格多样化:多种水平及棋风提供,两人对战重水平,多人对战
重风格

(11)还在设计之中.......

fu_gui 2002-04-21
  • 打赏
  • 举报
回复
回(shines):
关于规则方面,我两种规则都支持,一种是一步一步滚,一种是能隔着跳的(
就是隔多远跳多远),而且我的重点放在了第二种规则,因为我本人觉得第二
种规则好玩得多,三下两下就开始交锋了,这样多刺激!
我以前一直玩得是第二种规则,可是现存的跳棋程序只支持第一种,我最不
喜欢了,于是决定编出一种能隔着跳的跳棋,呵呵,开始我真傻,不知道两种规则
都支持(既然第二种已经支持,再支持第一种是轻而易举的事),不过现在行了,
而且两种规则可以随时转换,想下哪种就下哪种,爽吧!
感谢shines的指引,可是我看不太懂!其中Alpha-Beta算法中是不是要搜索出
所有叶结点中的一个最大值?并且由这个最大值确定第一步中的招法?如果是这
样就不太符合实际了,我想请各位高手指明一下
shines77 2002-04-21
  • 打赏
  • 举报
回复
其中Alpha-Beta算法就是基于Max-Min Search,关于这方面的文章,你可以参考一下:
http://trident.mcs.kent.edu/~jmelnyk/othello/

其实这样的文章很多,这并不是最好的。
nchen123 2002-04-21
  • 打赏
  • 举报
回复
我是围棋迷,编程是新手,现正在学习vc中。编一个围棋程序是我一直的梦想,可是复杂度太高了!请编过此类程序的高手赐教!最好能发给我源代码,谢了。
coolsniper@263.net
shines77 2002-04-21
  • 打赏
  • 举报
回复
看看这个黑白棋的吧,http://www.guozi.com/othello.zip,算法还算不错,使用的是PVS(本来做了MTD(f)的,但是不太稳定)。

跳棋我没有那么复杂吧,别告诉我是那种,一步一步滚,不能隔着跳的啊,我最讨厌,据说这样更加考验技术:(

对于你想害谁或者帮谁,那就看评估函数啦,黑白棋里最复杂的而且效率最高的算法是MPC(Multi Probability Cut),需要做大量的统计以获得评估和MPC所需的数据,其中统计了3,000,000个棋局,

如果你想搜索速度更快,还要使用哈希表,当然,据说MPC是不用的,呵呵。

至于算法很多,经典Alpha-Beta, NegaSount, SSS*, DAUL*, MTD(f), 一般来说MTD(f)最快,NegaSount也不错,MPC是很特殊的一种。

关于MPC算法的介绍:
http://vip.6to23.com/mays/develop/ai/200111/MultiProbCut.htm

一山还有一山高~~~~~~~
laolaoliu2002 2002-04-21
  • 打赏
  • 举报
回复
我也只写过五子棋。交流
laoliu_lyp@sina.com
pk2001 2002-04-21
  • 打赏
  • 举报
回复
我也只写过五子棋。交流
ntc_peng@163.com
AttaBoy 2002-04-18
  • 打赏
  • 举报
回复
我写过五子棋。交流

bluetea@21cn.com
load 2002-04-11
  • 打赏
  • 举报
回复
我编过一个民间棋类游戏,小时候玩的“二打一”,哈,那个比较简单,可能对你没用。
involute 2002-04-01
  • 打赏
  • 举报
回复
功能强大?是指棋力强吗?我做过翻转棋和五子棋,棋力都很弱,加点复杂运算就很慢,算法改进中......
不过我想跳棋和其他棋类类似,博弈树嘛,可是怎么估值呢?
involute@21cn.com
Researcher 2002-04-01
  • 打赏
  • 举报
回复
我作过象棋程序,水平一般,可以往后搜索6步,但是再增加就很慢了。
我认为必须根据经验实现变深度搜索,并且设法找到较好的评价函数。是棋类程序成功的关键。
herosword 2002-04-01
  • 打赏
  • 举报
回复
我写好了下围棋的程序,欢迎联系。
daihongbin@21nc.com
springleo 2002-04-01
  • 打赏
  • 举报
回复
在下对围棋比较感兴趣,可惜贴了个贴子没人up.
fu_gui 2002-04-01
  • 打赏
  • 举报
回复
这么多人我也不好给分,这样吧,我总共会发出500分,每张贴子发两人(当然不是相同人),我望大家原谅,因为我每次最多只能发100分
loveisbug 2002-04-01
  • 打赏
  • 举报
回复
交流。ericzhangacer@sohu.com
fu_gui 2002-04-01
  • 打赏
  • 举报
回复
我还是介绍一下我的程序:这个程序我编了两年,是我的入门作品,现在已经是编第三遍了,这可是我这两年的全部心血,我所学的东西%99都是在这个程序里面得到的,我想我还要在这个程序里面学更多的东西(顺便介绍我自己,我现在正在读书,是学计算机的,大三,男,22岁,非常热爱编程,从大二开始学C++以及VC,还有一年毕业)。现在第三版有如下一些特点:多线程,核心界面两条线。内存统一分配,最多只需几十K内存(我正想利用这个优点编写WindowsCE版本)。搜索速度为平均每秒搜索十万种下法(赛杨366)。有两种规则可随时转换(一种是只能挨着跳,一种是隔多远跳多远)。GDI/DirectX可随时转换(我现在正在系统学习DirectX,希望有这方面经验的多教教我,我可是全无半点经验)。另外还有很多功能正在设计之中,顺便说一下,现在的初级水平已经出来了,计算时间在一秒之内,水平还可以,比我差一点。好了,感谢大家关心,希望大家都帮帮我,祝大家快乐!
fu_gui 2002-04-01
  • 打赏
  • 举报
回复
感谢各位的回复,我想我还有几点得解释清楚:
我说的功能强大是指游戏方面的功能,而不单指棋力方面,希望大家不要误会。棋力我已经很重视了,不过大家应该知道,下跳棋的人没有几个水平高的,再说跳棋的不确定性极多,单说人数的不确定性就极为令人头痛,还有规则,还有方位顺序,等等等。而且最令人头痛的是当人数超过了两个时,就绝对不能用博弈树等方面的算法,因为这样推算两步就已经是天文数字了,我是想朝人性化方面发展,即每位棋手都带感情因素,算棋以情感为重点,我想这样会更吸引人,不过这样也很复杂,因为当人数多时,很难算出各棋手下的棋到底是为自己,还是为别人,或是在害别人,我想请各位在这方面多多提点意见。
newhandaking 2002-04-01
  • 打赏
  • 举报
回复
程序员光盘中不是有象棋游戏源码吗去看看呀!
加载更多回复(1)

1,660

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 非技术类
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧