已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于 java 五子棋程序设计与开发 毕毕 业业 论论 文文 论 文 题目基于 java 五子棋游戏 院 系 名称 专 业 名称 班 级 学 生 姓名 学 号 指导教师姓名 基于 java 五子棋程序设计与开发 目录目录 内容摘要 1 关 键 字 1 ABSTRACT 1 KEY WORDS 1 前言 1 第一章 概述 2 1 1 编程语言 2 1 2 JAVA开发平台 3 第二章 需求分析 5 2 1 五子棋发展史 5 2 2 五子棋功能说明 6 第三章 设计分析 8 3 1 重点模块分析 8 3 2 设计流程 8 4 1 主类 TEST 9 4 2 程序窗体类 FIVECHESSFRAME类 9 第五章 游戏的调试 20 第六章 结论 24 参考文献 24 基于 java 五子棋程序设计与开发 1 内容摘要内容摘要 随着互联网迅速的发展 网络游戏已经成为人们普遍生活中不可或缺 的一部分 它不仅能使人娱乐 也能够开发人的智力 就像本文所主要讲的五子棋 游戏一样能挖掘人们聪明的才干与脑袋的机灵程度 本文主要讲的是用 Eclipse 开发工具与 java 开发语言开发出一个自定义界面的五子 棋小游戏 本游戏程序能实现两个人对阵下棋 并且程序中能自定义游戏的时间并 且也能智能的判定游戏的获胜方和游戏的结束与否 实现两方进行博弈 关键词 关键词 Eclipse java 语言 智能 自定义 五子棋 AbstractAbstract As the rapid development of Internet Online games have become an integral part of the universal life Not only does it make people entertainment but also to develop people s intelligence as in this paper as the main spoken welcome to play smart to tap people s talents and head of the clever level This article is talking about Eclipse development tools and java development language to develop a custom interface Gobang game the game program can achieve against two people playing chess and the program can be custom game time and also be able to determine intelligence the game winning side and the end of the game or not to achieve two side game KeyKey wordswords Eclipse java language intelligence user defined chess 前言前言 电脑已经深入到日常工作和生活的方方面面 比如文字处理 信息管理 辅助设 计 图形图像处理 教育培训以及游戏娱乐等 Windows 系统的推出使电脑从高雅 的学术殿堂走入了寻常百姓家 各行各业的人们无须经过特别的训练就能够使用电 脑完成许许多多复杂的工作 然而 虽然现在世界上已经充满了花样繁多的各种软 件 但它们依然不能满足用户的各种特殊需要 人们还不得不开发适合自己特殊需 求的软件 作为一名学生 在系统的学习了 Java 语言之后 用它编了一些小程序 这次课 程设计 我就想将学过的 Java 语言中的各种技术综合起来 编写一个小游戏 既对 自己学过的技能进行一次检验 也能系统地将学过的知识复习巩固 基于 java 五子棋程序设计与开发 2 第一章第一章 概述概述 本文使用功能强大的 Eclipse 开发工具和 java 开发语言开发出一款拥有自己特 色的五子棋小程序 其中 Eclipse 是一个开放源代码的 基于 Java 的可扩展开发 平台 就其本身而言 它只是一个框架和一组服务 用于通过插件组件构建开发环 境 幸运的是 Eclipse 附带了一个标准的插件集 包括 Java 开发工具 Java Development Tools JDT 1 11 1 编程语言编程语言 1 1 11 1 1 javajava 语言介绍语言介绍 现代技术的发展 尤其是网络技术 给现代企业带来了许多新的机遇和挑战 如 改善客户服务 全球化和信息检索等 这些在技术上反映为信息的获取 系统管理 系统集成 新技术的开发 Internet Intranet 等等与商业的结合 而这些要求一 个随处可用的开放的结构和在不同的平台之间低成本的信息传递方式 Java 正好满 足这些要求 Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言 以下简称 Java 语言 和 Java 平台的总称 用 Java 实现的 HotJava 浏览器 支持 Java applet 显示了 Java 的魅力 跨平台 动感的 Web Internet 计算 从此 Java 被广泛接受并推动了 Web 的迅速发展 常用的浏览器现在均支持 Java applet 另一方面 Java 技术也不断更新 Java 平台由 Java 虚拟机 Java Virtual Machine 和 Java 应用编程接口 Application Programming Interface 简称 API 构成 Java 应用编程接口为 Java 应用提供了一个独立于操 作系统的标准接口 可分为基本部分和扩展部分 在硬件或操作系统平台上安装一 个 Java 平台之后 Java 应用程序就可运行 现在 Java 平台已经嵌入了几乎所有的 操作系统 这样 Java 程序可以只编译一次 就可以在各种系统中运行 Java 应用 编程接口已经从 1 1 x 版发展到 1 2 版 目前常用的 Java 平台基于 Java1 2 Java 语言是一个支持网络计算的面向对象程序设计语言 Java 语言吸收了 Smalltalk 语言和 C 语言的优点 并增加了其它特性 如支持并发程序设计 网络 通信 和多媒体数据控制等 基于 java 五子棋程序设计与开发 3 1 1 21 1 2 javajava 语言的优点语言的优点 1 面向对象 Java 提供了简单的类机制和动态的构架模型 对象中封装了它的状态变量和方 法 很好地实现了模块化和信息隐藏 而类则提供了一类对象的原型 通过继承和 重载机制 子类可以使用或重新定义父类或超类所提供的方法 从而既实现了代码 的复用 又提供了一种动态的解决方案 2 多线程 多线程使应用程序可以同时进行不同的操作 处理不同的事件 在多线程机制 中 不同的线程处理不同的任务 他们之间互不干涉 不会由于一处等待影响其他 部分 这样容易实现网络上的实时交互操作 3 动态性 Java 的设计使它适合于一个不断发展的环境 在类库中可以自由地加入新的方 法和实例变量而不会影响用户程序的执行 并且 Java 通过接口来支持多重继承 使之比严格的类继承具有更灵活的方式和扩展性 4 安全性 用于网络 分布环境下的 Java 必须要防止病毒的入侵 Java 不支持指针 一 切对内存的访问都必须通过对象的实例变量来实现 这样就防止了程序员使用欺骗 手段访问对象的私有成员 同时也避免了指针操作中容易产生的错误 5 可移植性 与平台无关的特性使 Java 程序可以方便地被移植到网络上的不同机器 同时 Java 的类库中也实现了与不同平台的接口 使这些类库可以移植 另外 Java 编译 器是由 Java 语言实现的 Java 运行时系统由标准 C 实现 这使得 Java 系统本身 也具有可移植性 1 21 2 javajava 开发平台开发平台 1 2 11 2 1 javajava 的开发环境的开发环境 Java 是由 Sun 微系统公司所发展出来的程序语言 它本身是一种对象导向 Object Oriented 的程序语言 JAVA 目前在手机上应用最多的就是 JAVA 游戏 Java 也号称是能跨平台使用的语言 这主要是因为 Java 本身被编译之后 并 基于 java 五子棋程序设计与开发 4 不是直接产生可执行的码 而是产生一种中间码叫作 ByteCode 这种码必需在透过 Java 的直译器来解读它 才能够真正的被执行 所以只要平台上装有这种 Java 的 直译器 就能解读 ByteCode 也就能执行 Java 编译过的程序 故与 Java 程序是在哪 种平台上被编译的 就完全没有关系了 Java 写出来的程序可分为两类 分别是 Java Applet 与一般的 Application 而 Application 这一类就与一般的程序如 C 的作用是比较类似的 是一个独立可执行的应用程序 像 HotJava 是一个浏览器 且就是使用 Java 程序所开发出来的 最常见的 Java 程序包括应用程序和 applets 应用程序是单独的程序 诸如 HotJava 浏览器软件就是用 Java 语言编写 的 Applets 类似于应用程序 但是它们不能单独运行 Applets 可以在支持 Java 的浏览器中运行 Applet 主要是内置于 HTML 网页中 在浏览时发挥作用 1 2 21 2 2 javajava 的编辑环境的编辑环境 一 用功能强大的开源工具 Eclipse 来开发 相对较为方便 eclipse 比较通用 而且 支持很多插件 二 Java 主要是利用文本编辑器来完成程序设计的编辑工作 可以使用各种文本编 辑器来编写 例如 记事本 Editplus 和 UltraEdit 软件等都可以用来实现 1 用记事本编写过程很简单 只需要带开记事本在里面编写代码几可以了 2 用 Editplus 软件配置 JAVA 编辑环境 1 打开 Editplus 选择 工具 参数选择 在弹出的窗口中选择 用户工具 2 点组名称 将 组 1 改成别的名称 当然不改也可以 点 添加工具 应用程序 菜 单文件选项可写 Java 编译 在命令中选择 JDK 的 javac exe 是在 JDK 的目录下的 bin 目录下 参数在下拉菜单中选择 文件名 初始目录在下拉菜单中选择 文件目录 在 捕获输出 前打勾 这就完成了 Java 编译 的配置 3 再点 添加工具 应用程序 菜单文件选项可写 Java 运行 在命令中选择 JDK 的 java exe 参数在下拉菜单中选择 文件名 不含扩展名 初始目录在下拉菜单中选择 文件目录 在 捕获输出 前打勾 完成了 Java 编译 的配置 配置完成了 写一个 Hello World 来测试一下 只要按快捷键 Ctrl 1 是对当前打开的文件进行编译 只要按快捷 键 Ctrl 2 是运行当前文件 三 Jbulder 也是 java 的一款开发工具 功能更全面 而且操作好多都是即见即所得 的 就想 VB 一样方便快捷 不过它是一款收费软件 所以不是一些大公司一般不会 基于 java 五子棋程序设计与开发 5 使用它来作为 java 的开发工具 1 2 31 2 3 javajava 的运行环境的运行环境 通常一个程序运行的平台是一个硬件或者软件运行的环境 目前比较流行的是 Windows 2000 Linux Solaris 和 MacOS Java 的平台不太一样 它由两个部分组成 一个是 Java Virtual Machine 即 Java 虚拟机 另一部分是 Java Application Programming Interface Java API 即 Java 应用程序设计接口 这两部份软件就构成了 Java 运行的基本的环境 Java API 是一个大的已经做好的软件集合 这个集合里有 许多开发时所需要的控件 用来辅助开发 Java API 和 JVM 整合在一起处于机器硬 件之上 也就是说 Java 平台把一个 Java 应用程序从硬件系统分离开从而很好的保 证了程序的独立性 为了更好的适应开发的需要 Java 的设计者们为我们提供了三 种 Java 平台 Java 2 Micro Edition J2ME Java 2 Standard Edition J2SE 和 Java 2 Enterprise Edition J2EE 每一个版本都提供了丰富的开发工具箱以适应不同的开发 需要 第二章第二章 需求分析需求分析 2 12 1 五子棋发展史五子棋发展史 五子棋是起源于中国古代的传统黑白棋种之一 现代五子棋日文称之为 连珠 英译为 Renju 英文称之为 Gobang 或 FIR Five in a Row 的缩写 亦有 连五子 五子连 串珠 五目 五目碰 五格 等多种称谓 五子棋不仅能增强思维能力 提高智力 而且富含哲理 有助于修身养性 五 子棋既有现代休闲的明显特征 短 平 快 又有古典哲学的高深学问 阴阳易理 它既有简单易学的特性 为人民群众所喜闻乐见 又有深奥的技巧和高水平的国 际性比赛 它的棋文化源渊流长 具有东方的神秘和西方的直观 既有 场 的概 念 亦有 点 的连接 它是中西文化的交流点 是古今哲理的结晶 对于五子棋与围棋的关系有两种说法 一说早于围棋 早在 尧造围棋 之前 民间就已有五子棋游戏 一说源于围棋 是围棋发展的一个分支 在中国的文化里 倍受人们的青睐 古代的五子棋的棋具与围棋相同 纵横各十七道 五子棋大约随 围棋一起在我国南北朝时先后传入朝鲜 日本等地 基于 java 五子棋程序设计与开发 6 2 22 2 五子棋功能说明五子棋功能说明 2 2 12 2 1 五子棋特点及规则五子棋特点及规则 五子棋的娱乐性强 规则简单 易学 流行性广 普通人不需长时间专门训练即可 自如行棋 因此极受大众喜欢 五子棋规则为 1 棋盘 采用像围棋盘一样的棋盘 本系统采用 18 路的棋盘 2 下法 两人分别执黑白两色棋子 轮流在棋盘上选择一个无子的交叉点落子 无子的 交叉点又被称为空点 3 输赢判断 黑 白双方有一方的五个棋子在横 竖或斜方向上连接成一线即为该方 赢 2 2 22 2 2 操作界面需求操作界面需求 操作界面如下图 1 所示 游戏画面简单易懂 图 1 基于 java 五子棋程序设计与开发 7 2 2 32 2 3 程序流程程序流程 2 2 32 2 3 主要模块主要模块分析分析 我们看到本程序由 4 个基本功能模块构成 各模块的详细分析如下 1 初始化 FiveChessFrame 类 过 imagePath System getProperty user dir bin image background jpg bgImage ImageIO read new File imagePath replaceAll 加载背景图片 然后再背景图上通过 paint 方法中的 for int i 0 i 18 i g2 drawLine 258 102 30 i 767 102 30 i g2 drawLine 258 30 i 102 258 30 i 612 语句绘制一个 18 18 的网格棋盘 每次下棋后通过调用 repaint 方法来初 始化程序 2 通过 public void mousePressed MouseEvent e 这个主方法中的 isBlack 变量值 来判断当前应该哪一方开始下棋 3 若是白子 则通过 allChess 这个二维数组的值为 1 来定义该子 若是黑子 则通过 allChess 数组的值为 2 来定义该子 若为 0 则为空 4 通过 checkWin 方法来判定当前方是否已练成 5 个同颜色的棋子 若 同时有了 5 个同颜色的连子 不论是竖直 水平还是斜方向的 则判定 开始 1 初始化 2 主控制 3 白方下子 白方 黑方 否则 胜利 4 判断胜负 结束 3 黑方下子 基于 java 五子棋程序设计与开发 8 该方获胜 第三章第三章 设计分析设计分析 3 13 1 重点模块分析 重点模块分析 本程序最重要的就是能够自动判定黑白两方各个方向上的棋子是否连成了五 个相同颜色的棋子 怎么做到这点呢 这个要通过 private int checkCount int xChange int yChange int color 方法来判定 然后通过 private boolean checkWin 方法判定获胜方 具体方法后边会写出 供读者了 解分析 其次本程序关键的一点就是可以模拟游戏中的按钮来自定义游戏的时 间 从而增加本游戏的可控性 智能性 同时增强游戏玩家的趣味性和刺激性 3 23 2 设计流程 设计流程 因为本程序用 Eclipse 开发 如图 2 图 2 在 Eclipse 中建立了两个类 一个是有主方法的 test 主类 另一个是程序的 主窗体 FiveChessFrame 类 同时为了方便管理和应用两个类都分别打包了 基于 java 五子棋程序设计与开发 9 具体见后面 第四章 代码设计 4 14 1 主类主类 TestTest packagepackage org guoguo game test import org guoguo game frame FiveChessFrame public class Test public static void main String args FiveChessFrame ff new FiveChessFrame 4 24 2 程序窗体类程序窗体类 FiveChessFrameFiveChessFrame 类 类 4 2 14 2 1 主类主类 FiveChessFrameFiveChessFrame public class FiveChessFrame extends JFrame implements MouseListener Runnable int width Toolkit getDefaultToolkit getScreenSize width int height Toolkit getDefaultToolkit getScreenSize height BufferedImage bgImage null int x 0 int y 0 int allChess new int 18 18 boolean isBlack false boolean canPlay true String message 白方先行 int maxTime 0 Thread t new Thread this int blackTime 0 int whiteTime 0 String blackMessage 无限制 String whiteMessage 无限制 String blackMessage0 无限制 String whiteMessage0 无限制 public FiveChessFrame this setTitle 五子棋 基于 java 五子棋程序设计与开发 10 this setSize 1000 750 this setLocation width 1000 2 height 750 2 this setResizable false this setDefaultCloseOperation JFrame EXIT ON CLOSE this addMouseListener this this setVisible true t start t suspend this repaint String imagePath try imagePath System getProperty user dir bin image background jpg bgImage ImageIO read new File imagePath replaceAll catch IOException e e printStackTrace 4 2 24 2 2 画棋盘的画棋盘的 paintpaint 方法 方法 public void paint Graphics g BufferedImage bi new BufferedImage 1000 750 BufferedImage TYPE INT RGB Graphics g2 bi createGraphics g2 setColor Color WHITE g2 drawImage bgImage 1 20 this g2 setFont new Font 隶书 Font BOLD 20 g2 drawString 游戏信息 message 428 83 g2 setColor Color BLACK g2 setFont new Font 宋体 Font BOLD 14 g2 drawString whiteMessage 128 360 g2 drawString blackMessage0 128 315 g2 setColor Color WHITE g2 drawString blackMessage 830 365 g2 drawString whiteMessage0 830 315 g2 setColor Color BLACK g2 setFont new Font 隶书 Font BOLD 40 for int i 0 i 18 i 基于 java 五子棋程序设计与开发 11 g2 drawLine 258 102 30 i 767 102 30 i g2 drawLine 258 30 i 102 258 30 i 612 g2 fillOval 375 219 8 8 g2 fillOval 645 219 8 8 g2 fillOval 645 489 8 8 g2 fillOval 375 489 8 8 for int i 0 i 18 i for int j 0 j 260 if result 0 for int i 0 i 18 i for int j 0 j 0 blackMessage maxTime 3600 maxTime 60 maxTime 3600 60 maxTime maxTime 60 60 whiteMessage maxTime 3600 maxTime 60 maxTime 3600 60 maxTime maxTime 60 60 t resume else blackMessage 无限制 whiteMessage 无限制 this canPlay true this repaint if e getX 264 基于 java 五子棋程序设计与开发 14 try maxTime Integer parseInt input 60 if maxTime 0 JOptionPane showMessageDialog this 请输入正确信息 不 允许输入负数 if maxTime 0 int result JOptionPane showConfirmDialog this 设置完成 是否重新开始游戏 if result 0 for int i 0 i 18 i for int j 0 j 0 int result JOptionPane showConfirmDialog this 设置完成 是否重新开始游戏 if result 0 for int i 0 i 18 i for int j 0 j 656 else count this checkCount 0 1 color if count 5 flag true else count this checkCount 1 1 color if count 5 flag true else count this checkCount 1 1 color if count 5 flag true return flag private int checkCount int xChange int yChange int color int count 1 int tempX xChange int tempY yChange while x xChange 0 else yChange xChange tempX yChange tempY while x xChange 0 else yChange return count public void run if maxTime 0 while true if isBlack blackTime 基于 java 五子棋程序设计与开发 19 if blackTime 0 message 白方胜利 JOptionPane showMessageDialog this 黑方超时 游戏结 束 blackMessage 0 0 0 this canPlay false this repaint t suspend else
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 玩具展位买卖合同
- 学校弱电系统改造合同
- 建筑结构设计委托施工合同
- 超市仓储后勤人员招聘协议
- 移动十年宣传活动方案
- 《安永会计师事务所》课件
- 《上生物总复习》课件
- 福建省南平市(2024年-2025年小学五年级语文)人教版小升初真题(上学期)试卷及答案
- 保育工作经验分享交流心得体会范文(14篇)
- 预防手足口病传染病
- 赵学慧-老年社会工作理论与实务-教案
- 《世界主要海峡》
- 住院医师规范化培训师资培训
- “三新”背景下的数学课堂教学 论文
- 中央企业商业秘密安全保护技术指引2015版
- 螺旋果蔬榨汁机的设计
- 《脊柱整脊方法》
- 会计与财务管理专业英语智慧树知到答案章节测试2023年哈尔滨商业大学
- 广东省2020年中考英语试题【含答案】
- 0417 教学能力大赛 公共基础《英语 》教学实施报告 电子商务专业
- 拦砂坝施工设计方案
评论
0/150
提交评论