java课程设计人机对弈五子棋

上传人:第*** 文档编号:61592187 上传时间:2018-12-05 格式:DOC 页数:28 大小:389KB
返回 下载 相关 举报
java课程设计人机对弈五子棋_第1页
第1页 / 共28页
java课程设计人机对弈五子棋_第2页
第2页 / 共28页
java课程设计人机对弈五子棋_第3页
第3页 / 共28页
java课程设计人机对弈五子棋_第4页
第4页 / 共28页
java课程设计人机对弈五子棋_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《java课程设计人机对弈五子棋》由会员分享,可在线阅读,更多相关《java课程设计人机对弈五子棋(28页珍藏版)》请在金锄头文库上搜索。

1、Java 程序设计 课程设计报告 学学 院:院: 理学院理学院 班班 级:级: 姓姓 名:名: 学学 号:号: 指导教师:指导教师: 课设时间:课设时间: 2015-06-232015-06-23 至至 2015-06-252015-06-25 二二 O O 一五一五 年年 六月六月 二十五二十五 日日 课程设计(论文)任务书 理 学学 院院 信息与计算科学 专专 业业 2012-2 班班 一、课程设计一、课程设计( (论文论文) )题目:题目: 人机对弈五子棋游戏 二、课程设计二、课程设计( (论文论文) )工作:工作: 自 20152015 年 6 6 月 2323 日起至 2015201

2、5 年 6 6 月 2525 日止 三、课程设计三、课程设计( (论文论文) ) 地点地点: : 5-205 四、课程设计四、课程设计( (论文论文) )内容要求:内容要求: 1 1本课程设计的目的本课程设计的目的 (1)使学生掌握软件开发的基本工作流程; (2)巩固 JAVA 程序设计课程所学的内容; (3)培养学生的计算机思维能力以及合作的精神; (4)培养学生分析、解决问题的能力; (5)提高学生的科技论文写作能力。 2 2课程设计的任务及要求课程设计的任务及要求 1 1)基本要求:)基本要求: (1)研究课程设计任务,并进行系统需求分析; (2)对系统进行总体设计,分解系统功能模块,进

3、行任务分配,以实现分工合作; (3)实现各功能模块代码; (4)系统组装,测试、完善系统。 2 2)创新要求:)创新要求: 在基本要求达到后,可进行创新设计,如改进界面、增加功能或进行代码优化。 3 3)课程设计论文编写要求)课程设计论文编写要求 (1)要按照书稿的规格打印誊写课程设计论文 (2)论文包括封面、设计任务书(含评语)、摘要、目录、设计内容、设计小结 (3)论文装订按学校的统一要求完成 4 4)参考文献:)参考文献: (1)丁振凡,JAVA 语言程序设计,清华大学出版社 (2)丁振凡,JAVA 语言程序设计实验指导与习题解答,清华大学出版社 (3)http:/ 5 5)课程设计进度

4、安排)课程设计进度安排 内容内容 天数天数 地点地点 系统总体设计 1 实验室 软件设计及调试 1 实验室 答辩及撰写报告 1 实验室、图书馆 学生签名:学生签名: 2015 年 6 月 25 日 课程设计课程设计( (论文论文) )评审意见评审意见 (1) 课程设计过程(20 分):优( )、良( )、中( )、一般( )、 差 ( ); (2) 是否完成调试,系统运行效果(30 分):优( )、良( )、中( )、 一般( )、差( ); (3)回答问题(20 分):优( )、良( )、中( )、一般( )、差( ); (4)课程设计报告(30 分):优( )、良( )、中( )、一般(

5、)、差 ( ); (5)格式规范性及考勤是否降等级:是( )、否( ) 评阅人评阅人: 职称职称:教授 2015 年 6 月 25 日 人机对弈五子棋游戏设计人机对弈五子棋游戏设计 摘要:摘要: 近些年来五子棋游戏成为了人们的最爱,游戏的下载量很高可以说一 直排在前几位,也是人们日常生活中放松娱乐的最爱,特别是最近IT行业的 发展,人工智能的实现,移动客户端的发展和普及为我们五子棋游戏的发 展带来了新的生机,新的高潮,人工智能与五子棋的完美结合是五子棋的 又一项重要发展,而我们现在开发的人机对弈更是掀起了五子棋发展的新 篇章,为五子棋的发展与传播提供了新的机会,但是机会与挑战并存,我 们相信通

