【VB开源代码栏目提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。
网学会员整理了VB开源代码-五子棋程序设计 - 编程语言的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
基于java五子棋程序设计与开发
论文题目 基于java五子棋游戏 院系名称 计算机信息工程学院 专业名称
计算机网络 班 级 学生姓名 学 号 指导教师姓名 基于java五子棋程序设计与开发 目录 内容摘要 ............................................................... 1 关 键 字 ................................................................ 1 ABSTRACT. .............................................. 错误未定义书签。
1 KEY WORDS .............................................. 错误未定义书签。
1 前言 ................................................................... 1 第一章 概述 ............................................................ 1 1.1编程语言 .......................................................... 1 1.2 JAVA开发平台 ...................................................... 3 第二章 需求分析 ........................................................ 4 2.1五子棋发展史 ...................................................... 5 2.2五子棋功能说明 .................................................... 5 第三章 设计分析 ........................................................ 7 3.1重点模块分析 ...................................................... 7 3.2 设计流程 ......................................................... 7 4.1 主类TEST ....................................................... 8 4.2程序窗体类FIVECHESSFRAME类........................................ 9 第五章 游戏的调试 ..................................................... 19 第六章 结论 ........................................................... 24 参考文献 .............................................................. 24 致谢 ................................................................ 24 基于java五子棋程序设计与开发 1 内容摘要 随着互联网迅速的发展网络游戏已经成为人们普遍生活中不可或缺的一部分它不仅能使人娱乐也能够开发人的智力就像本文所主要讲的五子棋游戏一样能挖掘人们聪明的才干与脑袋的机灵程度。
本文主要讲的是用Eclipse开发工具与java开发语言开发出一个自定义界面的五子棋小游戏本游戏程序能实现两个人对阵下棋并且程序中能自定义游戏的时间并且也能智能的判定游戏的获胜方和游戏的结束与否实现两方进行博弈。
前言 电脑已经深入到日常
工作和生活的方方面面比如文字处理、信息管理、辅助设计、图形图像处理、教育培训以及游戏娱乐等。
Windows系统的推出使电脑从高雅的学术殿堂走入了寻常百姓家各行各业的人们无须经过特别的训练就能够使用电脑完成许许多多复杂的工作。
然而虽然现在世界上已经充满了花样繁多的各种软件但它们依然不能满足用户的各种特殊需要人们还不得不开发适合自己特殊需求的软件。
作为一名学生在系统的学习了Java语言之后用它编了一些小程序。
这次
课程设计我就想将学过的Java语言中的各种技术综合起来编写一个小游戏既对自己学过的技能进行一次检验也能系统地将学过的知识复习巩固。
第一章 概述 本文使用功能强大的Eclipse开发工具和java开发语言开发出一款拥有自己特色的五子棋小程序其中Eclipse 是一个开放源
代码的、基于 Java 的可扩展开发平台。
就其本身而言它只是一个框架和一组服务用于通过插件组件构建开发环境。
幸运的是Eclipse 附带了一个标准的插件集包括 Java 开发工具Java Development ToolsJDT。
1.1编程语言 1.1.1 java语言介绍 现代技术的发展尤其是网络技术给现代企业带来了许多新的机遇和挑战如改善客户服务、全球化和信息检索等这些在技术上反映为信息的获取、系统管理、 基于java五子棋程序设计与开发 2 系统集成、新技术的开发、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语言的优点并增加了其它特性如支持并发程序设计、
网络通信、和多媒体数据控制等。
1.1.2 java语言的优点 1面向对象 Java提供了简单的类机制和动态的构架模型。
对象中封装了它的状态变量和方法很好地实现了模块化和信息隐藏而类则提供了一类对象的原型通过继承和重载机制子类可以使用或重新定义父类或超类所提供的方法从而既实现了
代码的复用又提供了一种动态的解决
方案。
2 多线程 多线程使应用程序可以同时进行不同的操作处理不同的事件。
在多线程机制中不同的线程处理不同的任务他们之间互不干涉不会由于一处等待影响其他部分这样容易实现网络上的实时交互操作。
3动态性 Java的设计使它适合于一个不断发展的环境。
在类库中可以自由地加入新的方法和实例变量而不会影响用户程序的执行。
并且 Java通过接口来支持多重继承 使 基于java五子棋程序设计与开发 3 之比严格的类继承具有更灵活的方式和扩展性。
4 安全性 用于网络、分布环境下的Java必须要防止病毒的入侵Java不支持指针一切对内存的访问都必须通过对象的实例变量来实现这样就防止了程序员使用欺骗手段访问对象的私有成员同时也避免了指针操作中容易产生的错误。
5.可移植性 与平台无关的特性使 Java程序可以方便地被移植到网络上的不同机器。
同时 Java的类库中也实现了与不同平台的接口 使这些类库可以移植。
另外
Java编译器是由 Java语言实现的 Java运行时系统由标准 C实现 这使得Java系统本身也具有可移植性。
1.2 java开发平台 1.2.1 java的开发环境 Java是由Sun微系统公司所发展出来的程序语言它本身是一种对象导向Object-Oriented的程序语言。
JAVA目前在手机上应用最多的就是JAVA游戏。
Java也号称是能跨平台使用的语言这主要是因为Java本身被编译之后并不是直接产生可执行的码而是产生一种中间码叫作 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.2 java的编辑环境 一用功能强大的
开源工具Eclipse来开发相对较为方便eclipse比较通用而且支持很多插件。
基于java五子棋程序
设计与开发 4 二 Java主要是利用文本编辑器来完成程序设计的编辑工作可以使用各种文本编辑器来编写例如记事本、Editplus和UltraEdit软件等都可以用来实现。
1用记事本编写过程很简单只需要带开记事本在里面编写
代码几可以了。
2用Editplus
软件配置JAVA编辑环境: 1打开Editplus选择quot工具-gt参数选择quot在弹出的窗口中选择quot用户工具quot 2点组名称将quot组1quot改成别的名称当然不改也可以点quot添加工具-gt应用程序quot菜单文件选项可写quotJava编译quot在命令中选择JDK的javac.exe是在JDK的目录下的bin目录下参数在下拉菜单中选择quot文件名quot初始目录在下拉菜单中选择quot文件目录quot在quot捕获输出quot前打勾这就完成了quotJava编译quot的配置. 3再点quot添加工具-gt应用程序quot菜单文件选项可写quotJava运行quot在命令中选择JDK的java.exe.参数在下拉菜单中选择quot文件名不含扩展名quot初始目录在下拉菜单中选择quot文件目录quot在quot捕获输出quot前打勾完成了quotJava编译quot的配置.配置完成了写一个quotHello Worldquot来测试一下.只要按快捷键quotCtrl1quot是对当前打开的文件进行编译只要按快捷键quotCtrl2quot是运行当前文件. 三Jbulder也是java的一款开发工具功能更全面而且操作好多都是即见即所得的就想
VB一样方便快捷不过它是一款收费软件所以不是一些大公司一般不会使用它来作为java的开发工具。
1.2.3 java的运行环境 通常一个程序运行的平台是一个硬件或者软件运行的环境。
目前比较流行的是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. 每一个版本都提供了丰富的开发工具箱以适应不同的开发需要。
第二章 需求分析 基于java五子棋程序设计与开发 5 2.1五子棋发展史 五子棋是起源于中国古代的传统黑白棋种之一。
现代五子棋日文称之为“连珠”英译为“Renju”英文称之为“Gobang”或“FIR”Five in a Row的缩写亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。
五子棋不仅能增强思维能力提高智力而且富含哲理有助于修身养性。
五子棋既有现代休闲的明显特征“短、平、快”又有古典哲学的高深学问“阴阳易理”它既有简单易学的特性为人民群众所喜闻乐见又有深奥的技巧和高水平的国际性比赛它的棋文化源渊流长具有东方的神秘和西方的直观既有“场”的概念亦有“点”的连接。
它是中西文化的交流点是古今哲理的结晶。
对于五子棋与围棋的关系有两种说法一说早于围棋早在“尧造围棋”之前民间就已有五子棋游戏一说源于围棋是围棋发展的一个分支。
在中国的文化里倍受人们的青睐。
古代的五子棋的棋具与围棋相同纵横各十七道。
五子棋大约随围棋一起在我国南北朝时先后传入朝鲜、日本等地。
2.2五子棋功能说明 2.2.1五子棋特点及规则 五子棋的娱乐性强、规则简单、易学、流行性广普通人不需长时间专门训练即可自如行棋因此极受大众喜欢· 五子棋规则为: 1.棋盘:采用像围棋盘一样的棋盘本系统采用18路的棋盘· 2.下法:两人分别执黑白两色棋子轮流在棋盘上选择一个无子的交叉点落子无子的交叉点又被称为空点· 3.输赢判断:黑、白双方有一方的五个棋子在横、竖或斜方向上连接成一线即为该方赢· 2.2.2操作界面需求 操作界面如下图1所示游戏画面简单易懂 基于java五子棋程序设计与开发 6 图1 2.2.3程序流程 开始 1.初始化 2.主控制 3.白方下子 白方 黑方 否则 胜利 4.判断胜负 结束 3.黑方下子 基于java五子棋程序设计与开发 7 2.2.3主要模块分析 我们看到本程序由4个基本功能模块构成各模块的详细分析如下 1.初始化FiveChessFrame类 过imagePath System.getPropertyquotuser.dirquotquot/bin/image/background.jpgquot bgImage ImageIO.readnew FileimagePath.replaceAllquotquot quot/quot加载背景图片然后再背景图上通过paint方法中的for int i 0 i lt 18 i g2.drawLine258 102 30 i 767 102 30 i g2.drawLine258 30 i 102 258 30 i 612 语句绘制一个1818的网格棋盘每次下棋后通过调用repaint方法来初始化程序。
2.通过public void mousePressedMouseEvent e这个主方法中的isBlack变量值来判断当前应该哪一方开始下棋。
3.若是白子则通过allChess这个二维数组的值为1来定义该子若是黑子则通过allChess数组的值为2来定义该子若为0则为空。
4.通过checkWin方法来判定当前方是否已练成5个同颜色的棋子。
若同时有了5个同颜色的连子不论是竖直水平还是斜方向的则判定该方获胜。
第三章 设计分析 3.1重点模块分析 本程序最重要的就是能够自动判定黑白两方各个方向上的棋子是否连成了五个相同颜色的棋子怎么做到这点呢这个要通过private int checkCountint xChange int yChange int color方法来判定然后通过private boolean checkWin方法判定获胜方具体方法后边会写出供读者了解分析。
其次本程序关键的一点就是可以模拟游戏中的按钮来自定义游戏的时间从而增加本游戏的可控性智能性同时增强游戏玩家的趣味性和刺激性。
3.2 设计流程 因为本程序用Eclipse开发如图2 基于java五子棋程序设计与开发 8 图2 在Eclipse中建立了两个类一个是有主方法的test主类另一个是程序的主窗体FiveChessFrame类同时为了方便管理和应用两个类都分别打包了具体见后面。
第四章
代码设计 4.1 主类Test package org.guoguo.game.test import org.guoguo.game.frame.FiveChessFrame public class Test public static void mainString args FiveChessFrame ff new FiveChessFrame 基于java五子棋程序设计与开发 9 4.2程序窗体类FiveChessFrame类 4.2.1主类FiveChessFrame 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 0int y 0 int allChess new int1818 boolean isBlack falseboolean canPlay true String message quot白方先行quotint maxTime 0 Thread t new Threadthis int blackTime 0int whiteTime 0 String blackMessage quot无限制quotString whiteMessage quot无限制quot String blackMessage0 quot无限制quotString whiteMessage0 quot无限制quot public FiveChessFrame this.setTitlequot五子棋quot this.setSize1000 750this.setLocationwidth - 1000 / 2 height - 750 /2this.setResizablefalse this.setDefaultCloseOperationJFrame.EXIT_ON_CLOSE this.addMouseListenerthisthis.setVisibletruet.start t.suspendthis.repaint String imagePath quotquot try imagePathSystem.getPropertyquotuser.dirquotquot/bin/image/background.jpgquot bgImage ImageIO.readnew FileimagePath.replaceAllquotquot quot/quot catch IOException e e.printStackTrace 基于java五子棋程序设计与开发 10 4.2.2画棋盘的paint方法 public void paintGraphics g BufferedImage bi new BufferedImage1000 750 BufferedImage.TYPE_INT_RGB Graphics g2 bi.createGraphics g2.setColorColor.WHITEg2.drawImagebgImage 1 20 this g2.setFontnew Fontquot隶书quot Font.BOLD 20 g2.drawStringquot游戏信息quot message 428 83 g2.setColorColor.BLACK g2.setFontnew Fontquot宋体quot Font.BOLD 14 g2.drawStringwhiteMessage 128 360 g2.drawStringblackMessage0 128 315g2.setColorColor.WHITE g2.drawStringblackMessage 830 365 g2.drawStringwhiteMessage0830 315 g2.setColorColor.BLACK g2.setFontnew Fontquot隶书quot Font.BOLD 40 for int i 0 i lt 18 i g2.drawLine258 102 30 i 767 102 30 i g2.drawLine258 30 i 102 258 30 i 612 g2.fillOval375 219 8 8g2.fillOval645219 8 8 g2.fillOval645 489 8 8g2.fillOval375 489 8 8 for int i 0 i lt 18 i for int j 0 j lt 18 j if allChessij 1 int tempX i 30 258int tempY j 30 102 g2.fillOvaltempX - 12 tempY - 12 28 28 if allChessij 2 基于java五子棋程序设计与开发 11 int tempX i 30 258int tempY j 30 102 g2.setColorColor.WHITE g2.fillOvaltempX - 12 tempY - 12 28 28 g2.setColorColor.BLACK g2.drawOvaltempX - 12 tempY - 12 28 28 g.drawImagebi 0 0 this 4.2.3鼠标点击的mousePressed方法其中包括点击各个按钮的相应事件 public void mousePressedMouseEvent e System.out.printlnquotX:quote.getX System.out.printlnquotY:quote.getY if canPlay true x e.getX y e.getY if x gt260 ampamp x lt 767 ampamp y gt 101 ampamp y lt 610 x x - 260 / 30y y - 101 / 30 if allChessxy 0 if isBlack true allChessxy 1isBlack false message quot轮到白方quot else allChessxy 2isBlack true message quot轮到黑方quot boolean winFlag this.checkWin 基于java五子棋程序设计与开发 12 if winFlag true ifallChessxy 1 messagequot黑方胜利quott.suspend else messagequot白方胜利quot t.suspend JOptionPane.showMessageDialogthis quot游戏结束quot allChessxy 1 quot黑方quot : quot白方quot quot获胜quot this.canPlay false else JOptionPane.showMessageDialogthis quot当前位置已经有棋子请重新落子quot this.repaint if e.getX gt 482 ampamp e.getX lt 523 ampamp e.getY gt 667ampamp e.getY lt 685 int result JOptionPane.showConfirmDialogthis quot是否重新开始游戏quotif result 0 for int i 0 i lt 18 i for int j 0 j lt 18 j al.