孙跃捕鱼达人游戏项目开发最终确定_第1页
孙跃捕鱼达人游戏项目开发最终确定_第2页
孙跃捕鱼达人游戏项目开发最终确定_第3页
孙跃捕鱼达人游戏项目开发最终确定_第4页
孙跃捕鱼达人游戏项目开发最终确定_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1951学校代码:程设计说明书题目:捕鱼达人游戏项目开发学生姓名:孙跃学院:理学院班级:信计12-2指导教师:侯睿二。一五年六月二十六日内蒙古工业大学课程设计(论文)任务书班级:指导教师:课程名称:数据库应用课程设计学院:理学院信计12-2学生姓名:孙跃学号:201220905048侯睿一、题目捕鱼达人游戏项目开发二、目的与意义课程设计、综合设计的基本教学目的是培养学生综合运用所学知识和技能分析与解决实际问题的能力,以及严肃认真的科学态度和严谨求实的工作作风。三、要求(包括原始数据、技术参数、设计要求、图纸量、工作量要求等)采用SQLServer2005建立数据库,采用界面方式或命令方式创建数

2、据库和表。选用一种开发环境设计界面,实现信息的插入、修改、删除、查询的基本功能。在开发环境下,通过某种方法建立与SQLServer2005数据库的连接。四、工作内容、进度安排主要内容用Java程序设计语言及开发环境实现简单的捕鱼达人游戏设计。后台数据库采用SQLServer2005,完成开发环境和后台数据库的连接,系统功能包含基本信息的查询、录入、修改、以及删除。工作进度安排第一天:熟悉课程设计题目及具体要求,对所解决的问题尽量做到胸中有数,基本确定选择的高级语言及开发环境。第二天到第四天:拿出解决问题的初步方案,根据课题给出的用户基本需求,写出各数据实体的数据项和联系实体的活动以及活动要使用

3、的数据项,通过EHR图来表示。由E-R图建立适当的表,并按照不同范式的定义,对表进行规范化,并在数据库管理系统中实现设计的数据库和表。第五天到第七天:设计功能模块,确定每个模块的功能,以及各个模块之间的关系。第八天到第十天:对每个模块进行具体分析,确定需要的用户界面以及结构,完成软件的整体框架,在开发环境下,编程实现所开发的系统。第十一天到第十二天:综合调试,去除软件中的bug,美化应用程序的界面。有能力的学生增加简单的数据校验、在线错误处理和在线帮助的功能。第十三天和第十五天:撰写课程设计报告,验收。五、主要参考文献1关邸可奇.SQLServer实用教程M.北京:电子工业出版社.2014.2

4、徐传运.Java高级程序设计M.北京:清华大学出版社.2014.审核意见系(教研室)主任(签字):指导教师下达时间2015年6月8日指导教师签字:摘要捕鱼达人游戏采用Java高级程序语言设计,游戏后台数据存储、调用,使用SQLServer2005数据库管理系统。捕鱼达人游戏的设计目的是是以深海为游戏场景,各种鱼儿在其中游动的姿态自然,炮弹打击粒子效果华丽,打击感强烈,很具有趣味性。实现如用数据库存储用户名和密码,凭正确的用户名和密码登录游戏;需要有不同种类的鱼;让鱼游动起来,被炮击中时有特效(翻滚),并获得金币;炮台可以根据鼠标的位置调整方向;炮台发射时消耗金币;可以切换背景,增加趣味性等功能

5、。主要依靠如FishPanel.java,Fish.java,FishNet.java,sqljdbc4.jar等一些类和框架实现相关功能。关键词:Java;SQLServer;Eclipse;数据库连接目录引言随着人们娱乐生活的不断丰富,人们对休闲游戏的需求也越来越高。捕鱼达人是以深海为游戏场景,各种鱼儿在其中游动的姿态自然,炮弹打击粒子效果华丽,打击感强烈,很具有趣味性。捕鱼达人游戏采用Java高级程序语言设计。Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC数据中心、游戏控制台、科学超级计算机、移动电话

6、和互联网,同时拥有全球最大的开发者专业社群。游戏后台数据存储、调用,使用SQLServer2005数据库管理系统。SQLServer是Microsoft公司推出的关系型数据库管理系统。具有使用方便可伸缩性好与相关软件集成程度高等优点。MicrosoftSQLServer是一个全面的数据库平台,使用集成的商业智能(BI)工具提供了企业级的数据管理。MicrosoftSQLServer数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,可以构建和管理用于业务的高可用和高性能的数据应用程序。第一章开发环境进行游戏开发设计首先要考虑到合适的开发环境,根据需要不同,合理选择开发语言、环境,以及

7、合理的数据管理系统,这是游戏开发的重要环节。开发语言、环境,以及合理的数据管理系统选择的好,是软件开发成功的重要一步。1.1 Java(计算机编程语言)1.1.1 Java简介JavaJava是一种可以撰写跨平台应用软件的面向对象的程序设计语言技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PG数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。1.1.2 Java程序的优势与传统程序不同,Sun公司在推出Java之际就将其作为一种开放的技术。全球数以万计的Java开发公司被要求所设计的Java软件必须相互兼容。“Java语言靠群体的力量而非公

8、司的力量”是Sun公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同。Sun公司对Java编程语言的解释是:Java编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和静态的0Java平台是基于Java语言的平台。这样的平台非常流行。Java是功能完善的通用程序设计语言,可以用来开发可靠的、要求严格的应用程序。1.2 Eclipse(集成开发环境)Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse附带了一

9、个标准的插件集,包括Java开发工具(JavaDevelopmentKit,JDK0。1.3 SQLServer2005(数据库)SQLServer是Microsoft公司推出的关系型数据库管理系统。具有使用MicrosoftSQLServer是一(BI)工具提供了企业级的数据管方便可伸缩性好与相关软件集成程度高等优点个全面的数据库平台,使用集成的商业智能理。MicrosoftSQLServer数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,可以构建和管理用于业务的高可用和高性能的数据应用程序。1.3.1 SQLServer数据库的优点SQLServer能够满足今天的商业环境要求

10、不同类型的数据库解决方案。它一种应用广泛的数据库管理系统,具有许多显着的优点:易用性、适合分布式组织的可伸缩性、用于决策支持的数据仓库功能、与许多其他服务器软件紧密关联的集成性、良好的性价比等。SQLServer还为数据管理与分析带来了灵活性。从数据管理和分析角度看,将原始数据转化为商业智能和充分利用We滞来的机会非常重要。作为一个完备的数据库和数据分析包,SQLServer为快速开发新一代企业级商业应用程序、为企业赢得核心竞争优势打开了胜利之门。SQLServer是一个具备完全Web支持的数据库产品,提供了对可扩展标记语言(XML)的核心支持以及在Internet上和防火墙外进行查询的能力。

11、1.3.2 SQL语言结构化查询语言(StructuredQueryLanguage)简称SQL结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。SQL是一种用于和关系数据库进行交互计算机语言。当用户想检索数据库中的数据时,就查以用SQL语言发出请求,DBMS数据库管理系统)对SQL请求进行处理,检索到所要求的数据,并将其返回给用户。如今SQL语言仅仅是一个查询工具,它是可以对关系数据库中的数据进行组织、管理和检索的主要工具。?SQL语言可以控制DBMS1供给用户的所有功能,SQL语言已成为用户与基于SQL的DBMS勺接口。它的功能包括:数据定义、数

12、据检索、数据操作、存取共享、数据完整性。T-SQL是SQL语言的一种版本,应用于SQLServer服务器,主要包括以下几个方面构成:数据定义语言(DDL)oDDL用于执行数据库的任务,对数据库以及数据库中的各种对象进行创建、删除、修改等操作。数据库对象主要包括表、缺省约束、规则、视图、触发器、存储过程。其中主要包括的语句是CREATE,ALTER,DROP数据操纵语言(DML)oDMLlg于操纵数据库中的各种对象,检索和修改数据。其中主要包括的语句是SELECT,INSERT,UPDATE,DELETE数据控制语言(DCL)。DCL用于安全管理,确定哪些用户可以查看或修改数据库中的数据。主要包