6、过我们对五子棋程序的不断优化和完善,五子棋一定会越来越受 到大家的欢迎 。 本次课程设计要求利用 Java 语言设计出一个人机对弈五子棋游戏, 能实现人机对弈五子棋。了解五子棋对弈规则后,利用本学期所学的 Java 高级图形界面编程方法的知识,并通过穷举法,考虑八个方向连 成五子的几率高低,让计算机具有人工智能,成功设计出人机对弈五子 棋的游戏。除了人机对弈的功能,我们还增加了人人对战的功能。这项 功能使得人与人之间能够互下五子棋,不仅仅是人与计算机对弈。除此 之外,还增加了再来一局、认输、悔棋、退出游戏的功能,为了让游戏 功能更加丰富,还增加了棋盘、模式、外观三个菜单栏供用户选择相应 功能的

7、菜单项。 目录目录 1 1、课程设计的目的及目标、课程设计的目的及目标1 1 1.1 课程设计的目的课程设计的目的1 1 1.2 课程设计的目标课程设计的目标1 1 2 2、概要设计、概要设计 1 1 2.1 开发工具及环境开发工具及环境1 1 2.2 任务及需求分析任务及需求分析 1 1 2.3 工作原理工作原理 1 1 3 3、具体实现、具体实现 2 2 3.1 类设计类设计 2 2 4 4、运行调试与分析讨论、运行调试与分析讨论 3 3 5 5、设计体会与小结、设计体会与小结 1010 6 6、参考文献、参考文献 1010 附录:(源程序)附录:(源程序) 1 10 0 1、课程设计的目

8、的及目标 1.11.1 课程设计的目的:课程设计的目的: 本次课程设计的目的是为了让学生使用 java 语言编程的知识,通 过编写一个简单的五子棋游戏,检验一个学期以来学习 java 语言的收 获成果,以及检查自己在学习 java 语言的过程中的漏洞来弥补不足,以 便以后更好、更熟练地使用 java 语言来编写方便、娱乐生活的程序。 1.21.2 课程设计的目标:课程设计的目标: 本次课程设计所要求的五子棋游戏应达到以下几方面的要求: 1.运行程序后即刻出现棋盘并可以开始下棋; 2.先手为黑棋,后手为白棋;人为先手,计算机为后手; 3.程序能响应鼠标点击并在相应位置画出棋子; 4.计算机具有一

9、定的智能,能够与人进行五子棋对弈; 5.程序可以正确判断出局面的胜负情况并及时报出结果,终止棋局; 6.尽可能实现人人对战功能。 2、概要设计 2.12.1 开发工具及环境开发工具及环境 文本编辑器:记事本; 运行环境:命令提示符(DOS 环境)。 2.22.2 任务及需求分析任务及需求分析 设计人机对弈五子棋程序,实现人与计算机进行五子棋对弈,具体任务如下: (1)棋盘布局设计; (2)计算机下子的算法分析; (3)编程实现棋子的绘制以及具体的再来一局、认输、悔棋、退出游戏等功能; (4)运行测试程序,调试纠正运行错误。 2.32.3 工作原理工作原理 (1)工作过程 运行程序后,首先出现五

10、子棋游戏窗体,用户点击游戏菜单项,出现相关子菜单,选择模 式子菜单中的人机对弈便可进入人机对弈模式。然后移动鼠标,在窗体的棋盘上点击鼠标下子, 即可在棋盘中相应位置显示下的对应棋子。接下来计算机会根据用户下的棋,采取穷举法选择 八个方向上赢面最大的位置下子,用户与计算机谁先达到五子连成一线,谁便是获胜方。若选 择模式子菜单中的人人对战便可进入人人对战模式。两个用户可同时玩游戏,同样谁先达到五 子连成一线,谁便是获胜方。若下棋过程中,双方中有一方要认输,便可选择游戏菜单项中的 认输按钮,认输的一方显然失败,另外一方获胜。若双方中有一方要悔棋,便可选择游戏菜单 项中的悔棋按钮,经过对方的同意后,才

