[源码和文档分享]基于java的人机五子棋

1 任务设计书

本项目要实现的是五子棋人机版,通过制定棋型的评分表使机器能够对棋盘局势评估。五子棋玩家双方分别称为“人”、“机器” ,当人落子后,机器对棋盘扫描获取可行棋的位置集合,然后遍历该集合,利用评估函数对每个空位依次估分,得分最高的位置即为机器要落子的位置,在使用评估函数对空位打分时,为了避免机器只攻不守,需要使用“换位思考”的思想,也就是说打分时不仅考虑自身,还要考虑对方。

2 类与对象的设计

2.1 类

2.1.1 位置实体类Location

Location类封装棋盘上的一个位置,AI对局势分析时会对位置打分,所以位置实体类应该有个字段保存位置分数,Location类的设计如图1所示。

public Location(int x, int y)

构造函数。x:横坐标,y:纵坐标

public Location(int x, int y, int player)

构造函数。x:横坐标,y:纵坐标,player:位置所有者

public Location(int x, int y, int player, int score)

构造函数。x:横坐标,y:纵坐标,player:位置所有者,score:位置分数

public void setX(int x)

设置横坐标的值

public void setY(int y)

设置纵坐标的值

public void setScore(int score)

设置位置分数

public void setPlayer(int player)

设置该位置由玩家player落子,player可取:Chess.PLAYER、Chess.AI

public int getX()

获取对象的横坐标

public int getY()

获取对象的纵坐标

public int getPlayer()

获取该位置是由哪位玩家所有

public int getScore()

获取该位置的分数

2.1.2 自定义棋盘类ChessPanel

ChessPanel类负责视图上的事情,如棋盘以及棋子的绘制、棋盘状态的保存、落子、清空等事件,ChessPanel类的设计如图2所示。

参考文档和完整的文档和源码下载地址:

https://www.write-bug.com/article/1372.html

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 7,974评论 2 9
  • 分享给大家一个很久之前写的一个纯C#控制台 3D闯关游戏代码 直接复制就可以用 初学者可以看看 学习一下编程思想还...
    Magic_Dong阅读 9,747评论 3 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,680评论 19 139
  • 我愿当你的树洞 倾听你的烦恼 回你一些幸福的语言 将它转换成枝叶 给你一个休憩的地方
    zjj_windmill阅读 1,917评论 0 0
  • 很完美的一天啊,天气预报说今晚开始又要来台风了就连短信都发来了,在这八九月的第三次台风又要降临了。这一天,也是我开...
    学柔学刚阅读 793评论 1 1