13、括的语句是GRANT,REVOKE,DENY所以通过数据库对宿舍管理系统进行后台数据支持能够很好的实现捕鱼达人游戏中,对于用户数据的查询、增加、修改、删除等功能。第二章需求分析与功能设计进行软件项目设计和数据库设计,首先必须准确了解并分析用户需求(包括数据和处理),是捕鱼达人游戏的设计的重要基础和依据。2.1用户需求捕鱼达人是以深海为游戏场景,各种鱼儿在其中游动的姿态自然,炮弹打击粒子效果华丽,打击感强烈,很具有趣味性。所开发的游戏应包含以下功能:(1)用数据库存储用户名和密码,凭正确的用户名和密码登录游戏。(2)需要有不同种类的鱼;(3)让鱼游动起来,被炮击中时有特效(翻滚),并获得金币;(

14、4)炮台可以根据鼠标的位置调整方向;(5)炮台发射时消耗金币;(6)可以切换背景,增加趣味性;(7)根据实际开发情况适当修改和优化程序。2.2 系统分析实现以上功能需要在程序中定义相关的类,完成相关功能的设计根据游戏中主要主要功能实现应包括:FishFrame.java(主文件),FishPanel.java(画布类),Fish.java(鱼),FishThread.java(鱼游动),Bullet.java(子弹),BulletThread.java(子弹移动),FishNet.java(渔网),Money.java(金币)MoneMoveThread.java(金币移动),LoginChe

15、ck.java(数据库连接测试),LogInFrame.java(登陆界面),sqljdbc4.jar(数据FishTtreadl.javaJaradip.js.va.LoeoaJlJ'ka1-JfltvaLonirfh*2kjwAInfTrsTrwr-PjwAMoteHcivtlhread.itvaMotsjrjiva上1国-本游戏的整体流程如图库连接框架)。图2.1为本程序各主要的好唯架Bull*1,jWiDull:tTlurea.J.java.FizK。丁已FithFWandjar5适EIR|E-sc.dLilrui«>*:sq,lj-llclj皿。2.3 主要功

16、能实现如上所述,本程序的实现,主要依靠以下一些类和框架:FishFrame.java,FishPanel.java,Fish.java,FishThread.java,Bullet.java,第三章数据库建立及维护数据库是存放数据的仓库,而且这些数据存在一定的关联,并按照一定的格式存放在计算机上。从广义上讲,数据库不仅包含数字,还包括文本、图像、音频、视频等。为了使用户名和用户密码更加方便的管理和调用,本游戏的用户名和密码存储在SQLServer数据库中。3.1 数据库的建立为了更加方便简洁的对数据库进行操作,也为联系课堂所学,本文中我们使用T-SQL语句对数据库进行操作。3.1.1 数据库的

17、建立创建一个名为game的数据库,其初始大小为5MB最大为50MB允许数据库自动增长,增长方式是按10%t匕例增长。日志文件初始为2MB最大可增长为5MB,按1MBf长。存放位置为"D:fishgame建立数据库的T-SQL语句如下:CREATEDATABASgameONPRIMARY(NAMEgame_data',FILENAM目D:fishgamegame.mdf'SIZE=5MBMAXSIZ=50MBFILEGROWTH0%)LOGON(NAMEgame_log',FILENAM目D:fishgamegame.ldf'SIZE=2MBMAXSIZ

18、=5MBFILEGROWTHMB);建立数据库的过程如图3.1所示:3.1.2 表的建立在已经建立好的game数据库中建立一个名为tb_user的表,用于存放用户的序号(id),用户名(username),密码(password),并定义id数据类型为bigint,属性为主键非空;定义username数据类型为varchar(50),属性为非空;定义password数据类型为varchar(50),属性为非空。建立表的T-SQL语句如下:USEgameGOCREATETABLEtb_user(idbigintNOTNULLPRIMARYKEYusernamevarchar(50)NOTNULL

19、,passwordvarchar(50)NOTNULL)建立表的过程如图3.2所示:3.1.3 向表中插入数据表建立好之后需要将用户序号(id)、用户名(username)和密码(password)插入到建立好的表中,准备被调用,预设6个用户:admin、user1、user2、user3、user4和user5。向表中插入数据的T-SQL语句如下:USEgameGOINSERTINTOtbuserVALUES1,'admin','admin')INSERTINTOtbuserVALUES2,'user1','123'INSERT

