java-捕鱼达人课程设计
java捕鱼达人工作流程

Java捕鱼达人是一款基于Java编程语言开发的休闲游戏。
该游戏的工作流程主要包括游戏准备、游戏进行和游戏结算三个步骤。
首先,在游戏准备阶段,玩家需要选择游戏模式和难度等级。
游戏模式包括单人模式和多人模式,难度等级则包括简单、普通和困难等选项。
玩家还可以进行游戏设置,如调整游戏音效和背景音乐等。
接下来是游戏进行阶段。
玩家将操纵游戏角色在水域中进行捕鱼,通过操作键盘或鼠标来控制角色的移动和发射子弹。
在游戏中,玩家需要躲避一些障碍物,如海藻和岩石,并且要小心一些比较凶猛的鱼类。
玩家可以通过捕获鱼类来赚取金币和积分,并且在游戏中还会出现一些道具,如加速道具和双倍积分道具,可以帮助玩家提升游戏体验和收益。
最后是游戏结算阶段。
一般游戏时间到达或者玩家生命值耗尽时,游戏将会进入结算阶段。
在这个阶段,游戏会统计玩家的捕鱼数量、金币数和积分,然后给予相应的奖励。
玩家可以根据自己的表现获得不同等级的奖励,并且可以用金币来换取一些游戏道具或者提升自己的游戏角色。
总的来说,Java捕鱼达人游戏的工作流程非常简单直观,玩家可以在游戏中体验到捕鱼的乐趣和刺激,同时也能够享受到游戏结算带来的成就感和奖励。
捕鱼达人沙盘课程设计

捕鱼达人沙盘课程设计一、课程目标知识目标:1. 学生能够理解捕鱼达人沙盘游戏的背景知识,掌握基本的海洋生态及生物链概念。
2. 学生能够运用数学知识,进行数据收集、整理与分析,了解捕鱼业对海洋生态环境的影响。
3. 学生能够结合地理知识,描述不同海域的特点及其对捕鱼业的影响。
技能目标:1. 学生通过沙盘游戏,提高观察、分析、解决问题的能力。
2. 学生能够运用团队合作、沟通协调等技能,完成沙盘游戏中的任务。
3. 学生能够运用计算机技术,对捕鱼数据进行有效处理,提高信息素养。
情感态度价值观目标:1. 学生培养对自然环境的热爱和责任感,关注海洋资源的合理利用与保护。
2. 学生在沙盘游戏中,培养团队合作精神,学会尊重、信任、理解他人。
3. 学生通过课程学习,认识到科技在捕鱼业发展中的重要作用,增强创新意识。
本课程针对五年级学生设计,结合学科特点,注重培养学生的实践能力、合作能力及创新能力。
课程内容紧密联系课本知识,以沙盘游戏为载体,让学生在轻松愉快的氛围中学习,提高学生对海洋生态、捕鱼业及其影响的认知。
通过具体可衡量的课程目标,使学生在知识、技能、情感态度价值观等方面取得实质性进步。
二、教学内容本课程依据课程目标,结合五年级教材,组织以下教学内容:1. 海洋生态基础知识:包括海洋生物的分类、生物链的构成及其相互关系,涉及教材中生态系统相关章节。
2. 捕鱼业发展及影响:介绍捕鱼业的发展历程、现状及对海洋生态环境的影响,关联教材中人类活动对环境的影响章节。
3. 数据收集与处理:教授学生如何收集、整理和分析捕鱼数据,运用数学知识进行简单的数据分析,结合教材中数据分析相关章节。
4. 地理知识与海域特点:介绍不同海域的地理位置、气候特点及其对捕鱼业的影响,涉及教材中地理知识相关章节。
5. 计算机技术应用:教授学生运用计算机技术进行捕鱼数据的处理,提高信息素养,结合教材中信息技术相关章节。
教学内容安排与进度:1. 第一周:海洋生态基础知识学习,进行沙盘游戏规则介绍。
java 捕鱼达人设计流程(按工作时间顺序写)

