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

下载本文档

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

文档简介

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

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

3、到第四天:拿出解决问题的初步方案,根据课题给出的用户基本需求,写出各数据实体的数据项和联系实体的活动以及活动要使用的数据项,通过ER图来表示。由ER图建立适当的表,并按照不同范式的定义,对表进行规范化,并在数据库管理系统中实现设计的数据库和表。第五天到第七天:设计功能模块,确定每个模块的功能,以及各个模块之间的关系。第八天到第十天:对每个模块进行具体分析,确定需要的用户界面以及结构,完成软件的整体框架,在开发环境下,编程实现所开发的系统。第十一天到第十二天:综合调试,去除软件中的bug,美化应用程序的界面。有能力的学生增加简单的数据校验、在线错误处理和在线帮助的功能。第十三天和第十五天:撰写课

4、程设计报告,验收。五、主要参考文献1 郑阿奇.SQL Server 实用教程M.北京:电子工业出版社.2014.2 徐传运.Java高级程序设计M.北京:清华大学出版社.2014.审核意见系(教研室)主任(签字): 指导教师下达时间 2015 年 6 月 8 日指导教师签字:_摘要捕鱼达人游戏采用Java高级程序语言设计,游戏后台数据存储、调用,使用SQL Server 2005数据库管理系统。捕鱼达人游戏的设计目的是是以深海为游戏场景,各种鱼儿在其中游动的姿态自然,炮弹打击粒子效果华丽,打击感强烈,很具有趣味性。实现如用数据库存储用户名和密码,凭正确的用户名和密码登录游戏;需要有不同种类的鱼

5、;让鱼游动起来,被炮击中时有特效(翻滚),并获得金币;炮台可以根据鼠标的位置调整方向;炮台发射时消耗金币;可以切换背景,增加趣味性等功能。主要依靠如FishPanel.java,Fish.java,FishNet.java,sqljdbc4.jar等一些类和框架实现相关功能。关键词:Java;SQL Server;Eclipse;数据库连接目录引言1第一章 开发环境21.1 Java21.1.1 Java简介21.1.2 Java程序的优势21.2 Eclipse21.3 SQL Server 200521.3.1 SQL Server数据库的优点21.3.2 SQL语言3第二章 需求分析与功

6、能设计42.1用户需求42.2系统分析42.3主要功能实现62.3.1 Fish类62.3.2 FishNet类72.3.3 FishPanel类7第三章 数据库建立及维护83.1数据库的建立83.1.1数据库的建立83.1.2表的建立93.1.3向表中插入数据103.2数据库的备份与维护12第四章 数据库连接134.1 SQL Server的调试134.1.1 SQLServer身份验证134.1.2 MSSQLSERVER的协议164.2 使用JDBC连接数据库164.2.1 LoginCheck类连接测试164.2.2 LogInFrame类连接测试18第五章 功能展示205.1进入游戏

7、205.2发射炮弹没捕到鱼205.3发射炮弹捕到鱼215.4切换游戏风格215.5游戏结束提示功能225.6其他功能225.7课程设计总结23参考文献24附录25引言随着人们娱乐生活的不断丰富,人们对休闲游戏的需求也越来越高。捕鱼达人是以深海为游戏场景,各种鱼儿在其中游动的姿态自然,炮弹打击粒子效果华丽,打击感强烈,很具有趣味性。捕鱼达人游戏采用Java高级程序语言设计。Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群

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

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

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

11、ipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。1.3 SQL Server 2005(数据库)SQL Server 是Microsoft 公司推出的关系型数据库管理系统。具有使用方便可伸缩性好与相关软件集成程度高等优点。Microsoft SQL Server 是一个全面的数据库平台,使用集成的商业智能 (BI)工具提供了企业级的数据管理。Microsoft SQL Server 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,可以构建和管理用于业务的高可用和高性能的数据应用程序。1.3.1 SQL Server数据库

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

13、)的核心支持以及在Internet上和防火墙外进行查询的能力。1.3.2 SQL语言结构化查询语言(Structured Query Language)简称SQL,结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。SQL是一种用于和关系数据库进行交互计算机语言。当用户想检索数据库中的数据时,就查以用SQL语言发出请求,DBMS(数据库管理系统)对SQL请求进行处理,检索到所要求的数据,并将其返回给用户。如今SQL语言仅仅是一个查询工具,它是可以对关系数据库中的数据进行组织、管理和检索的主要工具。SQL语言可以控制DBMS提供给用户的所有功能,SQL语