20、INTOtbuserVALUES3,'user2','234'INSERTINTOtbuserVALUES4,'user3','345'INSERTINTOtb_userVALUES5,'user4','456')INSERTINTOtb_userVALUES6,'user5','567')向表中插入数据的过程和插入结果如图3.3、图3.4所示:3.2 数据库的备份与维护随着计算机信息系统的不断发展,用户的核心业务越来越依赖于信息系统的可靠运行,信息系统中的关键业务数

21、据已经成为用户最为重要的资产,对于一个数据库系统来说,数据的安全性和可靠性是至关重要的。尽管数据库管理系统中采取了各种保护措施以保护数据库的安全性和完整性,但是,计算机系统中的软硬件故障、用户误操作、病毒、自然灾难等都可能会导致数据库系统灾难性的破坏。所以,做好数据库的备份工作极为重要。下面我们用T-SQL语句对数据库进行备份。使用逻辑名为fishgameBK创建一个命名的备份设备,并将数据库game完全备份到该设备。T-SQL语句如下:USEmasterGOEXECsp_addumpdevice'disk','fishgameBK','D:fishga

22、meBKdata.bak'BACKUPDATABASEameTOfishgameBK备份数据库的过程如图3.5所示:第四章数据库连接为了使用户名和用户密码更加方便的管理和调用,本游戏的用户名和密码存储在SQLServer数据库中。为了能够使程序能够调用我们预先存入的用户信息,我们需要连接SQLServer数据库。4.1 SQLServer的调试4.1.1 SQLServer身份验证如果SQLServer2005安装时选择的验证方式为身份验证,首先将之改为“SQLServer身份验证”,以下为操作步骤:步骤1打开SQLServerManagementStudio。步骤2使用Windows

