java--五子棋人机大战--课程设计

在这里插入图片描述
南京中医药大学 《Java 程序设计》课程设计
2020-2021 学年 二 学期
日期: 2021 年 5 月 30 日
人工智能与信息技术学院
项目名称: 五子棋
南京中医药大学
2
目录
一、概述 …4
1.1 背景…4
1.2 开发工具…4
1.3 功能图…4 二、需求分析…4
三、 游戏设计思路…6
3.1 总体设计…6
3.2 功能设计…6
3.2.1 人人模式…6
3.2.3 人机模式…7
3.3 游戏包设计 …9
3.4 界面棋盘设计… 10
3.5 算法设计… 10
四、 游戏实现… 11
4.1 ChessFrame 主要功能实现… 11
4.2 游戏主窗体实现… 11
4.3 主菜单实现… 12
4.4 具体实现步骤与关键代码… 13
4.4.1 首先创建一个 JFrame 窗体, 取名 J.java。… 13
4.4.2 创建下棋面板 为绘制棋盘做准备, 创建一个 JPanel 面板, 取名
为 Panel.java,… 13
4.4.3 绘制棋盘… 14
4.4.5 下棋功能的实现 … 14
4.4.6 胜负的判断… 19
4.4.7 显示获胜信息… 22
五、游戏功能测试… 22
5.1.1 点击游戏按钮,出现开局,棋盘,模式和退出基本按钮… 23
5.1.2 棋盘布局按钮,可以调整棋盘大小… 23
5.1.3 模式按钮,可以选择是人人还是人机模式进行游戏 … 24
5.1.4 视图按钮可以调整界面的颜色,样式… 24
5.2 人机模式… 26
5.2.1 若黑子先连成五子,则玩家胜利,输出对话框“你赢了,真厉害啊”
… 26
5.2.2 若白子先连成五子,则电脑胜利,输出对话框“你输了,重新开始游
戏”… 26
5.3 人人模式… 27
5.3.1 若黑子先连成五子,则玩家 a 胜利,输出对话框“你赢了,真厉
害”… 27
5.3.2 若白子先连成五子,则玩家 b 胜利,输出对话框“你输了,重新开
始游戏”… 27
5.4 帮助按钮… 28
5.5 点击退出,退出游戏… 28
六、课程总结… 28
南京中医药大学
3
6.1 设计体会… 28
6.2 设计不足… 29
6.3 展望… 29
七.参考文献… 30
南京中医药大学
4
一、概述
1.1 背景
相信大多数人都玩过五子棋这一款非常经典的小游戏, 其中的博弈算法很多文章都有
过专门的介绍,主要针对初学者介绍一种简单的实现五子棋中单机状态和 联机状态下人人
对弈的设计过程和部分源代码。 可将其加入在已有人机对弈的五子棋小游戏中, 增加用户
的满 意度和体验感。通过此次课程设计,巩固所学 Java 语言基本知识,增进 Java 语言编辑
基本功,掌握 JDK、Editplus、Eclipse、JCreator 等开发工具的运用,拓宽常用类库的应用。
使我们通过该教学环节与手段,把所学课程及相关知识加以融会贯通,全面掌握 Java 语言
的编程思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。
1.2 开发工具
本次课程设计,一共设计了一个 Java 版本,使用了主流的 15x20 的棋盘,
配备简单的消息提示,基于 AWT 实现 GUI,开发工具 IntelliJ IDEA 2018.1
1.3 功能图
二、需求分析
随着人们生活压力日益趋增,工作加班在平时已是 家常便饭,越来越多的人都在为数
不多的假期里面,找 一些娱乐方式放松自己,其中选择娱乐性游戏来放松自 己的人占大多
数,例如网络田径游戏、虚拟游戏竞技以 及目前正在发展的 VR 技术,而进入当前这种情
南京中医药大学
5
况的条件 是在现代社会中,当有需求时,供应就会随之产生,更何况不断增长的新网络市
场,如游戏开发以及 5G 的建设, 就是在这样的社会环境下驱动发展的。因此设计一款娱
乐性的计算机游戏是很有市场需求的。 本文以五子棋为例,该游戏开发较为简单,代码量
较少,成本比较低,且游戏对运行环境要求较低,再结合目前的五子棋发展背景,市场前景
较好 。
游戏分为三大部分:第一部分为游戏选项,第二部分为有游戏相关设置,第三部分为游
戏整体界面。其中游戏选项包括六个模块:人人对战、人机对战、重新开始、退出。游戏设
置包括两个模块:棋盘大小设置、棋盘颜色设置。游戏界面包括两个模块:游戏主页面、载
入游戏界面。
一款小游戏的确立是建立在各种各样的需求上面的,这种需求往往来自于玩家的实际需
求,其中玩家的实际需求最为重要.面对游戏拥有不同知识和理解层面的玩家,游戏制作人对
玩家需求的理解程度,在很大程度上决定了此类游戏开发的成败.因此如何更好地的了解,
分析,明确玩家需求,并且能够准确,清晰以文档的形式表达给游戏制作人,保证开发过程
按照满足玩家需求为目的正确开发方向进行,是每游戏游戏制作人需要面对的问题。
制作五子棋小游戏。有两个功能可以实现人机对战还有人人对战两个模式。
该项目为经典版本的五子棋游戏和自创的毁灭玩法所结合,总体而言是一个休闲的小
游戏。其中的规则不难,主要是为了丰富大家的文娱生活,让大家在忙碌的学习课后可以
轻松一小下。这就是本程序的编写初衷。众所周知,经典版本的五子棋不过就是判断 5 连 和 5 连以上的胜负,而这里的毁灭版,可以“毁灭”对方的 4 连状态,从而达到己方的攻
击 ,而使己方达到胜利。而对方亦可以运用这种方法获得胜利。
作为五子棋的设计需要考虑到的最基本的需求莫过于人机对战与人人对战功能的实
现,当然还有下棋过程中的下棋悔棋功能以及判断游戏的胜负等方面的要求。当然最好是
要考虑到界面的友好性,作为一个娱乐软件,还应该考虑到玩家在游戏时的舒适性。
首先,我们需要了解该程序是怎么编写的,需要用到哪些工具,用到哪些知识和方
法。以及是如何运用该方法。
1:了解五子棋的运行机制。
2:了解博弈的对战机制,如:怎么获得胜利,判断胜利的条件。
3:游戏主界面的构造,以及模型的建立。
4:各种功能如何实现,各个部分怎么构成一个整体。
5:事件的处理。
6:如何生成棋盘,以及如何生成棋子。
7:对计时工具的设计,如何运用到多线程来解决。
需要实现的功能:
A.点击开始游戏时在界面上有黑子或白子先行的提示,然后玩家开始行棋。
B.点击游戏设置时提示相应输入限制时间的信息,让玩家设置限定时间。
C.点击悔棋时给玩家一次悔棋机会。
D.点击毁灭时对方玩家棋子变成己方颜色,并且变成方形。
南京中医药大学
6
E.帮助,给出相关信息提示帮助。
三、游戏设计思路
3.1 总体设计
设计人工智能算法五子棋对战,人机对战调试是不可避免的,所以设计一款五子棋调试系统
很有必要。本系统便于调试五子棋 AI,所用 AI 与界面统被分成两个部 分,修改 AI 不需
要更改界面的系统。这两个部分通过标 准输入或输出或网络进行通信,界面系统不仅要实
现人机对战,同时帮助调试 AI。系统功能满足四个方面:(1)有完整的棋盘规格;(2)
界面程序与 AI 实现分离;(3)支持人与人、人与机器人等形式的对战。
3.2 功能设计
3.2.1 人人模式
棋盘数据结构核心:
无论你做数据库开发还是做一些小程序,第一时间考虑的必须是需求+建模。把核心设计
出来。
此次我们用一个二维数组作为棋盘,每条线交叉的地方设为二维数组的值,并约定:
3=空
1=黑棋
2=白棋
然后对应的把下棋,判断输赢(横竖斜)的算法都实现出来。
具体展现如下:
我们需要单击屏幕进行下棋,所以我们需要符合鼠标单击事件的接口。因此我们去接上
MouseListener 的接口。
再然后我们重写 JFrame 里的 paint 方法来画画。
具体体现:如下
南京中医药大学
7
其中横线和竖线都是调用的 Graphics 中的 drawLine 方法。
画圈圈用的是 drawOval 和 fillOval 分别是画空心圆和画实心圆。
3.2.3 人机模式
机器博弈是人工智能领域的重要分支,它的研究对象多以复杂的棋牌类智力游戏为
主,已经得到解决的棋类游戏,几乎全部都应归功于机器博弈近半个世纪的发展。计算机
解决问题的优势在于能把不易解析的问题,借助于现代计算机的运算速度优势枚举出所有
的合理情形而得解;然而,博弈问题的复杂程度决定了它不能过度依赖机器的计算能力。许
多待解决的或已经解决的棋类,其状态空间复杂度或博弈树复杂度量级都太过庞大,所以
我们需要添加约

  • 8
    点赞
  • 113
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值