期末课程设计之java实现五子棋的人机和人人对战

五子棋人机实现和人人实现(java)

一.前言

这学期期末课程设计选题选的是《用java完成五子棋人机以及人人对战》。其中人人主要是java的网络编程,运用UDP,socket来传输数据,每当有一方下棋,那么就会发送下棋一方的位置信息,这部分主要是调试比较麻烦,需要用两台电脑(一台电脑也可以实现);人机的主要难点在于电脑怎么下棋,其实这是程序最精华的部分,你的人机要够聪明。我这里写的人机比较简单,大概是入门偏上的等级,其中主要的思路是在别的博客上习得。下面贴出代码:主要看中级人机部分代码吧,这里说下大概思路,首先需要遍历棋盘上每个位置(这里我的棋盘大小是19*19),对于每一个位置都需要给他计分,具体计分方法是这样的,在当前位置向八个方向遍历,如:向上遍历有3个白棋,那么这个位置的分数很高,因为活四(百度搜索一下五子棋基本术语以及含义)就是必赢了,以此类推可以算出每个位置的分数,当然这个分数有两种,一种是相对于白棋,另一种是相对于黑棋,最后要比较这两种分数,最后找到棋盘上分数最高的点,电脑就下在这了。如果我的代码晦涩难懂,那么我强力推荐一篇博客,写的非常好。

二.代码链接:

链接: ,麻烦大家git的时候给我小星星,感谢!

1.开始界面

2.人机界面

3.人人界面

三.总结

每次写课程设计总有一种应付感,实现了基本的功能之后就不再去完善它,这个程序有较多的bug,比如人机对战中下在边缘位置的时候会出现很蠢的bug,还有人人对战的时候,当中途一方退出另一方并不知道。

经验分享 程序员 微信小程序 职场和发展