java 捕鱼达人设计流程(按工作时间顺序写)The design process for a Java Fish Shooting game consists of several steps that need to be followed in chronological order. The aim is to create an engaging and functional game that provides an enjoyable gaming experience. Here is the step-by-step breakdown of the design process:1. Conceptualization and ResearchThis initial phase involves brainstorming and gathering ideas for the game. Research similar games in the market, analyze their strengths and weaknesses, and identify the target audience. Understand the mechanics and gameplay elements of Fish Shooting games.1号步骤:概念化和研究这个初始阶段涉及到为游戏进行头脑风暴,收集想法。
研究市场上类似的游戏,分析它们的优点和缺点,并确定目标受众。
了解捕鱼达人游戏的机制和玩法元素。
2. Game Design Document (GDD)Create a detailed Game Design Document that outlines all the aspects of the game, including gameplay mechanics, art style, levels, characters, audio, and monetization strategies. Determine the core features and game progression.2号步骤:游戏设计文档(GDD)创建一个详细的游戏设计文档,其中包括游戏的各个方面,包括玩法机制、艺术风格、关卡、角色、音频和变现策略。
基于 Android 的“捕鱼达人游戏”的开发

基于 Android 的“捕鱼达人游戏”的开发作者:李湘一来源:《智能计算机与应用》2015年第06期摘要:本文通过分析实际运行效果,阐述了捕鱼达人游戏开发的体系结构,确定了游戏开发中需要创建哪些类,如何创建这些类。
并对各实体类实现的功能进行了具体的描述。
用线程实现了鱼的游行,子弹的发射。
最后给出了三种关键算法的描述,大炮旋转角度的计算、子弹的运行轨迹的计算、判断子弹是否击中鱼的算法描述。
关键词: Android;捕鱼达人;算法中图分类号:TP391 文献标识号:A 文章编号:2095-2163(2015)06-Abstract: Through the analysis of the actual operating results, this paper expounds the system structure of the game development of fishing up game, and determines what kind of game development need to create, and how to create these classes. After that, the function of each entity class is described in detail. The paper also uses threads to achieve the fish's parade, bullets fired. Three key algorithms are described,which respectively are the calculation of the rotation angle of the barrel, the calculation of the trajectory of the bullet, and judging whether the bullet hit the fish.Keywords: Android; Fishing Talent; Algorithm0引言近几年来,Android凭借其开放性和灵活性成为时下热门的移动终端操作系统之一。
捕鱼达人游戏项目开发过程文档

