中国跳棋的设计与实现最终版论文

上传人:仙*** 文档编号:33888946 上传时间:2021-10-19 格式:DOC 页数:49 大小:911KB
返回 下载 相关 举报
中国跳棋的设计与实现最终版论文_第1页
第1页 / 共49页
中国跳棋的设计与实现最终版论文_第2页
第2页 / 共49页
中国跳棋的设计与实现最终版论文_第3页
第3页 / 共49页
点击查看更多>>
资源描述
武汉理工大学毕业设计中国跳棋的设计与实现摘要 制作跳棋游戏旨在满足人们休闲的需要,在紧张工作之余休闲类的小游戏能够给人带来最大程度的放松,也可以增进人们之间的交流,沟通,方便人们娱乐的目的。在项目完成过程中主要解决了,整体界面的设计和棋子图片的生成;棋子图片路径判断函数两大问题。用image控件画图解决了棋盘和棋子生成的问题。用flag二维数组获得棋子的位置并加以控制。在两张相同图片所能连通的所有路径中,如果存在一条转弯点不多于两个的路径,就可以跳转;如果没有,则不予处理。用这样的方法解决棋子图片路径判断的问题。 电脑游戏产业作为现代电脑电子技术的产物,正在以其独特的魅力在全世界的娱乐领域占据主流位置,我们在承认广大娱乐网民的选择空间狭小的同时,也必须明确的一点就是电脑游戏本身所具有的强大的吸引力。近年来,世界电脑游戏市场高速发展。根据统计,全球网络玩家所占互联网人群的比例已经超过30%。电脑游戏凭借其信息双向交流,速度快,不受空间限制等互联网有时,具有诱人的互动性、仿真性和竞技性,已经成为网络业盈利优厚的三大领域之一。而单机的小游戏,以其休闲、娱乐、轻松等优点,也受到广大群众的喜爱。关键字:电脑游戏;跳棋;java游戏IBased on the development of JAVA game of checkers Abstract To meet the needs of people leisure, the tension in his spare time leisure game can bring the greatest degree of relaxation, also can improve the communication between people, communication, convenient for people entertainment purposes. At the completion of the project process mainly solves, the interface design and the piece picture; two issues of function pieces picture path judgment.(1)Using image drawing control to solve the problem of generating a chessboard and chess pieces(2)Using two-dimensional array flag to obtain the position of the chess and control. (3) in two copies of the same picture can all path connected, if there is a turning point of no more than two paths, you can jump; if not, it shall not handle. To solve the judgment pieces picture path problem with such methods. The computer game industry as a product of modern computer and electronic technology, with its unique charm in the world of entertainment areas occupy the mainstream position, we recognize our entertainment netizens choice space at the same time, it must be made clear is the computer game itself has a powerful attraction. In recent years, the rapid development of computer gaming world market. According to statistics, the global network game player for Internet population ratio has exceeded 30%. Computer games with its information two-way exchange, fast speed, not limited by space and other internet sometimes, with attractive interaction, simulation and competitiveness, has become one of the three major areas of the network industry of lucrative. While stand-alone game, with its leisure, entertainment, etc. also easy, loved by the masses.Key words: Computer games;Checkers;Java gameII目 录摘要IAbstractII1 选题背景11.1 课题来源11.2 目的11.3 意义11.4 主要问题11.5 发展概况12 设计原理33 开发语言JAVA介绍53.1 概述53.2 特点73.2.1 平台无关性73.2.2 安全性83.2.3 面向对象83.2.4 分布式83.2.5 健壮性83.2.6 解释型83.2.7 动态93.3 区别93.4 应用93.4.1 与Internet93.4.2 与电子商务103.4.3 开发过程104 需求分析114.1 可行性研究114.1.1 经济可行性114.1.2 技术可行性114.1.3 运行可行性114.1.4 时间可行性114.1.5 法律可行性125系统设计135.1 基本思路135.1.1 解决游戏区域问题135.1.2 获取图片位置的思路135.2 界面的设计和棋子图片的生成155.2.1 界面的设计155.2.2 棋子图片的生成155.2.3 单击控件的事件触发185.2.4 按钮制作195.3 跳转路径是否符合规律206 系统调试与测试246.1 程序调试246.2 程序的测试246.2.1 测试的重要性及目的246.2.2 测试的步骤256.2.3 测试的主要内容25总结27致谢28参考文献29外文及翻译30附 录 A 外文原文30附 录 B 外文译文41IV1 选题背景1.1 课题来源 随着电脑软硬件技术和互联网的飞速发展,电脑游戏也突飞猛进,成功游戏不断涌现。比较成熟的项目主要有:反恐精英(CS)、星际争霸、魔兽争霸3、FIFA2003、帝国时代、FIFA2004等等。这时也出现了越来越多的小游戏,休闲类项目包括跳棋、纸牌、扫雷、弹珠台、连连看等。 1.2 目的 电脑游戏产业作为现代电脑电子技术的产物,正在以其独特的魅力在全世界的娱乐领域占据主流位置,我们在承认广大娱乐网民的选择空间狭小的同时,也必须明确的一点就是电脑游戏本身所具有的强大的吸引力。近年来,世界电脑游戏市场高速发展。根据统计,全球网络玩家所占互联网人群的比例已经超过30%。电脑游戏凭借其信息双向交流,速度快,不受空间限制等互联网有时,具有诱人的互动性、仿真性和竞技性,已经成为网络业盈利优厚的三大领域之一。而单机的小游戏,以其休闲、娱乐、轻松等优点,也受到广大群众的喜爱。小游戏制作的目的是满足了人们休闲的需要,在紧张工作之余休闲类的小游戏能够给人带来最大程度的放松,也可以增进人们之间的交流,沟通,方便人们娱乐的目的。 另外也通过本程序将几年来所学的专业知识和其他方面的知识融入到实际应用中。1.3 意义 通过此次课题的设计,掌握如何制作一个游戏软件,以及制作游戏软件的整个流程,制作游戏软件的步骤,为以后的就业工作打下基础。 1.4 主要问题 开始制作游戏时,主要要解决的问题有以下几个方面:如何设置整个游戏的界面;如何控制跳棋游戏中棋子图片的生成且每种图片必须为偶数个;游戏开始后,判断鼠标两次点击的图片能否消去,即图片是否相同且图片之间路径的判断;如何判断游戏是否结束以及输赢问题等。 1.5 发展概况 电脑游戏正处于加速发展周期中,中国电脑游戏市场迅速扩大,近三年的年均增长率超过100%。电脑游戏的告诉发展,逐渐引起了我国政府的高度重视,信息产业部、文化部、新闻出版总属等相关部门都在积极推动各项市场监管和鼓励电脑游戏产业发展的政策措施的出台,2003年电脑游戏首次被正式纳入国家863计划,标志着我国电脑游戏产业已经的到政府的充分重视。除外,在电脑游戏产业发展的同时,有力带动了相关行业的发展,如软件、计算机、通信、电信运营、互联网等,根据统计,电脑游戏能够带动10倍于自身产值的相关行业的发展。预计未来三年,中国游戏时常规模仍将保持60%以上的告诉增长,至2006年市场规模将接近100亿元,而多样的资本运作模式将成为电脑游戏产业发展的重要推动力。同时,手机游戏、家用游戏机、游戏传媒、电子竞技等游戏周边行业也将快速发展起来。 2 设计原理本设计采用单机服务器模式,游戏规则是模仿网络上普通的跳棋游戏,主要是鼠标两次点击的图片能否实现跳转到指定位置的问题。当前,前提是点击棋子图片,若点击的是同一张图片或者两张不同的图片,则不予处理。在两张想同图片所能连通的所有路径中,如果存在一条转弯先给跳棋整个代码做一个整体介绍,说明每个包,每个类具体作用:1.org.yushang.jumpchess.appAppJumpChess.java实现的漂亮的窗体界面,标题栏和各种按钮,设置玩家个数及类型(人,或是计算机)。2.org.yushang.jumpchess.audioWavePlayer.java主要用于播放游戏中各种声音效果,比较简单。3.org.yushang.jumpchess.imageImageLoader.java主要用于从资源文件中导入各种图片背景,比较简单。4. org.yushang.jumpchess.InterfaceAnimation.java是用于播放动画的超类;AnimationGO.java是用于播放棋子走动的动画;AnimationSelect.java是用于播放棋子被选中后,“抖动”动画效果;Drawer.java主要是静态地显示棋盘、棋子、下棋位置等图片;JumpChessControl.java是一个很复杂的类,控制玩家下棋顺序、棋子棋盘的显示、 动画显示、以及响应玩家的下棋的鼠标事件。5.org.yushang.jumpchess.pkgChess.java棋子类,说明棋子的颜色以及索引号等信息; ChessBoard.java棋盘类。系统创自论文下载网索引功能:为棋子和棋盘坐标建立索引关系,根据棋子的可快速检索出该棋子的坐标或根据坐标快速检索出该位置是否有棋子。由于这两项功能在下棋过程中使用频率很高,因此对性能要求也很高。下棋规则:设定了下棋规则,可以是传统的规则,也可以隔空跳规则。这是一个麻烦的工作。涉及数据结构方面的知识,有图的生成和最短路径搜索两个难点。RealChessBoard和VirtualChessBoard是ChessBoard派生类: RealChessBoard中建立了棋子和棋盘坐标建立真正的索引关系。而VirtualChessBoard是建立在RealChessBoard基础之上的,VirtualChessBoard只是保存当已走动的棋子坐标变化情况,这样VirtualChessBoard的数据量很小,提高计算机下棋智能计算速度,这一优点在介绍计算机下棋策略详细讨论。RealChessBoard和VirtualChessBoard只是创建方式有点区别,使用上没有任何差别,这也是多态性的一个运用。Player.java玩家类,保存了玩家棋子颜色、昵称、敌对玩家,棋子摆放初始区域等信息。同时输出下棋路径,为播放动画作准备。有两个Play和Man两个派生类,计算机玩家的下棋由org.yushang.jumpchess.strategy控制,而人玩家的下棋要由用户鼠标事件来驱动。这两个类实现这两个不同的功能。6. org.yushang.jumpchess.pub,BoardArea.java这把棋盘各玩家所处的位置编号成6个区域。该类可得到自己区域包含哪些坐标(getAreaPositions)。也可得到和自己相对区域(getOppsiteArea)。Color.java是棋子颜色类。Director.java棋盘任何一坐标位置(非棋盘边界),在放六个方向上都有相邻的坐标位置。Map.java、Node.java、Nodes.java三个文件是和数据结构“图”相关的三个类。lPosition.java棋盘坐标类,有三个功能:设定了棋盘边界、给定一方向可以得到该方向上相邻的坐标、计算与另一坐标的距离。7. org.yushang.jumpchess.strategy计算机下棋策略主要有以下几个方面: 计算出己方所有可能走法 选出一个跳得最远(尽快让自己获胜)的棋子和走法。 选择一个最可能阻碍对方前行的棋子和走法。 尽可能选择可为下一步提供最有利条件的棋子和走法 对以上几项做综合分析,得出较好的走法。 Analyser.java:策略分析类,运用对各种策略进行综合分析, 得出较好的下棋位置。Strategy.java:策略基类。MainStrategy.java:让棋子跳得最远的策略。DoubleStrategy.java: 为下一步提供最有利条件的策略。OppsiteScore.java:尽可能阻碍对方前行的策略。3 开发语言JAVA介绍3.1 概述它最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景,于是改造了Oak,以“Java”的名称正式发布。Java 编程语言的风格十分接近C、C+语言。Java是一个纯的面向对象的程序设计语言,它继承了 C+ 语言面向对象技术的核心,Java舍弃了C +语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java SE 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。但在 J2SE 1.4.2 发布后,Java 的执行速度有了大幅提升。与传统程序不同,Sun 公司在推出 Java 之际就将其作为一种开放的技术。全球数以万计的 Java 开发公司被要求所设计的 Java 软件必须相互兼容。“Java 语言靠群体的力量而非公司的力量”是 Sun 公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同。 Sun 公司对 Java 编程语言的解释是:Java 编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。 Java 平台是基于 Java 语言的平台。这样的平台非常流行,因此微软公司推出了与之竞争的.NET平台以及模仿 Java 的 C#语言。 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.1x版发展到1.2版。目前常用的Java平台基于Java1.4,最近版本为Java1.6。Java分为三个体系JavaSE,JavaEE,JavaME。Java语言是一个支持网络计算的面向对象程序设计语言。Java语言吸收了Smalltalk语言和C+语言的优点,并增加了其它特性,如支持并发程序设计、网络通信、和多媒体数据控制等。主要特性如下:1、Java语言是简单的。Java语言的语法与C语言和C+语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C+ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。2、Java语言是一个面向对象的。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C+ 语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。3、Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、 ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。4、Java语言是健壮的。Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。5、Java语言是安全的。Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。 6、Java语言是体系结构中立的。Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件), 然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。 7、Java语言是可移植的。这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。8、Java语言是解释型的。如前所述,Java程序在Java平台上被编译为字节码格式, 然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。9、Java是高性能的。与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C+。 10、Java语言是多线程的。在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable) 的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。 Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。11、Java语言是动态的。Java语言的设计目标之一是适应于动态变化的环境。Java程序需要的类能动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。特别是Java企业应用编程接口(Java Enterprise APIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库。1、JDBC(Java Database Connectivity)提供连接各种关系数据库的统一接口。2、EJB(Enterprise JavaBeans)使得开发者方便地创建、部署和管理跨平台的基于组件的企业应用。3、Java RMI(Java Remote Method Invocation)用来开发分布式Java应用程序。一个Java对象的方法能被远程Java虚拟机调用。这样,远程方法激活可以发生在对等的两端,也可以发生在客户端和服务器之间,只要双方的应用程序都是用Java写的。4、Java IDL(Java Interface Definition Language) 提供与CORBA(Common Object Request Broker Architecture)的无逢的互操作性。这使得Java能集成异构的商务信息资源。5、JNDI(Java Naming and Directory Interface)提供从Java平台到的统一的无逢的连接。这个接口屏蔽了企业网络所使用的各种命名和目录服务。6、JMAPI(Java Management API)为异构网络上系统、网络和服务管理的开发提供一整套丰富的对象和方法。7、JMS(Java Message Service)提供企业消息服务,如可靠的消息队列、发布和订阅通信、以及有关推拉(Push/Pull)技术的各个方面。8、JTS(Java transaction Service)提供存取事务处理资源的开放标准,这些事务处理资源包括事务处理应用程序、事务处理管理及监控。在Java技术中,值得关注的还有JavaBeans,它是一个开放的标准的组件体系结构,它独立于平台,但使用Java语言。一个JavaBean是一个满足JavaBeans规范的Java类,通常定义了一个现实世界的事物或概念。一个JavaBean的主要特征包括属性、方法和事件。通常,在一个支持JavaBeans规范的开发环境(如Sun Java Studio 和IBM VisualAge for Java)中,可以可视地操作JavaBean,也可以使用JavaBean构造出新的JavaBean。JavaBean的优势还在于Java带来的可移植性。现在,EJB (Enterprise JavaBeans) 将JavaBean概念扩展到Java服务端组件体系结构,这个模型支持多层的分布式对象应用。除了JavaBeans,典型的组件体系结构还有DCOM和CORBA,关于这些组件体系结构的深入讨论超出了本书的范围。3.2 特点3.2.1 平台无关性平台无关性是指Java能运行于不同的平台。Java引进虚拟机 原理,并运行于虚拟机,实现不同平台的Java接口之间。使用Java编写的程序能在世界范围内共享。Java的数据类型与 机器无关,Java虚拟机(Java Virtual Machine)是建立在硬件和操作系统之上,实现Java二进制代码的解释执行功能, 提供于不同平台的接口的。3.2.2 安全性Java的编程类似C+,学习过C+的读者将很快掌握Java的精髓。Java舍弃了C+的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针侵入系统。Java对程序提供了安全管理器,防止程序的非法访问。3.2.3 面向对象Java吸取了C+面向对象的概念,将数据封装于类中,利用类的优点,实现了程序的简洁性和便于维护性。类的封装性、继承性等有关对象的特性,使程序代码只需一次编译,然后通过上述特性反复利用。程序员只需把主要精力用在类和接口的设计和应用上。Java提供了众多的一般对象的类,通过继承即可使用父类的方法。在Java中,类的继承关系是单一的非多重的,一个子类只有一个父类,子类的父类又有一个父类。Java提供的Object类及其子类的继承关系如同一棵倒立的树形,根类为Object类,Object类功能强大,经常会使用到它及其它派生的子类。3.2.4 分布式Java建立在扩展TCP/IP网络平台上。库函数提供了用HTTP和FTP协议传送和接受信息的方法。这使得程序员使用网络上的文件和使用本机文件一样容易。3.2.5 健壮性Java致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开发早期出现的错误。Java自己操纵内存减少了内存出错的可能性。Java还实现了真数组,避免了覆盖数据的可能,这些功能特征大大提高了开发Java应用程序的周期。并且Java还提供了Null指针检测、数组边界检测、异常出口、Byte code校验等功能。3.2.6 解释型我们知道C,C+等语言,都是针对CPU芯片进行编译,生成机器代码,该代码的运行就和特定的CPU有关。Java不像C或C+,它不针对CPU芯片进行编译,而是把程序编译成称为自字节码的一种“中间代码”。字节码是很接近机器码的文件,可以在提供了java虚拟机(JVM)的任何系统上被解释执行。3.2.7 动态java程序的基本组成单元就是类,有些类是自己编写的,有些是从类库中引入的,而类又是运行时动态装载的,这就使得Java可以在分部环境中动态的维护程序及分类,而不像C+那样,没档期类库升级以后,如果想让程序具有新类库提供的功能,就需要修改程序,重新编译。3.3 区别Java提供了一个功能强大语言的所有功能,但几乎没有一点含混特征。C+安全性不好,但C和C+被大家接受,所以Java设计成C+形式,让大家很容易学习。Java去掉了C+语言中的指针运算、结构、typedefs、#define、需要释放内存等功能,减少了平常出错的50%,让Java的语言功能很精炼。而且,因为Java很小,所以整个解释器只需215K的RAM,并增加了一些很有用的功能,如自动收集碎片。Java实现了C+的基本面象对象技术并有一些增强,(为了语言简单,删除了一些功能)。Java处理数据方式和用对象接口处理对象数据方式一样。Java与C和C+直接相关.Java继承了C的语法,Java 的对象模型是从C+改编而来的.现代程序设计始于C,而后过渡到C+,则是JAVA.通过大量的继承,JAVA提供了一个强大的,可以更好地利用已有成果的,逻辑一致的程序设计环境,并且增加了在线环境需求的新功能.或许最重要的一点在于,由于它们的相似性,C,C+和JAVA为专业程序员定义了一个统一的概念架构.程序员从其中的一种语言转到另一种语言时,不会遇到太大的困难。3.4 应用3.4.1 与Internet我们知道,早先的www仅可以传送文本和图片,Java的出现实现了互动的页面,是一次伟大的革命。Java并不是为Internet、www而设计的,它也可以用来编写独立的应用程序。Java是一种面向对象语言,Java语言类似于C+语言,所以已熟练掌握C+语言的编程人员,再学习Java语言就容易得多!Java程序需要编译,它被放置在Internet服务器上,当用户访问服务器时,Java程序被下载到本地的用户机上,由浏览器解释运行。实际上有两种Java程序:一种Java应用程序是一个完整的程序,如Web浏览器。另一种Java小应用程序是运行于Web浏览器中的一个程序。Java程序和它的浏览器HotJava,提供了可让你的浏览器运行程序的方法。你能从你的浏览器里直接播放声音,你还能播放页面里的动画,Java还能告诉你的浏览器怎样处理新的类型文件。当我们能在2400 baud线上传输视频图象时,HotJava将能显示这些视频。3.4.2 与电子商务电子商务是当今的热门话题,然而传统的编程语言难以胜任电子商务系统,电子商务要求程序代码具有基本的要求:安全、可靠、同时要求能与运行于不同平台的机器的全世界客户开展业务。Java以其强安全性、平台无关性、硬件结构无关性、语言简洁同时面向对象,在网络编程语言中占据无可比拟的优势,成为实现电子商务系统的首选语言。3.4.3 开发过程编写源文件,使用一个文本编辑器,如Edit或记事本,来编写源文件。不可使用Word编辑器,因为它含有不可见字符。将编好的源文件保存起来,源文件的扩展名必须是.java。(2)编译Java源文件使用Java编译器(javac.exe)编译源文件得到字节码文件。(3)运行Java程序Java程序分为两类Java应用程序和java小应用程序,Java应用程序必须通过Java编译器(java.exe)来解释执行器字节码文件;java小应用程序必须通过支持Java标准的浏览器来解释执行。4 需求分析4.1 可行性研究跳棋作为一款休闲益智游戏,它最大的优点在于游戏规则家喻户晓,简单,上手快,趣味性强,所以受广大用户青睐,在各大提供棋牌类游戏的平台都可以看到玩跳棋游戏的人很多。休闲益智游戏中等级并不是最重要的追求目标,通过对游戏规则的熟悉,能很快上手掌握其操作方式,也更适合男女老幼全家共同娱乐,花费时间简短,速战速决,在短时间内感受到游戏的乐趣,完全享受气氛轻松活跃的游戏过程。此种娱乐方式既不耽误时间也能轻松调剂娱乐,充分适合现代人们的娱乐需求。更主要的是开发了人的智力,成为年轻一代最流行的游戏,据统计,跳棋游戏的玩家中,学生占了接近三分之一的比例,对学生的智力健康成长起一定作用,正所谓休闲娱乐两不误。4.1.1 经济可行性开发该游戏所需的相关资料可以通过已存在的相关系统进行调查采集,所需的其他应用软件、硬件系统也易于获得.因此,开发成本较低。而引进使用本系统后,与传统方式相比,具有高效率、低成本、高质量的特点,可以节省不少人力、物力及财力。所以,从经济的角度来看,该系统可行。4.1.2 技术可行性技术可行性要考虑现有的技术条件是否能够顺利完成开发工作,软硬件配置是否满足开发的需求等。本系统用的是JAVA开发语言,调试相对简单,当前的计算机硬件配置也完全能满足开发的需求,因此在技术上是绝对可行的。4.1.3 运行可行性 跳棋游戏是人们所熟知的休闲游戏,上手快,适合男女老幼全家共同娱乐,所花时间也较短,能够充分满足现代人的娱乐需求。4.1.4 时间可行性从时间上看,在两个月的时间里学习相关知识,并开发游戏,时间上是有点紧,但是不是不可能实现,通过两个多月的努力功能基本实现。4.1.5 法律可行性 所有技术资料都为合法。 开发过程中不存在知识产权问题。 未抄袭任何系统,不存在侵犯版权问题。5系统设计 把整个软件分成两个模块:1、整体界面的设计和棋子图片的生成;2、棋子图片路径判断函数。5.1 基本思路 5.1.1 解决游戏区域问题 这个问题最简单,但是却是最花时间的。正所谓:万事开头难。刚开始想了好多控件来实现。比如Label,Panel等等,后来在发现一个跳棋游戏可以通过image控件来画图。因此在几天之后才解决这个最早的最简单的也是最头疼的问题。 5.1.2 获取图片位置的思路 首先,最基本的就是关于程序图片的位置怎么获取,以及如何控制。这里采用最常用的方法数组。考虑到图片是多行多列的格式。所以采用二维数组(数组名为flag)的方式来控制比较直观,并且为了程序容易解读,统一在不同过程中用名为i和j的变量来分别表示行列。程序开始时给数组中的各个元素赋初值为0,即表示没有图片。 然后数组控制整个游戏区域,游戏区域最外围为空白区域,即相关元素的值为0。这样就可以保证游戏刚开始后,第二层显示的图片之间的相连路径处理时就没有阻碍了。 现在介绍flag数组具体控制图片的过程,首先,由于每张图片显示的宽度高度为3947,所以整个控件设置为468376(包括外围空白的两行两列)。而每张图片可以用flagi,j来表示,它在image内部的位置为x=i*39到(i+1)*39,y=j*47到(j+1)*47这样image控件内的一点M(x,y)所对应的图片就可以转化为数组flagi,j的值来判断。这个思路的具体算法可以后面的5.2.2的第二个步骤中得以体现。 final static private int pos = 5,5, /X坐标为1,Y的上限是5,下限是5 5,6, /X坐标为2,Y的上限是5,下限是6 5,7, /X坐标为3,Y的上限是5,下限是7 5,8, /X坐标为4,Y的上限是5,下限是8 1,13, /X坐标为5,Y的上限是1,下限是13 2,13, /6 3,13, /7 4,13, /8 5,13, /9 5,14, /10 5,15, /11 5,16, /12 5,17, /13 10,13, /14 11,13, /15 12,13, /16 13,13, /17 ; 在Position类中IsLegalPosition函数可以确定一个坐标是否合法 public static boolean IsLegalPosition(int x, int y) if (x 17) return false; if (y posx - 11) return false; return true; 下图为关于棋盘坐标的图示:图5-1棋盘上棋子位置的坐标图5.2 界面的设计和棋子图片的生成 由于这个程序的界面并不是很复杂,所以用到的控件也不多,主要核心内容还是后台的代码设计。图片的随机生成主要是用到一个random()函数将随机数赋值给flag数组中的每个元素,然后根据数组元素值,来显示图片。(这个在5.1.2的思路中有详细的介绍)5.2.1 界面的设计 将整体界面分为三个大的部分,左上部分为游戏图片显示区域,即主区域,用IMAGE控件;右上角为命令按钮。具体界面设计如下图所示:图5-2游戏界面5.2.2 棋子图片的生成 实现这个功能要分很多个步骤: 1. 程序运行时即载入游戏需要的六张图片。通过一个循环,将命名为1-6.bmp的位图载入到数组的各个元素。这个数组的下标也是相应的从标志为1-6.这样后面通过将flag标志的值置为1-6判断,该载入哪张图片。具体载入图片的代码如下: for i:=1 to 6 do begin fki:=TBitmap.Create;/生成一个数组分别存放六张图片 fki.loadfromfile(pic+inttostr(i)+.bmp); end; 2. 当确认游戏开始时,通过画图过程完成图片生成,画图的过程代码如下 procedure TForm1.drawmap(); var i,j,k:integer; begin ; image1.Canvas.Rectangle(0,0,468,376); /初始化设置画出一片空白区域 for i:=1 to 6 do/将给二组数组相关元素赋1-6的值,以方便画出相应图 for j:=1 to 10 do begin ; randomize(); repeat k:=random(6)+1; /将生成随机数加1(为了防止0生成) flagi,j:=k; /控制每个元素显示图片的名称,六张图片文件名为1-6,均是.bmp格式 samek:=samek+1; until samek11; image1.Canvas.Draw(j*39,i*47,fkflagi,j); -*说明开始*- 在相关的的位置上画出设置好的图片。具体画哪张图,通过第三个参数完成,这里用fk数组来确定,而且下标则由相关位置(由flag数组的行列位置来标志)的值来判定。-*说明结束*- end; end; 其中主要用到了Pascal语言中的Random函数。点击开始游戏,并选择玩家个数后,生成相应的棋子数目,选择两个玩家后生成棋子如图5-3所示:图5-3 棋子的生成系统创自论文下载网索引功能:为棋子和棋盘坐标建立索引关系,根据棋子的可快速检索出该棋子的坐标或根据坐标快速检索出该位置是否有棋子。由于这两项功能在下棋过程中使用频率很高,因此对性能要求也很高。下棋规则:设定了下棋规则,可以是传统的规则,也可以隔空跳规则。这是一个麻烦的工作。涉及数据结构方面的知识,有图的生成和最短路径搜索两个难点。RealChessBoard和VirtualChessBoard是ChessBoard派生类: RealChessBoard中建立了棋子和棋盘坐标建立真正的索引关系。而VirtualChessBoard是建立在RealChessBoard基础之上的,VirtualChessBoard只是保存当已走动的棋子坐标变化情况,这样VirtualChessBoard的数据量很小,提高计算机下棋智能计算速度,这一优点在介绍计算机下棋策略详细讨论。RealChessBoard和VirtualChessBoard只是创建方式有点区别,使用上没有任何差别,这也是多态性的一个运用。Player.java玩家类保存了玩家棋子颜色、昵称、敌对玩家,棋子摆放初始区域等信息。同时输出下棋路径,为播放动画作准备。有两个Play和Man两个派生类,计算机玩家的下棋由org.yushang.jumpchess.strategy控制,而人玩家的下棋要由用户鼠标事件来驱动。这两个类实现这两个不同的功能。6. org.yushang.jumpchess.pubBoardArea.java这把棋盘各玩家所处的位置编号成6个区域。该类可得到自己区域包含哪些坐标(getAreaPositions)。也可得到和自己相对区域(getOppsiteArea)。Color.java是棋子颜色类。Director.java棋盘任何一坐标位置(非棋盘边界),在放六个方向上都有相邻的坐标位置。Map.java、Node.java、Nodes.java三个文件是和数据结构“图”相关的三个类。Position.java棋盘坐标类,有三个功能:设定了棋盘边界、给定一方向可以得到该方向上相邻的坐标、计算与另一坐标的距离。7. org.yushang.jumpchess.strategy计算机下棋策略主要有以下几个方面: 计算出己方所有可能走法。 选出一个跳得最远(尽快让自己获胜)的棋子和走法。 选择一个最可能阻碍对方前行的棋子和走法。 尽可能选择可为下一步提供最有利条件的棋子和走法。 对以上几项做综合分析,得出较好的走法。 Analyser.java:策略分析类,运用对各种策略进行综合分析, 得出较好的下棋位置。Strategy.java:策略基类。MainStrategy.java:让棋子跳得最远的策略DoubleStrategy.java: 为下一步提供最有利条件的策略OppsiteScore.java:尽可能阻碍对方前行的策略5.2.3 单击控件的事件触发 总共有2个按钮和6个文本框。2个按钮分别是:开始(进入游戏开始状态,当双方同时开始后就自动开始游戏)、退出(退出游戏程序)。6个文本框中半用来输入玩家信息;另一个是用来输入计算机信息的。 2个按钮的事件以开始按钮事件较复杂,其它两个非常简单。下面就列出两个复杂的代码: 准备按钮过程代码: procedure TForm1.startClick(Sender: TObject); begin gamevalue:=60;/用来存储剩余图片数,开始默认为60 start.Enabled:=false;/准备后,将按钮置为不可使用。 ready:=ready+1;/准备后,ready变量加1 player:=inputbox(,); if IsServer then ServerSocket.Socket.Connections0.SendText(prep) else ClientSocket.Socket.SendText(prep); 由于同一程序妆作服务器端和客户端,所以要判断不同的发送信息方式。另由于各种情况传送信息全部为字符串,而网络通信过程却要判断不同的信息类型,因此发送时定义一个协议就是在所有发送的字符串之前加入一个四个字符长的字符串。当接收方收到时再根据这四个字符定义的协议来处理不同的事件。Static boolean mouseDown = false; /鼠标是否按下的标记 Static Point lastMousePoint = null; /按下鼠标时的位置lblTitle.addMouseListener(new MouseAdapter( public void mouseDown(MouseEvent e) mouseDown = true; /设置按下标记 lastMousePoint = new Point(e.x, e.y); /记录按下的位置 /鼠标释放时public void mouseUp(MouseEvent e) mouseDown = false; /清除按下标记 ); lblTitle.addMouseMoveListener(new MouseMoveListener() public void mouseMove(MouseEvent e) if (mouseDown) /鼠标在lblTitle上移动,且鼠标已按下 Point nowMousePoint = new Point(e.x, e.y);/鼠标的新位置 Point point = sShell.getLocation(); /当前Sh
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!