本项目要实现的是五子棋人机版,经过制定棋型的评分表使机器可以对棋盘局势评估。五子棋玩家双方分别称为“人”、“机器” ,当人落子后,机器对棋盘扫描获取可行棋的位置集合,而后遍历该集合,利用评估函数对每一个空位依次估分,得分最高的位置即为机器要落子的位置,在使用评估函数对空位打分时,为了不机器只攻不守,须要使用“换位思考”的思想,也就是说打分时不只考虑自身,还要考虑对方。html
Location类封装棋盘上的一个位置,AI对局势分析时会对位置打分,因此位置实体类应该有个字段保存位置分数,Location类的设计如图1所示。函数
public Location(int x, int y)spa
构造函数。x:横坐标,y:纵坐标设计
public Location(int x, int y, int player)3d
构造函数。x:横坐标,y:纵坐标,player:位置全部者htm
public Location(int x, int y, int player, int score)对象
构造函数。x:横坐标,y:纵坐标,player:位置全部者,score:位置分数blog
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()
获取该位置的分数
ChessPanel类负责视图上的事情,如棋盘以及棋子的绘制、棋盘状态的保存、落子、清空等事件,ChessPanel类的设计如图2所示。
参考文档和完整的文档和源码下载地址: