博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[源码和文档分享]基于java的人机五子棋
阅读量:5080 次
发布时间:2019-06-12

本文共 987 字,大约阅读时间需要 3 分钟。

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.cnblogs.com/ddgg5151/p/10091494.html

你可能感兴趣的文章
listbox拖动排序
查看>>
2019年6月多校联训b层——搜索算法 Problem A 宽搜 营救
查看>>
[No000062]读书八字诀:怎样将书读得通透?
查看>>
BZOJ 4326 NOIP2015 运输计划(树上差分+LCA+二分答案)
查看>>
Servlet下
查看>>
hammer.js
查看>>
LeetCode #151 Two Sum
查看>>
VM Fusion配置静态IP和物理机通讯
查看>>
数据仓库小记(二)
查看>>
【S】SQL SERVER检查临时表占用空间情况
查看>>
mybatis入门(八)
查看>>
springboot+mybatisplus+lombook项目中数据问题。
查看>>
SQL server知识点
查看>>
Promise/Bluebird源码
查看>>
000webhost虚拟主机绑定自定义二级域名
查看>>
C语言基础
查看>>
Class.forName的作用以及为什么要用它【转】
查看>>
做技术,切不可沉湎于技术
查看>>
js调试系列: 调试基础与技巧
查看>>
Redis Getshell总结
查看>>