MyException - 我的异常网
当前位置:我的异常网» 移动开发 » 自持五子棋

自持五子棋

www.MyException.Cn  网友分享于:2013-06-29  浏览:8次
自制五子棋
  • 实现五子棋人机对战
  •     1,继承JFrame类。
           首先创建一个界面,用来放棋盘。设置窗体的各属性,在界面上画线,有线的地方作为棋盘。对棋盘大小,棋子大小,棋盘上行数,列数等都要进行设置。这里的画线要在对父类JFrame的paint函数的重写方法中。这样就可以一直可见棋盘。而且在paint的重写方法中,还要对画棋子进行重写,这样每次下的棋子也就能得到保存。
    在棋盘上方还可以添加菜单栏,对菜单栏下的选项添加监听器。这样就可以让用户对下棋流程进行控制。

        2,设置下棋子的条件。
           人机对战,用户先下子,设置用户下黑子,计算机下白子。用一个计数器计算当前下了的棋子的数目count。每当count%2==0时就让用户下棋,否则计算机下棋。每下一颗棋子,进行一次判断,看是否有五子连珠。
          用户下棋时会点到棋盘上非焦点的地方。那就要对用户点击的位置进行判断。得到点击处的横纵坐标,用它们分别对棋盘格子大小取余,如果都小于误差范围或者都大于(格子大小-误差范围),那么就讲坐标点改到距离最近的焦点上。再判断这个焦点是否还是空(还没下任何棋子,用一个数组存放信息,如果是白子则为2,是黑子则为1,否则为0),是空就在该点画一个黑色的圆,设置该点处信息为1。对当前棋局进行判断,看是否已经有五子连珠了。
          接着就是计算机下棋了。设置棋子颜色为白色;count++;对当前棋局进行判断,看应该下哪一个地方才能让黑子不赢,让白字尽快赢。找到该点,在该点画一个白色的圆。判断当前是否有五子连珠。
          判断应该下哪一个点的算法:
         分析找到白子的数目和附近空格的情况。如:空白白白空;黑白白白空;对空格赋一个权值。白子数目每增加一个,所权值相应乘以10;黑子是一样的赋值方法。只要一反过来的身份来看,两种赋权值方式是相同的。
         横向,纵向,左斜方向,右斜方向四个方向分别判断棋子数目,分别赋权值。
         横向:用2个变量(a1,a2)存放当前位置的横坐标,2个变量存放当前位置纵坐标。a1--向左找相同的棋子,a2++向右找相同的棋子。记录找到的棋子总数。在继续向两边找空格数,再给当前位置处加上相应的权值,权值累加。
         其他三个方向相似的查找与赋值。只是坐标改变方式不同。
         把从四个方向分别给当前位置赋得权值加起来。用一个数组存放棋盘上个点的权值,找到权值最大且还是空格的点,在该点下白子。接着判断是否有五子连珠。


        3,判断是否五子连珠
          横向,纵向,左斜方向,右斜方向分别进行判断。     
          横向:从当前下的棋子位置向左找,一直找到跟该棋子颜色不相同或者不相连的点,判断是否已经找到有5颗相同的,如果是则输出该颜色的棋子赢了。然后从最后一个棋子向右找,记录总共找到多少个相同且相连的棋子。如果有5颗了,则输出当前下的颜色的棋子赢了。
          其他三个方向类似。
















文章评论

总结2014中国互联网十大段子
总结2014中国互联网十大段子
程序员的鄙视链
程序员的鄙视链
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
每天工作4小时的程序员
每天工作4小时的程序员
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
程序员应该关注的一些事儿
程序员应该关注的一些事儿
旅行,写作,编程
旅行,写作,编程
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
我是如何打败拖延症的
我是如何打败拖延症的
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
程序员必看的十大电影
程序员必看的十大电影
漫画:程序员的工作
漫画:程序员的工作
我的丈夫是个程序员
我的丈夫是个程序员
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
代码女神横空出世
代码女神横空出世
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
为什么程序员都是夜猫子
为什么程序员都是夜猫子
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
一个程序员的时间管理
一个程序员的时间管理
中美印日四国程序员比较
中美印日四国程序员比较
10个调试和排错的小建议
10个调试和排错的小建议
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
那些争议最大的编程观点
那些争议最大的编程观点
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
鲜为人知的编程真相
鲜为人知的编程真相
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
老程序员的下场
老程序员的下场
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
程序员都该阅读的书
程序员都该阅读的书
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
Java程序员必看电影
Java程序员必看电影
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
如何成为一名黑客
如何成为一名黑客
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有