11、能够重新翻盘,再来一局。若双方势均力敌,可选择 游戏菜单项中的棋盘子菜单,点击大号棋盘或超大号棋盘,以便避免棋盘空间不足造成无法分 出胜负的情况。若觉得窗体外观不太美观,可选择外观菜单中的三个选项进行选择。为了显示 程序的相关制作信息,程序提供了版本菜单进行显示。具体功能实现见第四章节图。 (2)工作原理 利用图形界面编程实现,利用到的知识点包括: 窗体的创建和应用界面布局; 事件处理,包括按钮的动作事件处理,鼠标事件,窗体事件; 接口知识:事件处理中通过接口约束事件监听者必须实现相应接口中定义的方法; 流程控制语句:通过条件判断区分不同事件源,作不同操作处理。 3、 具体实现 3.13.1

12、类设计类设计 (1) 类名:ChessFrame 作用:创建五子棋游戏主窗体和菜单。 该类继承 JFrame 类,实现 ActionListener 接口。 类中含有的方法介绍: ChessFrame()构造方法:构造五子棋游戏的主窗体; makeMenu()方法:构造五子棋游戏的主菜单; makeMenuItem()方法:构造五子棋游戏的菜单项; makeRadioButtonMenuItem()方法:构造五子棋游戏的单选按钮式菜单项。 (2) 类名:ChessModel 作用:规定棋盘的宽度、高度、棋盘的模式;规定棋盘方格的横向、纵向坐标、棋盘方格的 横向、纵向坐标所对应的棋子颜色;并且规

13、定了记录棋盘棋子信息数组arrMapShow只有4个值: 1,2,3,-1,其中1代表该棋盘方格上下的棋子为黑子,2代表该棋盘方格上下的棋子为白子, 3代表为该棋盘方格上没有棋子,-1代表该棋盘方格不能够下棋子;定义了交换棋手的标识符 isOdd,棋盘方格上是否有棋子的标识符isExist。 类中含有的主要方法介绍: ChessModel()构造方法:根据不同的棋盘模式(modeChess)来构建对应大小的棋盘; badxy()方法:判断下子的横向、纵向坐标是否越界; readyplay()方法:判断该坐标位置是否可下棋子; play()方法:在该坐标位置下棋子; computerDo()方法

14、:用穷举法判断每一个坐标点的八个方向的的最大棋子数,最后得 出棋子数最大值的坐标,计算机再下子(这八个方向分别是:左、右、上、下、左上、 左下、右上、右下); checkMax()方法:计算棋盘上某一方格上八个方向棋子的最大值; showSuccess()方法:赢棋后的提示; showDefeat()方法:输棋后的提示。 (3) 类名:MainPanel 作用: 1、构建一个面板,在该面板上画上棋盘; 2、处理在该棋盘上的鼠标事件(如鼠标左键点击、鼠标右键点击、鼠标拖动等); 该类继承 JPanel 类,实现 MouseListener、MouseMotionListener 接口。 类中含有

15、的主要方法介绍: paintComponent()方法:根据坐标计算出棋盘方格棋子的信息(如白子还是黑子), 然后调用 draw 方法在棋盘上画出相应的棋子; mousePressed ()方法:响应鼠标的点击事件,根据鼠标的点击来下棋,根据下棋判断 胜负等; mouseMoved()方法:响应鼠标的拖动事件。 (4) 类名:FiveChessAppletDemo 作用:显示五子棋游戏窗体。 类中含有的方法介绍: main()方法:程序运行的入口,创建了 ChessFrame 类的一个实例对象(cf),并启动 屏幕显示显示该实例对象。 (5) 类名: ChessWindowEvent 作用:响应退出窗口。 类中含有的方法介绍: windowClosing()方法:处理窗口关闭; ChessWindowEvent ()构造方法:提供无参构造方法。 4、运行调试与分析讨论 图 4-1 人机对弈模式选择界面 图 4-2 人机对弈界面 图 4-3 结果信息显示界面 图 4-4 人人对战模式选择界面 图 4-5 悔棋界面 图 4-6 悔棋提示界面 图 4-7 悔棋后棋盘清空提示界面 图 4-8 悔棋后棋盘清空界面 图 4-9 认输界面 图 4-10 认输提示界面 图 4-11 认输后结果信息界面 图 4-12 棋盘选择界面 图

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号