23、身份验证连接服务器。步骤3选择根节点,单击右键选择属性。步骤4单击“安全性”选项卡,选择“SQLServer和Windows身份验证”方式。步骤5设置账号sa用户的密码。选择sa账户“属性”,如下图步骤6启用sa账号步骤7重新启动MSSQLSERV0M二一直拉1事号H鼻虫-I牲。帚HR*M皮©立住(用早止01后断5*-4号|津名,宽生住一1展辫0定1吴剜JiFit_JNct:*i(stiLXjSQL"b步骤8断开连接,使用SQLServer身份验证的方式登录服务器4.1.2 MSSQLSERVER勺协议使用JDBC连接数据库需要启动SQLServer数据库需要先打开MSSQ

24、LSERVEW议TCP/IP服务,步骤如下:步骤1打开SQLServerConfigurationManager。步骤2启用TCP/IP服务。4.2 使用JDBC连接数据库4.2.1 LoginCheck类连接测试LoginCheck.java程序如下:packagecom.tarena.case09;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;publicc

25、lassLoginCheckpublicstaticbooleanisLogin(Stringuname,Stringpwd)StringdName="com.microsoft.sqlserver.jdbc.SQLServerDriver"StringdbUrl="jdbc:sqlserver:localhost:1433;"+"DatabaseName=game"StringdbUser="sa"StringdbPwd="123456”;Connectioncon;/1.加载数据类tryClass.f

26、orName(dName);/2.创建数据库连接con=DriverManager.getConnection(dbUrl,dbUser,dbPwd);Stringsql="select*fromtb_userwhereusername=?andpassword=?"PreparedStatementpstat=con.prepareStatement(sql);/为占位符赋值pstat.setString(1,uname);pstat.setString(2,pwd);/执行查询ResultSetrs=pstat.executeQuery();/根据查询结果返回对应的值r

27、eturnrs.next();catch(ClassNotFoundExceptione)e.printStackTrace();catch(SQLExceptione)e.printStackTrace();returnfalse;publicstaticvoidmain(Stringargs)/LoginCherk.isLogin("","");booleanflag=LoginCheck.isLogin("admin","admin");System.out.println(flag);执行程序,连接成功提示

28、如图4.11,返回值为true。rroDliems&JavaDtddiation后ConsoleS3<terminated>LcginCheckJavaApplicationC:ProgramFilesJavajdkl,7.O21binjavaw.exe(2015-6-25下午10:59:23)4.2.2 LogInFrame类连接测试LogInFrame类详细程序请见附件。步骤1测试时,注释掉登录成功进入游戏的操作。if(LogznCheck.isLoin(namepwd)mgLgbel.江丁3共变最爆;”):,打f.受事父/*|frarne.dispose();Fish

29、framef-newFishFrame();f.addFish();FishFrameff,门cwFiGhFrmniu)ff.showUin():elsemsgLabe<setText(”毛口名青空卒fiS.)步骤2输入一组数据库中不存在的用户名和密码,用户名:test,提示“用用F名或密码相援户名或密码错误”,如下图步骤3输入一组数据库中存在的用户名和密码,用户名:useri,提示“登录成功”,如下图。步骤4取消注释掉登录成功进入游戏的操作,输入一组数据库中存在的用户名和密码,用户名:useri,登陆成功进入游戏,如下图第五章功能展示5.1 进入游戏输入正确的用户名和密码,进入如下游戏

30、界面,开始游戏,可以看到:游动的鱼,左上角当前金币数,右上角从右至左依次为关闭游戏、最小化和切换风格,此外炮台会跟随鼠标的移动变换方向,播放背景音乐等。5.2 发射炮弹没捕到鱼发射炮弹没捕到鱼,金币数量每次减1。5.3 发射炮弹捕到鱼发射炮弹捕到鱼,金币每次加1,同时捕到两条金币加2,以此类推。5.4 切换游戏风格共设计了3个风格可以切换,增加了游戏的趣味性,如图,切换到了风格3。5.5 游戏结束提示功能为了使游戏不过于枯燥,增加挑战性与趣味性,当金币数量为0时,弹出窗口提示选择重新开始游戏或者退出游戏5.6 其他功能游戏中还设计了其他功能,无法用图片的形式描述,如游动的鱼,炮台会跟随鼠标的移

31、动变换方向,进入游戏自动播放背景音乐等。如图,为插入的背景音乐。至此,用户需求的功能基本得到实现。惕PackageExplorer笈-809*P君src9ReferencedLibraries&JRESystemLibraryjdkl,V.:n_21/love.wav&image:felip5.7课程设计总结本次课程设计历时三周,我们第一小组的成员,从对Java编程的一无所知,到最终通过学习、分工合作,共同完成了我们的作品-捕鱼达人,并且让自己编写的程序连接到了SQLServer数据库,我们的收获是显而易见的,在此,也感谢老师们的付出和同学们的帮助。通过本次课程设计,让我们亲身

32、感受到了“纸上得来终觉浅”这句话的含义,可能听老师讲的时候都能听懂,等到自己操作的时候就总是眼高手低,不知如何下手,但最终我们通过分工合作、相互请教解决了在开发过程中,从需求分析到功能实现的一些问题,完成了这个项目。由于Java语言对我们较为陌生,加之可以与数据库关联的地方也不是很多。因此在数据库建立、表的建立、数据的插入和数据库的备份方面,我尽量与课上所学关联起来,以上操作全部用T-SQL语句实现。在开发过程中,我们也查找了不少资料,从实际出发几次修改了需求分析,使最终开发出的游戏具有一定趣味性,并且基本实现需求。通过本次课设我意识到,我们对知识的学习,不能光停留在书本上,还要开拓眼界,主动

33、学习,才能让自己跟得上时代的步伐。参考文献1郑阿奇.SQLServer实用教程M.北京:电子工业出版社.2014.2刘卫国.SQLServer2005数据库应用技术M.北京:人民邮电出版社2013.3姜桂洪.SQLServer2005数据库应用与开发M.北京:清华大学出版社2014.4顾韵华.数据库基础教程:SQLServer平台M.北京:电子工业出版社2014.5徐传运.Java高级程序设计M.北京:清华大学出版社.2014.6陈国君.Java程序设计基础M.北京:清华大学出版社.2015.7张桂珠.Java面向对象程序设计M.北京:北京邮电大学出版社.2015.8皮德常.Java简明教程M

34、.北京:清华大学出版社.2015.附录附录AFishPanel类源代码packagecom.tarena.case09;importjava.awt.Color;importjava.awt.Font;importjava.awt.Graphics;importjava.awt.Graphics2D;importjava.awt.Image;importjava.awt.Point;importjava.awt.event.ActionEvent;importjava.awt.event.MouseEvent;importjava.awt.event.MouseListener;importj

35、ava.awt.event.MouseMotionListener;importjava.io.File;importjava.io.IOException;importjava.util.Vector;importjavax.imageio.ImageIO;importjavax.swing.ImageIcon;importjavax.swing.JFrame;importjavax.swing.JOptionPane;importjavax.swing.JPanel;importcom.tarena.case09.Bullet;implementsimportcom.tarena.case

36、09.BulletThread;publicclassFishPanelextendsJPanelMouseMotionListener,MouseListener,Runnableintscore=200;publicintwidth;/publicintheight;/publicintbarrelX;/publicintbarrelY;/doubleroate;intmouseY=0;intmouseX=0;窗口宽度窗口高度炮筒的图片横坐标炮筒的纵坐标Vector<Fish>fishs=newVector<Fish>();Vector<Bullet>b

37、ullets=newVector<Bullet>();Vector<FishNet>nets=newVector<FishNet>()Vector<Money>ms=newVector<Money>();ImagebglmgnewImageIcon("image/case09/start01.jpg").getImage();ImagebgImg1newImageIcon("image/case09/bg1.jpg").getImage();JFrameframe;publicFishPanel

38、(intwidth,intheight,JFrameframe)this.width=width;this.height=height;this.frame=frame;barrelX=416;barrelY=this.height-62;publicvoidpaint(Graphicsg)super.paint(g);g.drawImage(bgImg,0,0,this);for(inti=0;i<fishs.size();i+)Fishf=(Fish)fishs.get(i);f.drawFish(g);g.drawImage(bgImg1,15,this.height-72,thi

39、s);ImageiconrightAdd=newImageIcon("image/case09/ui_button_65.png");g.drawimage(rightAdd.getimage(),460,this.height-60,this);ImageIconleftEduce=newImageIcon("image/case09/ui_button_63.png");g.drawImage(leftEduce.getImage(),340,this.height-60,this);/画子弹for(inti=0;i<bullets.size(

40、);i+)Bulletb=bullets.get(i);b.drawBullet(g);)for(inti=0;i<nets.size();i+)FishNetnet=nets.get(i);g.drawImage(net.icon.getImage(),net.x,net.y,this);)/画钱for(inti=0;i<ms.size();i+)Moneym=ms.get(i);g.drawImage(m.icon.getImage(),m.x,m.y,this);)/画分数25525345g.setFont(newFont("微软雅黑",Font.BOLD

41、,30);g.setColor(Color.red);g.drawString("当前金币:"+score+"",10,30);/画炮筒drawBarrel(g);)publicvoiddrawBarrel(Graphicsg)/画炮筒ImageIconbarrel=newImageIcon("image/case09/level.png");intx=barrelX+19;inty=barrelY+39;doublex1=(double)mouseY-y;doubley1=(double)mouseX-x;doublef=0.0;f

42、=-Math.atan(y1/x1);if(f<=-Math.PI/2)f=-Math.PI/2;if(f>=Math.PI/2)f=Math.PI/2;roate=f;Graphics2Dgp=(Graphics2D)g;gp.rotate(f,x,y);gp.drawImage(barrel.getImage(),barrelX,barrelY,this);OverridepublicvoidmouseDragged(MouseEvente)OverridepublicvoidmouseMoved(MouseEvente)this.mouseX=e.getX();this.mo

43、useY=e.getY();FishPanel.this.repaint();)OverridepublicvoidmouseClicked(MouseEvente)/TODOAuto-generatedmethodstub)OverridepublicvoidmouseEntered(MouseEvente)/TODOAuto-generatedmethodstub)OverridepublicvoidmouseExited(MouseEvente)OverridepublicvoidmousePressed(MouseEvente)Bulletbullet=newBullet(FishPa

44、nel.this);bullet.img=newImageIcon("image/case09/A4.png");bullet.x=barrelX+19-10;bullet.y=barrelY+39-17;bullet.roate=roate;bullet.p=newPoint(barrelX+19,barrelY+39);bullets.add(bullet);BulletThreadt=newBulletThread(bullet);t.start();score-;if(score<=0)intxi=JOptionPane.showConfirmDialog(F

45、ishPanel.this,"GAMEOVERfe击是重新开始游戏,退出点否!","提示JOptionPane.YES_NO_OPTION);if(xi=JOptionPane.YES_OPTION)frame.dispose();FishFramef=newFishFrame();f.init();f.addFish();)if(xi=JOptionPane.NO_OPTION)System.exit(0);)privatevoidstart()/TODOAuto-generatedmethodstub)OverridepublicvoidmouseReleas

46、ed(MouseEvente)Overridepublicvoidrun()while(true)tryThread.sleep(30);catch(InterruptedExceptione)e.printStackTrace();)for(inti=nets.size()-1;i>=0;i-)FishNetnet=nets.get(i);if(net.isLive)net.graw();elsefor(intj=net.catchF.size()-1;j>=0;j-)Fishf=net.catchF.get(j);intaa=fishs.indexOf(f);if(aa!=-1

47、)fishs.get(aa).isMove=false;fishs.remove(f);nets.get(i).catchF.remove(f);nets.remove(net);)附录BFish类源代码packagecom.tarena.case09;importjava.awt.Graphics;importjavax.swing.Imagelcon;publicclassFishpublicintx;/横坐标publicinty;纵坐标publicintimgNum=0;/当前显示的图片下标publicImageiconimgs;/鱼的图片publicbooleanisCatch=fal

48、se;/是否被捕booleanisMove=true;publicImageiconimgsCatch;publicintroad=0;/移动路线publicintstep=2;/移动的速度publicinttimeThread=30;FishPanelpanel;publicstaticintright_to_left=1;publicstaticintup_to_buttom=2;publicstaticintleft_to_right=3;publicFish(FishPanelpanel)this.panel=panel;/画鱼的图片publicvoiddrawFish(Graphic

49、sg)if(isCatch)g.drawImage(imgsCatchimgNum%2.getImage(),x,y,panel);elseg.drawImage(imgsimgNum%10.getImage(),x,y,panel);)/鱼游动publicvoidmove()/如果没被捕if(!isCatch)switch(road)case 1:x=x-step;if(x<-imgsimgNum.getIconWidth()panel.fishs.remove(this);)break;case 2:y=y+step;if(y>panel.getHeight()panel.fi

50、shs.remove(this);break;case 3:x=x+step;if(x>panel.getWidth()panel.fishs.remove(this);break;imgNum+;if(imgNum>=imgs.length&&!isCatch)imgNum=0;if(imgNum>=imgsCatch.length&&isCatch)imgNum=0;panel.repaint();附录CFishNet类源代码packagecom.tarena.case09;importjava.util.Vector;importjava

51、x.swing.ImageIcon;publicclassFishNetintx;inty;intcount=0;publicbooleanisLive=true;Imageiconicon;FishPanelpanel;Vector<Fish>catchF=newVector<Fish>();publicFishNet(intx,inty,imageiconicon,FishPanelpanel)this.panel=panel;this.x=x;this.y=y;this.icon=icon;)publicvoidgraw()count+;if(count>=

52、5)x=-100;y=-100;isLive=false;)/网捕鱼publicvoidcaFish()for(intj=0;j<panel.fishs.size();j+)Fishf=panel.fishs.get(j);if(f.x>this.x-(f.imgs0.getIconWidth()/2)+5&&f.x+f.imgsf.imgNum.getIconWidth()/2<this.x+this.icon.getIconWidth()&&f.y>this.y-(f.imgs0.getIconHeight()/2)+5&&a

53、mp;f.y+f.imgsf.imgNum.getIconHeight()/2<this.y+this.icon.getIconHeight()panel.fishs.get(j).isCatch=true;catchF.add(f);Moneym=newMoney(f.x,f.y,panel);panel.ms.add(m);panel.score+;newMoneMoveThread(m).start();附录DLogInFrame类源代码packagecom.tarena.case09;importjava.awt.Graphics;importjava.awt.Image;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.ImageIcon;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JPasswordField;importja

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论