仿照QQ五子棋的实现
一:首先完善界面。
界面分成了4个部分: 上,左,右,下。
没有实现网络版。如果实现了网络版,那么聊天功能才能实现,所以在界面中砍去了那一部 分。
上,左,均是截取了QQ五子棋的图片:五子棋的标题和两个用户的头像部分。然后在窗口上添加图片。图片的添加使用了JLabel。五子棋的棋盘和棋子,也是截取了QQ五子棋的图片。
窗体使用了流式布局。为了使图片排布合理,需要精准的计算大小。
其实,QQ五子棋的“开始”“悔棋”“认输”等功能,给我的感觉是,点击一张图片的不同位置,可以调用相应的算法,就像是,在一张图片的不同位置添加不同的监听。我没有查到这个方法,怎么实现。我的想法是用JLabel,添加图片拼接,然后在JLabel上添加鼠标监听。暂时还没有实现,只是做好了界面。
二:算法的实现
1. 人人对战
人人对战的思路就是,A先下子,而后B下子。在任一条直线上,有连续相同颜色的大于等于五个棋子,则,执相应颜色的棋子的人获胜。
为了实现这个思路,首先:落子。程序默认黑子先下。落子的实现就是,在棋盘图片上添加鼠标监听,点击欲落的位置后,则绘制相应颜色的棋子图片。
第二:控制棋子颜色。可以使用计数器来控制,可以设置计数器默认数值为0,此时绘制黑子,为1,绘制白子。
第三:判断输赢。判断输赢的标准是,在任一条直线上,有连续相同颜色的大于等于五个棋子,则,执相应颜色的棋子的人获胜。为了实现这一目的,就需要对棋盘上棋子分布情况进行保存。这时,可以选用一个二维数组,在棋盘坐标的位置保存相对应的棋子信息。如,黑子保存为1,白子为-1,无子则为0.然后,可以以最后一子为标准,在横向,纵向,45度,135度方向进行遍历,判断是否有相同连续的五子,出现,则游戏结束。
第四:误差以及细节的处理。我们很难点击到交叉点,因此,需要设定一定的误差标准,在误差范围内,即可在对应的交叉点绘制图片。细节方面,设置范围,不可在棋盘外绘制棋子,相同的位置不可重复绘子,注意代码的优化等等。
2.人机对战
人机对战其实是人人对战的升级。人脑可以判断棋盘局势,选取最重要的一个位置下子。而电脑,则需要我们编写算法,告诉计算机判断标准,模仿人的思维来处理问题。人机对战基本思路与人人对战相同,只不过,电脑代替一个人而已,因此,两者差别仅仅在于编写一个机器落子的算法。
机器落子,首先要判断己方与对手的局势。根据两者的局势,判断是该进攻或者防守。当机器占优势时,将棋子放置于自己最有可能获胜的位置,进攻。当对手占据优势时,将棋子放置于对方最有可能获胜的位置,防守。为了达到这一目的,只要找出最重要的一个位置即可。即,要找出,权值最大的那一个空点,即是,在当前境况下,机器的最优选择。
现在写的算法还很差劲,正正在完善中。
分享到:
相关推荐
五子棋人机对战,人人对战,局域网对战,注释清楚,另加了一些小功能,联系qq:1345136805
使用eclipse android sdk开发的五子棋简单人机对战类游戏
是一个用vc做的五子棋程序,加入了人机对战的算法,如果有谁要源代码的给我发E-mail: hzfxjun@hzcnc.com QQ:7097928
这是一个简单的五子棋游戏,可以实现人机对战,选择谁先下,谁后下.代码有不错的界面,可以实现基本的功能
闲来无事,在Android端写了一个五子棋自娱自乐,换个思路,本次没有使用Canvas制作,UI基本齐全,附带复盘功能,支持双人对战,也实现了简单的AI算法人机对战(防守算法,进攻算法有待完善),有待优化,注释详细,...
c#局域网--人机对战五子棋
这个可是好个东西给大家看看,也是给网络上的一点点小贡献,大家如果有更好的资源的话,也可以跟我说.我的QQ:66472309
游戏有三种不同难度的人机,初级和中级人机使用贪心算法,中级人机扩充了棋谱,高级人机使用了博弈树理论、极大极小值算法、Alpha-Beta剪枝、深度优先遍历和广度优先遍历,由于时间有限,最高等级的人机完成度并不高...
本人也是初学者,仅实现了五子棋人人对战的简单功能,有再来一局的功能。相应的代码有注释,帮助理解,目前仍然在继续完善
本程序是用java语言开发的,功能有开始,重开,悔棋等,有计时功能,并且可以设置计时的时间限制。界面美观,按钮排列整齐
这是一款经典的五子棋游戏,既有人机对战,又有双人对战,好玩到你停不下来
自己设计实现的人机对战五子棋,棋子是360和QQ,纯API,带界面,不含MFC!
五子棋C++源代码,使用的时候将默认背景图片设置为文件夹中的棋盘图片。或者将eazyX库中line画棋盘的颜色改为白色,才会在黑色的背景中看见。
C# winform 开发五子棋人机对战,通过计算棋子权重,获得电脑落子坐标
局域网人人对战 and 人机对战
这是一个五子棋软件的代码!有人机和玩家对战的!放在这里主要是赚积分!没事的朋友也可以下载帮个忙!谢谢了!
本程序的功能齐全,开始,重开,悔棋,认输等,电脑智能比较高,算法很全,有计时限制,并且每一步棋子都有坐标提示