14、言已成为用户与基于SQL的DBMS的接口。它的功能包括:数据定义、数据检索、数据操作、存取共享、数据完整性。T-SQL是SQL语言的一种版本,应用于SQL Server服务器,主要包括以下几个方面构成:数据定义语言(DDL)。DDL用于执行数据库的任务,对数据库以及数据库中的各种对象进行创建、删除、修改等操作。数据库对象主要包括表、缺省约束、规则、视图、触发器、存储过程。其中主要包括的语句是CREATE,ALTER,DROP。数据操纵语言(DML)。DML用于操纵数据库中的各种对象,检索和修改数据。其中主要包括的语句是SELECT,INSERT,UPDATE,DELETE。数据控制语言(DCL

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

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

17、(金币) MoneMoveThread.java(金币移动),LoginCheck.java(数据库连接测试),LogInFrame.java(登陆界面),sqljdbc4.jar(数据库连接框架)。图2.1为本程序各主要的类和框架。图2.1 程序中主要的类和框架本游戏的整体流程如图2.2:开始游戏登陆游戏成功初始化游戏界面炮台判断方向,点击鼠标,发射子弹子弹到达鼠标所点击的位置,子弹变成渔网否不成功是否击中鱼?否是金币数减1金币数加1当金币总数=0是结束游戏图2.2 游戏的整体流程2.3主要功能实现如上所述,本程序的实现,主要依靠以下一些类和框架:FishFrame.java,FishPan

18、el.java,Fish.java,FishThread.java,Bullet.java,BulletThread.java,FishNet.java,Money.java,MoneMoveThread.java,LoginCheck.java,LogInFrame.java,sqljdbc4.jar等。本文就FishPanel.java,Fish.java,FishNet.java三个重要的类进行说明,sqljdbc4.jar数据库连接框架将在第四章数据库连接中予以说明。详细程序见附录。图2.3 系统模块图捕鱼达人FishFrame(主框架)Fish(鱼类)FishNet(网类)FishP

19、anel(画布类)sqljdbc(数据库连接框架)2.3.1 Fish类图2.4 Fish类模块图Fish鱼的属性鱼的图片大小变换鱼游动的方法鱼出场的方法鱼被捕的方法2.3.2 FishNet类FishNet网的属性网的图片大小变换网捕鱼的方法图2.5 FishNet类模块图2.3.3 FishPanel类FishPanelPaint类,画鱼池的背景图片调用鱼的图片大小变换的方法鼠标监听控制网的位置大小,网捕鱼的方法体力值,捕鱼数的使用重回游戏,鱼动起来的方法图2.6 FishPanel类模块图第3章 数据库建立及维护数据库是存放数据的仓库,而且这些数据存在一定的关联,并按照一定的格式存放在计

20、算机上。从广义上讲,数据库不仅包含数字,还包括文本、图像、音频、视频等。为了使用户名和用户密码更加方便的管理和调用,本游戏的用户名和密码存储在SQL Server数据库中。3.1数据库的建立为了更加方便简洁的对数据库进行操作,也为联系课堂所学,本文中我们使用T-SQL语句对数据库进行操作。3.1.1数据库的建立创建一个名为game的数据库,其初始大小为5MB,最大为50MB,允许数据库自动增长,增长方式是按10%比例增长。日志文件初始为2MB,最大可增长为5MB,按1MB增长。存放位置为“D:fishgame”。建立数据库的T-SQL语句如下:CREATE DATABASE gameONPRI

21、MARY(NAME=game_data,FILENAME=D:fishgamegame.mdf,SIZE=5MB,MAXSIZE=50MB,FILEGROWTH=10%)LOG ON(NAME=game_log,FILENAME=D:fishgamegame.ldf,SIZE=2MB,MAXSIZE=5MB,FILEGROWTH=1MB);建立数据库的过程如图3.1所示:图3.1 game数据库的建立3.1.2表的建立在已经建立好的game数据库中建立一个名为tb_user的表,用于存放用户的序号(id),用户名(username),密码(password),并定义id数据类型为bigint,

22、属性为主键非空;定义username数据类型为varchar(50),属性为非空;定义password数据类型为varchar(50),属性为非空。建立表的T-SQL语句如下:USE gameGOCREATE TABLE tb_user(idbigintNOT NULL PRIMARY KEY,usernamevarchar(50)NOT NULL,passwordvarchar(50)NOT NULL)建立表的过程如图3.2所示:图3.2 tb_user表的建立3.1.3向表中插入数据表建立好之后需要将用户序号(id)、用户名(username)和密码(password)插入到建立好的表中,

23、准备被调用,预设6个用户:admin、user1、user2、user3、user4和user5。向表中插入数据的T-SQL语句如下:USE gameGOINSERT INTO tb_user VALUES(1,admin,admin)INSERT INTO tb_user VALUES(2,user1,123)INSERT INTO tb_user VALUES(3,user2,234)INSERT INTO tb_user VALUES(4,user3,345)INSERT INTO tb_user VALUES(5,user4,456)INSERT INTO tb_user VALUES

24、(6,user5,567)向表中插入数据的过程和插入结果如图3.3、图3.4所示:图3.3 向表中插入数据图3.4 打开插入数据后的表3.2数据库的备份与维护随着计算机信息系统的不断发展,用户的核心业务越来越依赖于信息系统的可靠运行,信息系统中的关键业务数据已经成为用户最为重要的资产,对于一个数据库系统来说,数据的安全性和可靠性是至关重要的。尽管数据库管理系统中采取了各种保护措施以保护数据库的安全性和完整性,但是,计算机系统中的软硬件故障、用户误操作、病毒、自然灾难等都可能会导致数据库系统灾难性的破坏。所以,做好数据库的备份工作极为重要。下面我们用T-SQL语句对数据库进行备份。使用逻辑名为f

25、ishgameBK创建一个命名的备份设备,并将数据库game完全备份到该设备。T-SQL语句如下:USE masterGOEXEC sp_addumpdevicedisk,fishgameBK,D:fishgameBKdata.bakBACKUP DATABASE game TO fishgameBK备份数据库的过程如图3.5所示:图3.5 备份game数据库第4章 数据库连接为了使用户名和用户密码更加方便的管理和调用,本游戏的用户名和密码存储在SQL Server数据库中。为了能够使程序能够调用我们预先存入的用户信息,我们需要连接SQL Server数据库。4.1 SQL Server的调试

26、4.1.1 SQLServer身份验证如果SQLServer2005安装时选择的验证方式为身份验证,首先将之改为“SQLServer身份验证”,以下为操作步骤:步骤1 打开SQL Server Management Studio。图4.1 打开SQL Server Management Studio步骤2 使用Windows身份验证连接服务器。图4.2 使用Windows身份验证连接服务器步骤3 选择根节点,单击右键选择属性。图4.3 修改服务器属性步骤4 单击“安全性”选项卡,选择“SQL Server和Windows身份验证”方式。图4.4 修改安全性选项步骤5 设置账号sa用户的密码。选

27、择sa账户“属性”,如下图。图4.5 为sa账户设置密码步骤6 启用sa账号。图4.6 启用sa账户步骤7 重新启动MSSQLSERVER服务。图4.7 重新启动MSSQLSERVER服务步骤8 断开连接,使用SQL Server身份验证的方式登录服务器。图4.7 重新启动MSSQLSERVER服务图4.8 使用SQL Server身份验证的方式登录4.1.2 MSSQLSERVER的协议使用JDBC连接数据库需要启动SQL Server数据库需要先打开MSSQLSERVER的协议TCP/IP服务,步骤如下:步骤1 打开SQL Server Configuration Manager。图4.9

28、 打开SQL Server Configuration Manager步骤2 启用TCP/IP服务。图4.10 启用TCP/IP服务4.2 使用JDBC连接数据库4.2.1 LoginCheck类连接测试LoginCheck.java程序如下:package com.tarena.case09;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;public

29、 class LoginCheck public static boolean isLogin(String uname,String pwd)String dName = com.microsoft.sqlserver.jdbc.SQLServerDriver;String dbUrl =jdbc:sqlserver:/localhost:1433; +DatabaseName=game;String dbUser =sa;String dbPwd=123456;Connection con;/1.加载数据类try Class.forName(dName);/2.创建数据库连接con = D

30、riverManager.getConnection(dbUrl,dbUser,dbPwd);String sql = select * from tb_user where username=? and password=? ;PreparedStatement pstat = con.prepareStatement(sql);/为占位符赋值pstat.setString(1, uname);pstat.setString(2, pwd);/执行查询ResultSet rs =pstat.executeQuery();/根据查询结果返回对应的值return rs.next(); catch

31、 (ClassNotFoundException e) e.printStackTrace(); catch (SQLException e) e.printStackTrace();return false;public static void main(String args) /LoginCherk.isLogin(,); boolean flag = LoginCheck.isLogin(admin,admin); System.out.println(flag);执行程序,连接成功提示如图4.11,返回值为true。图4.11 连接测试成功提示4.2.2 LogInFrame类连接测

32、试LogInFrame类详细程序请见附件。步骤1 测试时,注释掉登录成功进入游戏的操作。图4.12 注释掉登录成功进入游戏的操作步骤2 输入一组数据库中不存在的用户名和密码,用户名:test,提示“用户名或密码错误”,如下图。图4.13 登陆不成功提示步骤3 输入一组数据库中存在的用户名和密码,用户名:user1,提示“登录成功”,如下图。图4.14 登陆成功提示步骤4 取消注释掉登录成功进入游戏的操作,输入一组数据库中存在的用户名和密码,用户名:user1,登陆成功进入游戏,如下图。图4.15 登陆成功进入游戏第5章 功能展示5.1进入游戏输入正确的用户名和密码,进入如下游戏界面,开始游戏,

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

34、示5.6其他功能游戏中还设计了其他功能,无法用图片的形式描述,如游动的鱼,炮台会跟随鼠标的移动变换方向,进入游戏自动播放背景音乐等。如图,为插入的背景音乐。至此,用户需求的功能基本得到实现。图5.6 插入背景音乐5.7课程设计总结本次课程设计历时三周,我们第一小组的成员,从对Java编程的一无所知,到最终通过学习、分工合作,共同完成了我们的作品-捕鱼达人,并且让自己编写的程序连接到了SQL Server数据库,我们的收获是显而易见的,在此,也感谢老师们的付出和同学们的帮助。通过本次课程设计,让我们亲身感受到了“纸上得来终觉浅”这句话的含义,可能听老师讲的时候都能听懂,等到自己操作的时候就总是眼

35、高手低,不知如何下手,但最终我们通过分工合作、相互请教解决了在开发过程中,从需求分析到功能实现的一些问题,完成了这个项目。由于Java语言对我们较为陌生,加之可以与数据库关联的地方也不是很多。因此在数据库建立、表的建立、数据的插入和数据库的备份方面,我尽量与课上所学关联起来,以上操作全部用T-SQL语句实现。在开发过程中,我们也查找了不少资料,从实际出发几次修改了需求分析,使最终开发出的游戏具有一定趣味性,并且基本实现需求。通过本次课设我意识到,我们对知识的学习,不能光停留在书本上,还要开拓眼界,主动学习,才能让自己跟得上时代的步伐。参考文献1 郑阿奇. SQL Server 实用教程M. 北

36、京:电子工业出版社. 2014.2 刘卫国. SQL Server 2005数据库应用技术M. 北京:人民邮电出版社. 2013.3 姜桂洪. SQL Server 2005数据库应用与开发M. 北京:清华大学出版社. 2014.4 顾韵华. 数据库基础教程:SQL Server平台M. 北京:电子工业出版社. 2014.5 徐传运. Java高级程序设计M. 北京:清华大学出版社. 2014.6 陈国君. Java程序设计基础M. 北京:清华大学出版社. 2015.7 张桂珠. Java面向对象程序设计M. 北京:北京邮电大学出版社. 2015.8 皮德常. Java简明教程M. 北京:清华

37、大学出版社. 2015.附录附录A FishPanel类源代码package com.tarena.case09;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Image;import java.awt.Point;import java.awt.event.ActionEvent;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;i

38、mport java.awt.event.MouseMotionListener;import java.io.File;import java.io.IOException;import java.util.Vector;import javax.imageio.ImageIO;import javax.swing.ImageIcon;import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.JPanel;import com.tarena.case09.Bullet;import com.tare

39、na.case09.BulletThread;public class FishPanel extends JPanel implements MouseMotionListener,MouseListener ,Runnableint score = 200;public int width;/ 窗口宽度public int height;/ 窗口高度public int barrelX;/ 炮筒的图片横坐标public int barrelY;/ 炮筒的纵坐标double roate;int mouseY = 0;int mouseX = 0;Vector fishs = new Vect

40、or();Vector bullets = new Vector(); Vector nets = new Vector(); Vector ms = new Vector(); Image bgImg = new ImageIcon(image/case09/start01.jpg).getImage();Image bgImg1 = new ImageIcon(image/case09/bg1.jpg).getImage();JFrame frame;public FishPanel(int width, int height,JFrame frame) this.width = widt

41、h;this.height = height;this.frame = frame;barrelX = 416;barrelY = this.height - 62;public void paint(Graphics g) super.paint(g);g.drawImage(bgImg, 0, 0, this);for (int i = 0; i fishs.size(); i+) Fish f = (Fish) fishs.get(i);f.drawFish(g);g.drawImage(bgImg1, 15, this.height - 72,this);ImageIcon right

42、Add = new ImageIcon(image/case09/ui_button_65.png);g.drawImage(rightAdd.getImage(), 460, this.height - 60, this);ImageIcon leftEduce = new ImageIcon(image/case09/ui_button_63.png);g.drawImage(leftEduce.getImage(),340, this.height - 60, this);/画子弹for(int i=0;ibullets.size();i+)Bullet b = bullets.get(

43、i);b.drawBullet(g);for(int i=0;inets.size();i+)FishNet net = nets.get(i);g.drawImage(net.icon.getImage(), net.x,net.y,this);/画钱for(int i=0;ims.size();i+)Money m = ms.get(i);g.drawImage(m.icon.getImage(), m.x,m.y,this);/画分数 255 253 45g.setFont(new Font(微软雅黑,Font.BOLD,30);g.setColor(Color.red);g.drawS

44、tring(当前金币:+score+, 10, 30);/画炮筒drawBarrel(g);public void drawBarrel(Graphics g) / 画炮筒ImageIcon barrel = new ImageIcon(image/case09/level.png);int x = barrelX + 19;int y = barrelY + 39;double x1 = (double) mouseY - y;double y1 = (double) mouseX - x;double f = 0.0;f = -Math.atan(y1 / x1);if (f = Math

45、.PI / 2)f = Math.PI / 2;roate = f;Graphics2D gp = (Graphics2D) g;gp.rotate(f, x, y);gp.drawImage(barrel.getImage(), barrelX, barrelY, this);Overridepublic void mouseDragged(MouseEvent e) Overridepublic void mouseMoved(MouseEvent e) this.mouseX = e.getX();this.mouseY = e.getY(); FishPanel.this.repain

46、t();Overridepublic void mouseClicked(MouseEvent e) / TODO Auto-generated method stubOverridepublic void mouseEntered(MouseEvent e) / TODO Auto-generated method stubOverridepublic void mouseExited(MouseEvent e) Overridepublic void mousePressed(MouseEvent e) Bullet bullet = new Bullet(FishPanel.this);

47、bullet.img = new ImageIcon(image/case09/A4.png);bullet.x = barrelX+19-10;bullet.y = barrelY+39-17;bullet.roate = roate ;bullet.p = new Point(barrelX+19,barrelY+39);bullets.add(bullet);BulletThread t = new BulletThread(bullet);t.start();score-;if (score=0;i-)FishNet net = nets.get(i);if(net.isLive) n

48、et.graw();elsefor(int j=net.catchF.size()-1;j=0;j-) Fish f = net.catchF.get(j); int aa=fishs.indexOf(f); if(aa !=-1) fishs.get(aa).isMove = false; fishs.remove(f); nets.get(i).catchF.remove(f); nets.remove(net);附录B Fish类源代码package com.tarena.case09;import java.awt.Graphics;import javax.swing.ImageIcon;public class Fis

温馨提示

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

评论

0/150

提交评论