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

1 任务设计书

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

2 类与对象的设计

2.1 类

2.1.1 位置实体类Location

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

ace63c8345d15270d655f7afa7642607.png

ea9a4e181410f50cf14978f6b57a60f0.png
  • 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所示。

ad01054c3afa37360ffb459c250136cb.png

ea9a4e181410f50cf14978f6b57a60f0.png

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值