捕鱼达人项目开发过程文档 一、游戏资源文件image 图片:包括火炮,鱼,子弹,渔网,金币,数字,背景图片以及其它UI 图片 CCFish 类:实现鱼的曲线路线的移动与各种鱼捕捉概率的设置 UINumber 类与UIRollNumber 类 二、游戏基本结构确定及搭建图1.1依次在项目中创建如有图类完成项目结构,在总体上把握项目实现内容 三、详细设计与各功能模块的实现程序编写流程1. 系统菜单场景:1) 添加初始化方法 2) 添加菜单3) 添加菜单选项方法 2. 游戏场景1) 添加初始化方法2) 添加纹理图集载入方法 3) 添加UI 设计方法4) 添加触摸事件处理方法 5) 添加自动补充鱼更新方法 6) 添加碰撞检测方法 3. 设置页面 4. 帮助场景游戏重要模块详细实现 1. 纹理图集的使用与加载要点:精灵处于界面中的层次关系,如下为纹理图集加载代码[[CCSpriteFrameCache sharedSpriteFrameCache ] addSpriteFramesWithFile :@"fish.plist"]; fishSheet = [CCSpriteBatchNode batchNodeWithFile :@"fish.png"]; [self addChild :fishSheet z :100];2. UI 设计的细节实现要点:各个UI 部件(精灵)的层次,位置调整以及武器的更换动作设置,下面为UI 实现代码-(void ) initUI{SysMenu (scene)GameMain (scene) Setting (layer)Help (scene)CGSize winSize = [[CCDirector sharedDirector] winSize];CCSprite * background = [CCSprite spriteWithFile:@"bj00.jpg"];background.position = ccp(winSize.width * 0.5, winSize.height * 0.5);[self addChild:background z:0];//添加能量槽CCSprite *engryBox =[CCSprite spriteWithFile:@"ui_2p_004.png"];engryBox.anchorPoint = ccp(0.5, 0.5);engryBox.position = ccp(winSize.width/2,10);[self addChild:engryBox z:10];//添加能量箭头energyPointer = [CCSprite spriteWithFile:@"ui_2p_005.png"];energyPointer.anchorPoint = ccp(0.5,0.5);energyPointer.position = ccp(winSize.width/2,10);energyPointer.rotation = minEnergyRotation;[self addChild:energyPointer z:12];//添加顶部框体CCSprite *bgExp =[CCSprite spriteWithFile:@"ui_box_01.png"];bgExp.position = ccp(winSize.width/2, winSize.height);bgExp.anchorPoint = ccp(0.5f,1.0f);[self addChild:bgExp z:101];//添加底框CCSprite *bgNum =[CCSprite spriteWithFile:@"ui_box_02.png"];bgNum.position = ccp(bgNum.contentSize.width/2, 0);bgNum.anchorPoint = ccp(0.5f,0);[self addChild:bgNum z:101];//添加武器cannnon = [CCCannon spriteWithSpriteFrameName: [NSStringstringWithFormat:@"actor_cannon1_%i1.png",1]];cannnon.cannonLevel = 1;cannonLevel = 1;cannnon.anchorPoint = ccp(0.5f,0.5f);cannnon.position = ccp(winSize.width/2,30);cannnon.scale = cannon_scale;cannnon.cannonType = nomal;[cannonSheet addChild:cannnon];//添加“+”,“-”按钮(待改)[CCMenuItemFont setFontSize:32];[CCMenuItemFont setFontName:@"Arial"];CCMenuItem * addItem = [CCMenuItemFont itemFromString: @"+"target:self elector:@selector(addCannonLeave)];//addItem.scale = 1.5;CCMenu * addMenu = [CCMenu menuWithItems:addItem,nil];addMenu.position = ccp(winSize.width*0.5+30, 10);[addMenu alignItemsVertically];[self addChild:addMenu z:102 ];CCMenuItem * reduceItem = [CCMenuItemFont itemFromString: @"-"target:selfselector:@selector(reduceCannonLeave)];CCMenu * reduceMenu = [CCMenu menuWithItems:reduceItem,nil];reduceMenu.position = ccp(winSize.width*0.5-30, 10);[reduceMenu alignItemsVertically];[self addChild:reduceMenu z:102];//初始化金币数gold = [[UIRollNumber alloc]init];[gold setNumber:originGold];[gold setPosition:ccp(168, 10)];[self addChild:gold z:102];}-(void)addCannonLeave{CGSize winSize = [[CCDirector sharedDirector] winSize];cannonLevel++;If(cannonLevel == 8)cannonLevel = 1;//remove cannonCCScaleTo * narrow = [CCScaleT o actionWithDuration:0.1f scale:0.1];CCCallFuncO * removeCannon = [CCCallFuncO actionWithTarget:self selector:@selector(removeCannon:) object:cannnon];CCSequence *bowDismissSequence = [CCSequence actions:narrow,removeCannon,nil];[cannnon runAction:bowDismissSequence];//add a new cannoncannnon = [CCCannon spriteWithSpriteFrameName:[NSStringstringWithFormat:@"actor_cannon1_%i1.png",cannonLevel]];cannnon.cannonLevel = cannonLevel;cannnon.position = ccp(winSize.width*0.5,30);cannnon.scale = 0.1f;CCDelayTime * delayTime = [CCDelayTime actionWithDuration:0.1f];CCScaleTo * appear = [CCScaleT o actionWithDuration:0.1f scale:cannon_scale];CCSequence * bowAppearSequence = [CCSequence actions:delayTime,appear,nil];[cannnon runAction:bowAppearSequence];[cannonSheet addChild:cannnon z:100];}//删除武器用于武器改变-(void)removeCannon:(id)sender{//CCLOG(@"removeBow");CCCannon * sp = sender;[cannonSheet removeChild:sp cleanup:YES];}3.触摸事件模块要点:子弹、大炮的跟随转向,子弹射出速度设置,越界判定(移动出画面)-(void) setAngle:(CGPoint)point sprite:(CCSprite *)sp{//CCLOG(@"setAngle");//设置“旋转角度”int offX = point.x - cannnon.position.x;int offY = point.y - cannnon.position.y;if (offY <= 0) {return;}float ratio = (float)offY /(float)offX; //直角三角形float angle = atanf(ratio)/M_PI*180; //三角形正切值获得角度if (angle < 0) {cannnon.rotation = -(90+angle);//设置武器旋转角度sp.rotation = cannnon.rotation;} else if (angle > 0) {cannnon.rotation = 90 - angle;sp.rotation = cannnon.rotation;}}#pragma touch menthed- (void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{for (UITouch *touch in touches){CGPoint pos = [touch locationInView:touch.view];pos = [[CCDirector sharedDirector] convertToGL:pos];if (pos.y <= cannnon.position.y) {return;}if (cannnon.cannonType == laser) { //如果当前为超级武器,} else {[cannnon setDisplayFrame:[[CCSpriteFrameCache sharedSpriteFrameCache]spriteFrameByName:[NSStringstringWithFormat:@"actor_cannon1_%i2.png",cannnon.cannonLevel]]];}[self setAngle:pos sprite:nil];}}- (void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{for (UITouch *touch in touches) {CGPoint pos = [touch locationInView:touch.view];pos = [[CCDirector sharedDirector] convertToGL:pos];[self setAngle:pos sprite:nil];}}- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{for (UITouch *touch in touches){CGSize winSize = [[CCDirector sharedDirector] winSize];CGPoint pos = [touch locationInView:touch.view];pos = [[CCDirector sharedDirector] convertToGL:pos];int offX = pos.x - cannnon.position.x;int offY = pos.y - cannnon.position.y;if (offY <= 0) {return;}if(cannnon.cannonType == laser){//用超级能量捕捉动物(待改)cannnon.cannonType = nomal; //发射完毕还原武器}else{//***************(待改)*******************[gold setNumber:([gold getNumber]-cannnon.cannonType)];//每次损耗CCBullet *bullet = [CCBullet spriteWithSpriteFrameName:[NSStringstringWithFormat:@"bullet0%i.png",cannnon.cannonLevel]]; //添加子弹bullet.position = cannnon.position;bullet.isHit = NO;[self setAngle:pos sprite:bullet];// Determine where we wish to shoot the projectile toint realY = winSize.height + bullet.contentSize.height*0.5;float ratio = (float) offX / (float) offY;int realX = (realY - cannnon.position.y)* ratio + cannnon.position.x;CGPoint realDest = ccp(realX, realY);// 子弹会于一个恒定的速率按照射击方向前进int offRealX = realX - cannnon.position.x;int offRealY = realY - cannnon.position.y;float length = sqrtf((offRealX*offRealX)+(offRealY*offRealY));//一旦我们有了距离,我们只是除以速度,以获得所需的时间。
嵌入式课程设计捕鱼达人

嵌入式课程设计捕鱼达人一、教学目标本课程旨在通过“捕鱼达人”项目的设计与实现,让学生掌握嵌入式系统的基本原理和开发技能。
具体目标如下:1.理解嵌入式系统的基本概念和架构。
2.熟悉C/C++编程语言在嵌入式环境中的应用。
3.学习嵌入式操作系统的基本原理和常用操作。
4.掌握基于嵌入式系统的硬件接口和驱动开发。
5.能够使用嵌入式开发工具,如编译器、调试器等。
6.学会使用嵌入式操作系统进行应用程序开发。
7.能够独立设计和实现简单的嵌入式系统项目。
8.具备基本的硬件接口编程和故障排除能力。
情感态度价值观目标:1.培养学生的创新意识和解决问题的能力。
2.增强学生团队合作和沟通协调的能力。
3.培养学生对嵌入式技术的兴趣和热情。
二、教学内容本课程的教学内容围绕“捕鱼达人”项目展开,包括以下几个部分:1.嵌入式系统概述:介绍嵌入式系统的定义、特点和应用领域。
2.嵌入式硬件基础:学习嵌入式系统的硬件组成,如CPU、内存、外设等。
3.嵌入式操作系统:讲解嵌入式操作系统的原理和常用操作系统,如Linux、RTOS等。
4.嵌入式编程语言:学习C/C++编程语言在嵌入式环境中的应用。
5.硬件接口和驱动开发:掌握嵌入式系统与硬件的接口编程和驱动开发。
6.项目实践:“捕鱼达人”嵌入式系统的设计与实现。
三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法:1.讲授法:讲解嵌入式系统的基本概念、原理和关键技术。
2.案例分析法:通过分析具体的嵌入式系统案例,让学生了解实际应用。
3.实验法:动手实践,完成“捕鱼达人”项目的开发和调试。
4.小组讨论法:分组进行项目开发,培养团队合作和沟通协调能力。
四、教学资源为了支持本课程的教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:《嵌入式系统设计与实践》、《嵌入式操作系统原理与应用》等。
2.参考书:提供相关的技术文档和教程,供学生自主学习。
3.多媒体资料:制作课件和教学视频,辅助学生理解嵌入式系统的原理和应用。
java-捕鱼达人课程设计要点

武汉理工大学华夏学院课程设计报告书课程名称:智能手机软件开发题目:捕鱼达人系名:信息工程系专业班级:计算机1112*名:***学号:***************:***2014 年 6 月20 日武汉理工大学华夏学院信息工程系课程设计任务书课程名称:智能手机软件开发课程设计指导教师:凌伟班级名称:计算机1111 开课系、教研室:自动化与计算机三、课程设计目的与任务本课程的设计的目的是通过实践使同学们经历智能手机软件开发的全过程和受到一次综合训练,以便能较全面地理解、掌握和综合运用所学的智能手机开发的知识。
结合具体的开发案例捕鱼达人,理解并初步掌握智能手机开发的主要环节和步骤以及智能手机游戏开发的知识。
二、课程设计的内容与基本要求1、课程设计题目捕鱼达人2、课程设计内容要求学生根据所学的软件工程的理念,利用所学的Android 手机开发的知识,开发一个智能手机游戏捕鱼达人,并针对该手机游戏软件进行需求分析,总体设计、详细设计、编码、测试。
游戏操作鼠标移动/键盘方向键←→控制炮台射击方向,点击鼠标左键/按空格键射击撒网抓鱼,点击下方的红色+号和-号按钮/数字键1-8键/方向键↑键/滑动鼠标滑轮切换炮台游戏背景音乐设计游戏背景动画设计游戏界面设计游戏关卡设计游戏积分榜的设计三、课程设计步骤及时间进度和场地安排本课程设计将安排在第18周, 教育技术中心。
具体安排如下:第一天,系统开发平台搭建及主流开发工具安装第二天,游戏界面的设计第三天,游戏业务的设计第四天,游戏关卡的设计第五天,系统调试测试打包和验收四、课程设计考核及评分标准课程设计考核将综合考虑学生考勤和参与度,系统设计方案正确性,系统设计和开发效果以及课程设计报告书的质量。
具体评分标准如下:设置六个评分点(1)设计方案正确,具有可行性、创新性;25分(2)系统开发效果较好;25分(3)态度认真、刻苦钻研、遵守纪律;10分(4)设计报告规范、课程设计报告质量高、参考文献充分20分(5)课程设计答辩概念清晰,内容正确10分(6)课程设计期间的课堂考勤、答疑与统筹考虑。
捕鱼达人教案

教案:捕鱼达人
一、教学目标
1.让学生了解捕鱼达人游戏的规则和玩法。
2.培养学生的观察能力、反应能力和手眼协调能力。
3.增强学生的团队合作意识和竞争意识。
二、教学重难点
1.重点:掌握捕鱼达人游戏的规则和技巧。
2.难点:如何在游戏中灵活运用各种策略,提高得分。
三、教学方法
1.讲授法:讲解捕鱼达人游戏的规则和玩法。
2.演示法:通过实际操作演示游戏的技巧和策略。
3.练习法:让学生分组进行游戏,实际体验游戏的乐趣。
四、教学过程
1.导入
•询问学生是否玩过捕鱼达人游戏,引发学生的兴趣。
2.新授
•讲解捕鱼达人游戏的规则和玩法,包括游戏界面、鱼类的种类和分值、炮台的选择和使用等。
•通过实际操作演示游戏的技巧和策略,如如何瞄准鱼类、如何使用道具等。
•让学生分组进行游戏,每组4-5 人,实际体验游戏的
乐趣。
3.练习
•学生分组进行游戏,教师在旁边指导,帮助学生掌握游戏技巧。
•进行小组比赛,评选出得分最高的小组和个人,给予奖励。
4.课堂小结
•让学生分享自己在游戏中的心得体会,以及如何提高得分的技巧和策略。
•教师对本节课的内容进行总结,强调游戏中的团队合作和竞争意识。
五、教学反思
通过本次教学,学生对捕鱼达人游戏有了更深入的了解,掌握了游戏的规则和技巧,同时也增强了团队合作意识和竞争意识。
在教学过程中,教师应该注重引导学生思考和探索,让学生在游戏中不断提高自己的能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
武汉理工大学华夏学院课程设计报告书课程名称:智能手机软件开发题目:捕鱼达人系名:信息工程系专业班级:计算机1112姓名:梁海传学号: 10210411209指导教师:刘春燕2014 年 6 月 20 日武汉理工大学华夏学院信息工程系课程设计任务书课程名称:智能手机软件开发课程设计指导教师:凌伟班级名称:计算机1111 开课系、教研室:自动化与计算机三、课程设计目的与任务本课程的设计的目的是通过实践使同学们经历智能手机软件开发的全过程和受到一次综合训练,以便能较全面地理解、掌握和综合运用所学的智能手机开发的知识。
结合具体的开发案例捕鱼达人,理解并初步掌握智能手机开发的主要环节和步骤以及智能手机游戏开发的知识。
二、课程设计的内容与基本要求1、课程设计题目捕鱼达人2、课程设计内容要求学生根据所学的软件工程的理念,利用所学的Android 手机开发的知识,开发一个智能手机游戏捕鱼达人,并针对该手机游戏软件进行需求分析,总体设计、详细设计、编码、测试。
游戏操作鼠标移动/键盘方向键←→控制炮台射击方向,点击鼠标左键/按空格键射击撒网抓鱼,点击下方的红色+号和-号按钮/数字键1-8键/方向键↑键/滑动鼠标滑轮切换炮台游戏背景音乐设计游戏背景动画设计游戏界面设计游戏关卡设计游戏积分榜的设计三、课程设计步骤及时间进度和场地安排本课程设计将安排在第18周, 教育技术中心。
具体安排如下:第一天,系统开发平台搭建及主流开发工具安装第二天,游戏界面的设计第三天,游戏业务的设计第四天,游戏关卡的设计第五天,系统调试测试打包和验收四、课程设计考核及评分标准课程设计考核将综合考虑学生考勤和参与度,系统设计方案正确性,系统设计和开发效果以及课程设计报告书的质量。
具体评分标准如下:设置六个评分点(1)设计方案正确,具有可行性、创新性;25分(2)系统开发效果较好;25分(3)态度认真、刻苦钻研、遵守纪律;10分(4)设计报告规范、课程设计报告质量高、参考文献充分20分(5)课程设计答辩概念清晰,内容正确10分(6)课程设计期间的课堂考勤、答疑与统筹考虑。
10分按上述六项分别记分后求和,总分按五级记分法记载最后成绩。
优秀(100~90分),良好(80~89分),中等(70~79分),及格(60~69分),不及格(0~59分)1.设计题目 (1)2.开发环境 (1)3.需求分析 (1)3.1设计目的 (1)3.2、设计要求 (1)4.概要设计 (2)4.1设计原理及其分析 (2)4.2本游戏的模块图 (2)5.详细设计 (4)5.1游戏欢迎界面的设计 (4)5.2 游戏背景的设计 (5)5.3游戏中鱼的设计 (6)5.4 渔网的设计 (8)5.5游戏的平衡设计 (9)6.测试与运行 (11)6.1进行游戏测试 (11)6.2体力值为零的时弹出对话框。
(11)6.3游戏结束后进行选择 (12)7.心得体会 (13)8.参考文献 (13)附录: (14)1.设计题目捕鱼达人2.开发环境Eclipse软件开发环境,PC机一台,windows操作系统。
3.需求分析3.1设计目的捕鱼达人这个项目是一个娱乐性的游戏开发,该游戏可以给人们带来娱乐的同时还可以给人感官上的享受,所以很受人们的欢迎。
本次游戏的程序设计包含,java swing组件的合理运用,还有图像的变动达到一个动态的动画效果,线程的运用,游戏的异常处理,等方面的知识。
培养学生运用所学知识的基础理论、基本知识和基本技能,分析解决实际问题能力的一个重要环节。
它与课堂教学环节彼此配合,相辅相成,在某种程度上是课堂学习的继续、深化和检验。
它的实践性和综合性是其它教学环节所不能代替的。
课程设计能使学生受到必需的综合训练,在不同程度上提高各种能力。
通过课程设计,使学生熟练掌握Java语言课程中所学的理论知识,通过综合Java语言的基本知识来解决实际问题,加强学生分析和解决问题的能力。
3.2、设计要求框架:2个场景,WelcomePanel,FishGame。
流程:1)WelcomePanel :该场景是专门用来做一个欢迎动画的。
2)FishGame :用来运行游戏的载体窗口。
与用户交流的界面,鱼儿在该window窗体上游动,玩家在上面捕鱼,然后计分等等。
4.概要设计4.1设计原理及其分析1.初始化界面需要800*500大小,需要一个游戏开始欢迎界面,游戏框上显示“欢迎捕鱼达人游戏”,3秒之后进入游戏界面,命名为“捕鱼达人”2.在程序中,我们需要对每一条鱼进行操作(移动,游动,捕鱼,死亡,复活),所以每条鱼我们将它定义为一个对象的线程,便于对鱼的完美操作与控制,游戏中我们定义了7种小鱼和4种大鱼,每条鱼都有两条,所以鱼池中有22条鱼,鱼的数量达到了一定的饱和。
3.鱼的每次移动,它的水平坐标改变了,所以我们需要将它移动之后的状态重画(repaint ()方法)出来,从而达到鱼是在移动的。
4.捕鱼的效果,我们被网赋一个能量值,可以改变网的大小,来改变网的能量的大小,而鱼就需要有一个血量值(大鱼的血量高,小鱼血量低),当网在鱼的范围之内的时候,点击鼠标左键让鱼扣除相应的血量值,鼠标右键控制网的大小,点击一下改变一下网的大小,当鱼的血量小于0的时候,鱼就会弹跳几下然后消失,达到捕鱼成功。
5.每个游戏都是需要平衡的,所以我们不能一直捕鱼下去。
体力值,计分,捕鱼条数,等数据来平衡游戏。
当体力值小于0 的时候就结束游戏,而捕一条鱼,加上相应鱼的分数,而捕鱼条数上就加1,体力值也相应的回复一部分,不同的鱼分数不同,回复体力值也不同,基本上大鱼分数高,小于分数低。
最后判定输赢就是看分数的高低。
4.2本游戏的模块图分别有:鱼的模块,网的模块,鱼池的模块,游戏的模块,每一个模块相当于一个类,鱼模块:主要实现鱼图片的加载,鱼游动效果,鱼游动,还有鱼的一些基本属性,比如鱼的坐标,大小,还有血量值。
一些基本方法,鱼的构造方法。
网模块:主要实现渔网图片的加载,渔网的属性有坐标,大小的宽和高,还有渔网的powe r值,渔网中还有一个改变渔网大小的方法。
鱼池模块:将鱼类的对象,网类的对象都在本类中进行调用,并将相应对象的图片显示出来,并将游戏的背景‘画’出来。
欢迎模块:将欢迎的图片加载进来。
图4.1系统模块图图4.2 系统类图游戏模块鱼 模 块 网 模 块鱼 池 模 块 欢 迎 模 块5.详细设计5.1游戏欢迎界面的设计创建游戏的运行界面的框架,带有main()函数的类,FishGame.java类,专门用来承载游戏的运行,在主函数中创建JFram类的一个对象,即创建window视窗,然后设置大小,默认居中显示,大小不可以改变等功能,具体代码如下:final JFrame welcome =new JFrame("欢迎光临");welcome.setSize(643,435);welcome.setLocationRelativeTo(null);welcome.setResizable(false);welcome.setVisible(true);图5.1游戏运行的框架创建WelcomePanel.java类,专门用来创建‘画笔’(即paint()方法),画出要显示出来的欢迎界面,既然是开始界面,我们还要去掉边框,还要等待几秒钟后才能进入游戏界面。
所以王某要创建一个Timer类的一个对象,来合理分配时间上的任务。
实现代码如下:在WelcomePanel类中:public class WelcomPanel extends JPanel{BufferedImage bg;public WelcomPanel(){try {bg=ImageIO.read(new File("images/welcome.jpg"));//加载本地的图片} catch (IOException e) {e.printStackTrace();} }public void paint(Graphics g){ //g相当于是画笔g.drawImage(bg,0,0,null); //画图片} }然后在FishGame类中的main()函数中创建WelcomPanel类的一个对象,将画出来的动画在创建好的JFrame框架上显示出来。
具体代码如下:welcome.setUndecorated(true);//隐藏框架,大小不可变WelcomPanel wel=new WelcomPanel();welcome.add(wel);welcome.setVisible(true); //显示显示效果如下:图5.2欢迎图画显示5.2 游戏背景的设计创建的Pool.java类要继承JPanel类,用paint()的方法画出游戏运行的效果出来,首先画出游戏的背景出来。
具体画出的过程如WelcomPanel类的方法类似。
然后再在FishGame.java类中的main()添加如下代码:final JFrame win = new JFrame("捕鱼达人游戏");win.setSize(800,500);win.setLocationRelativeTo(null);win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);Pool buyu=new Pool();win.add(buyu);Timer timer = new Timer();timer.schedule(new TimerTask() {public void run() { //3秒之后,欢迎界面关闭,游戏窗口打开welcome.setVisible(false);win.setVisible(true);}}, 3000);buyu.action(); //调用Pool类对象buyu的action()方法运行后的游戏背景如下图:图5.3游戏运行背景5.3游戏中鱼的设计创建Fish.java类。
在这个类之中,我们要创建鱼的对象,但是为了方便启动每一条鱼,我们将Fish.java的类继承了Thread类,这样,每一条鱼就相当于一个线程,每一个线程我们就可以对它分别进行控制,比如移动,速度,血量,当然还有鱼游动的效果。
在玩家所看见鱼儿游动的效果其实就是鱼儿游动的一张张图片在不停的变换。
我们所做的鱼儿素材只有静态的图片。
根据研究,只要换的图片帧数达到23张每秒我们就会认为图片就是动的。
所以在鱼儿游动的时候我们还要调用Tread.sleep(1000/60)相当于1秒钟换了60张图片。
速度上已经相当快了。
这里我们在构造方法里面写出BufferedImage类的一个数组对象,将鱼游动的不同图片用缓冲技术将图片加载到游戏中去,加快游戏运行速度,当然由于鱼的类型不同,所以需要写出两个变量出来s1和s2,s1代表不同种类的鱼类,s2代表同一种鱼的不同的游动的样子。