java-捕鱼达人课程设计

合集下载

java捕鱼达人工作流程

java捕鱼达人工作流程

Java捕鱼达人是一款基于Java编程语言开发的休闲游戏。

该游戏的工作流程主要包括游戏准备、游戏进行和游戏结算三个步骤。

首先,在游戏准备阶段,玩家需要选择游戏模式和难度等级。

游戏模式包括单人模式和多人模式,难度等级则包括简单、普通和困难等选项。

玩家还可以进行游戏设置,如调整游戏音效和背景音乐等。

接下来是游戏进行阶段。

玩家将操纵游戏角色在水域中进行捕鱼,通过操作键盘或鼠标来控制角色的移动和发射子弹。

在游戏中,玩家需要躲避一些障碍物,如海藻和岩石,并且要小心一些比较凶猛的鱼类。

玩家可以通过捕获鱼类来赚取金币和积分,并且在游戏中还会出现一些道具,如加速道具和双倍积分道具,可以帮助玩家提升游戏体验和收益。

最后是游戏结算阶段。

一般游戏时间到达或者玩家生命值耗尽时,游戏将会进入结算阶段。

在这个阶段,游戏会统计玩家的捕鱼数量、金币数和积分,然后给予相应的奖励。

玩家可以根据自己的表现获得不同等级的奖励,并且可以用金币来换取一些游戏道具或者提升自己的游戏角色。

总的来说,Java捕鱼达人游戏的工作流程非常简单直观,玩家可以在游戏中体验到捕鱼的乐趣和刺激,同时也能够享受到游戏结算带来的成就感和奖励。

捕鱼达人沙盘课程设计

捕鱼达人沙盘课程设计

捕鱼达人沙盘课程设计一、课程目标知识目标:1. 学生能够理解捕鱼达人沙盘游戏的背景知识,掌握基本的海洋生态及生物链概念。

2. 学生能够运用数学知识,进行数据收集、整理与分析,了解捕鱼业对海洋生态环境的影响。

3. 学生能够结合地理知识,描述不同海域的特点及其对捕鱼业的影响。

技能目标:1. 学生通过沙盘游戏,提高观察、分析、解决问题的能力。

2. 学生能够运用团队合作、沟通协调等技能,完成沙盘游戏中的任务。

3. 学生能够运用计算机技术,对捕鱼数据进行有效处理,提高信息素养。

情感态度价值观目标:1. 学生培养对自然环境的热爱和责任感,关注海洋资源的合理利用与保护。

2. 学生在沙盘游戏中,培养团队合作精神,学会尊重、信任、理解他人。

3. 学生通过课程学习,认识到科技在捕鱼业发展中的重要作用,增强创新意识。

本课程针对五年级学生设计,结合学科特点,注重培养学生的实践能力、合作能力及创新能力。

课程内容紧密联系课本知识,以沙盘游戏为载体,让学生在轻松愉快的氛围中学习,提高学生对海洋生态、捕鱼业及其影响的认知。

通过具体可衡量的课程目标,使学生在知识、技能、情感态度价值观等方面取得实质性进步。

二、教学内容本课程依据课程目标,结合五年级教材,组织以下教学内容:1. 海洋生态基础知识:包括海洋生物的分类、生物链的构成及其相互关系,涉及教材中生态系统相关章节。

2. 捕鱼业发展及影响:介绍捕鱼业的发展历程、现状及对海洋生态环境的影响,关联教材中人类活动对环境的影响章节。

3. 数据收集与处理:教授学生如何收集、整理和分析捕鱼数据,运用数学知识进行简单的数据分析,结合教材中数据分析相关章节。

4. 地理知识与海域特点:介绍不同海域的地理位置、气候特点及其对捕鱼业的影响,涉及教材中地理知识相关章节。

5. 计算机技术应用:教授学生运用计算机技术进行捕鱼数据的处理,提高信息素养,结合教材中信息技术相关章节。

教学内容安排与进度:1. 第一周:海洋生态基础知识学习,进行沙盘游戏规则介绍。

java 捕鱼达人设计流程(按工作时间顺序写)

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 的“捕鱼达人游戏”的开发

基于 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-捕鱼达人课程设计要点

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.课堂小结
•让学生分享自己在游戏中的心得体会,以及如何提高得分的技巧和策略。

•教师对本节课的内容进行总结,强调游戏中的团队合作和竞争意识。

五、教学反思
通过本次教学,学生对捕鱼达人游戏有了更深入的了解,掌握了游戏的规则和技巧,同时也增强了团队合作意识和竞争意识。

在教学过程中,教师应该注重引导学生思考和探索,让学生在游戏中不断提高自己的能力。

JAVA课程设计报告书捕鱼达人

JAVA课程设计报告书捕鱼达人

JAVA课程设计报告书■捕鱼达人一、项目概述本课程设计项目名为“捕鱼达人”,是一款基于Java语言开发的休闲小游戏。

游戏的玩法类似于传统的电子捕鱼游戏,玩家需要控制一个炮台发射炮弹,捕获游泳在屏幕上的鱼类,从而获取积分。

游戏采用图形界面展示,通过键盘操作进行操作。

二、项目功能本项目实现了以下主要功能:1.游戏开始界面:展示游戏名称、游戏说明和开始游戏按钮。

2.游戏主界面:展示玩家得分、可发射的炮弹数量、当前关卡和剩余时间。

3.炮台操作:玩家可以使用键盘左右箭头键控制炮台的旋转角度,空格键发射炮弹。

4.游戏关卡:游戏包含多个关卡,每个关卡有不同游泳速度和分数的鱼类。

5.鱼类生成和移动:游戏会随机生成游泳在屏幕上的鱼类,玩家需要通过炮弹捕获鱼类。

6.炮弹碰撞检测:当炮弹与鱼类碰撞时,计算得分并移除鱼类和炮弹。

7.时间限制:游戏设有时间限制,到达时间上限后游戏结束。

8.游戏结束界面:展示玩家得分、最高分和重新开始游戏按钮。

三、游戏开发过程本项目基于JaVa语言开发,采用面向对象的编程思想。

以下是项目的开发过程和关键步骤:1.游戏框架搭建:使用JavaSwing库创建游戏窗口,定义游戏主界面和游戏开始界面。

2.炮台操作:使用键盘监听器,监听左右箭头键的按F事件,实现炮台的旋转操作。

3.炮弹发射:使用键盘监听器,监听空格键的按下事件,发射炮弹。

创建炮弹类,并定义炮弹的弹道和移动速度。

4.鱼类生成和移动:使用线程控制鱼类的生成和移动。

创建鱼类类,并定义鱼类的游泳速度和移动路径。

5.碰撞检测:使用碰撞检测算法,判断炮弹与鱼类是否发生碰撞。

如果发生碰撞,计算得分并移除鱼类和炮弹。

6.游戏计时:使用定时器控制游戏时间的倒计时,到达时间上限后游戏结束。

7.界面设计:美化游戏界面,添加游戏结束界面,并显ZΓ⅞71家得分和最高分。

四.项目总结本项目旨在通过实践应用Java编程知识,提高学生对Java面向对象编程的理解和掌握程度。

捕鱼达人

捕鱼达人

目录1.设计题目 (1)2.开发环境 (1)3.需求分析 (1)3.1设计目的 (1)3.2设计任务 (1)4.概要设计 (2)4.1系统模块 (2)4.2主要功能模块 (2)4.2.1 Fish类 (2)4.2.2 Net类 (3)4.2.3 Pool类 (3)5.详细设计 (4)5.1游戏欢迎界面的设计 (4)5.2鼠标控制渔网的移动 (4)5.3网是如何捕到鱼 (5)5.4捕鱼达人流程图 (5)6.运行与调试 (7)6.1游戏开始 (7)6.2游戏结束 (7)7.心得体会 (8)8.参考文献 (8)附录 (9)1.设计题目捕鱼达人2.开发环境Windows xp系统Eclipse 8.5编写程序3.需求分析3.1设计目的通过实践使同学们经历智能手机软件开发的全过程和受到一次综合训练,以便能较全面地理解、掌握和综合运用所学的智能手机开发的知识。

结合具体的开发案例捕鱼达人,理解并初步掌握智能手机开发的主要环节和步骤以及智能手机游戏开发的知识。

3.2设计任务1)有游戏欢迎界面。

2)点击右键,网的power值变大。

3)点击左键,进行捕鱼。

4)每点击一个左键,体力值就会减少。

5)当捕到鱼时,体力值会有所回升,界面上会显示捕鱼数和得分。

6)当体力值用完后,会提示是否进行下一局,若选择是,则游戏重新开始;反之,则退出游戏。

4.概要设计4.1系统模块捕鱼达人主要分为5个模块,FishGame类,主要是规划游戏的框架;Fish类写鱼的属性;Net类写网的属性;Pool类;WelcomePanel类。

图4.1系统模块图4.2主要功能模块4.2.1 Fish类图4.2鱼类模块图4.2.2 Net类图4.3渔网类模块图4.2.3 Pool类图4.4鱼池类模块图5.详细设计5.1游戏欢迎界面的设计在FishGame中画好游戏的框架,在WelcomePanel将final JFrame welcome=new JFrame("Welcome");welcome.setSize(643,450);welcome.setLocationRelativeTo(null);welcome.setResizable(false);welcome.setUndecorated(true);//隐藏框架在WelcomePanel将背景图bg加载进来,在FishGame中将bg加载到框架中,使用setVisible 使背景图显示出来WelcomePanel welcomePanel=new WelcomePanel();welcome.add(welcomePanel);welcome.setVisible(true);5.2鼠标控制渔网的移动利用鼠标监听的方法,获取鼠标在游戏界面上的坐标,然后将鼠标的x,y赋给网的x,y。

2018收获季节(捕鱼达人)方案

2018收获季节(捕鱼达人)方案


6、意志坚强的人能把世界放在手中像 泥块一 样任意 揉捏。 2020年 12月16 日星期 三上午 10时38 分33秒 10:38:3 320.12. 16

7、最具挑战性的挑战莫过于提升自我 。。20 20年12 月上午 10时38 分20.1 2.1610: 38Dece mber 16, 2020
420条
几支捕鱼队在经过所有的捕鱼期后,要确保每个鱼塘 捕上来鱼的总数量在420条以上(包括420条),才 能达到渔业公司的要求,兑现当初与渔业公司的承诺。 如最终补不到420条,则全体失败。
02 体验活动背景
➢ 由于湖面面积有限,因此湖里鱼的数量是有限的,当雨水丰富的时候,湖里鱼的上限数量为100条,但由于去年冬天干旱,在第一次捕 鱼时湖里鱼的数量有一定的减少,没有达到实际的饱和状态100条(具体数量不详)。 ➢几家捕鱼队每经过一轮捕鱼,湖里鱼的数量会发生变化,当每一轮(一周时间)捕鱼后: A、如果湖里的鱼多于50条(包括50条),则在下一轮捕鱼时湖里的鱼会自动衍生到100条。 B、如果湖里的鱼在10-49条(包括10、49条),则在下一轮捕鱼时湖里鱼的数量会翻倍。 C、如果湖里鱼的数量小于10条(0-9条),则在下一轮捕鱼时湖里鱼的数量会变为20条。 在这种条件的约束下,几支捕鱼队会进行跨部门的沟通与合作,前期会开放沟通时间,考验团队沟通能力,过程中每轮捕鱼约进行5分钟 左右时间,体验时间➕前期讲解时间约为90分钟,回顾复盘时间约为90分钟。总时间180分钟,3小时
04 场地要求
室内,岛屿式桌椅摆放,按人数分组,每组5-6人。
05 主要分享内容
跨部门沟通
跨部门沟通的四把钥匙。
与现实的关系
本活动中的哪些体验感受能够带回工作 生活中,准备怎么样帮助工作。

Java实现经典捕鱼达人游戏的示例代码

Java实现经典捕鱼达人游戏的示例代码

Java实现经典捕鱼达⼈游戏的⽰例代码⽬录前⾔主要设计功能截图代码实现游戏窗体鱼鱼池类继承⾃Jpanel总结前⾔《捕鱼达⼈》是⼀款以深海狩猎为题材的休闲竞技游戏。

这是⼀场海底世界的远征,享受捕获⼤鱼的乐趣,但不是所有的鱼都是友善的,它们会⽤⾃⼰的⽅式保护⾃⼰,保卫属于⾃⼰的海底世界。

当然,这⾥也是冒险与机遇共存的地⽅,诸多埋藏于海底的宝藏等待着被探寻。

游戏是⽤java语⾔实现,采⽤了swing技术进⾏了界⾯化处理,设计思路⽤了⾯向对象思想。

主要需求在鱼池中有很多鱼,鱼各⾃游动。

有⼀张渔⽹,随⿏标移动,点击⿏标可以抓取渔⽹中的鱼。

抓到鱼进⾏计分。

主要设计1、业务对象模型(“找对象”,理清对象之间的关系)---->数据模型(⽤合理的数据模型描述对象)----->类的设计(根据对象关系和数据模型设计类)。

2、渔⽹的范围和鱼的范围重叠。

——判断⼀个点是否在矩形范围之内即可。

同理:打飞机的游戏也可以依照这种算法实现。

3、由于每条鱼的⾏为不⼀样,所以要继承线程类,实现并发——屏幕上有多条鱼各⾃移动。

鱼池继承JPannel,并引⼊⾃⼰的新的属性:鱼和鱼池。

4、类的详细设计:各个属性的说明如下:- step:鱼的移动速度- Images:鱼图⽚的数组- Image:当前正在显⽰的鱼的图⽚- Index:帧5、实现诸如鱼的摆尾这样的动画效果:我们只需要将鱼的所有运动的帧放⼊到⼀个图⽚数组,逐帧改变背景图⽚,由于⼈眼的视觉暂留,就会产⽣动画效果。

6、循环显⽰不同的图⽚:不断对Index进⾏⾃增取余运算,就类似于数据结构中的循环队列那样处理即可。

功能截图游戏开始⽤渔⽹捕鱼代码实现游戏窗体public class FishlordFrame extends JFrame {public static final int WIDTH = 800;public static final int HEIGHT = 480;private Pool pool;/*** 构造器中初始化界⾯*/public FishlordFrame() {this.setTitle("捕鱼达⼈");this.setSize(WIDTH, HEIGHT);this.setLocationRelativeTo(null); // 设置窗⼝居中,必须放在setSize之后this.setResizable(false);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);try {pool = new Pool();this.getContentPane().add(pool);this.setVisible(true);pool.action();} catch (IOException e) {JOptionPane.showMessageDialog(this, "加载资源失败!","应⽤程序错误",JOptionPane.ERROR_MESSAGE);e.printStackTrace();} catch (Exception e) {JOptionPane.showMessageDialog(this, "初始化游戏失败!","应⽤程序错误",JOptionPane.ERROR_MESSAGE);e.printStackTrace();}}}鱼class Fish implements Runnable {private static final int BASE_STEP = 5; // x和y坐标的步进值的参考标准int speedOfFish = 20; // 控制鱼的速度int x, y, index, width, height, xStep,yStep;BufferedImage fishImage; // 当前鱼的背景图BufferedImage[] fishImages = new BufferedImage[10]; // ⼀条鱼的所有帧的图⽚Random r; // 产⽣随机数/*** 在构造器中初始化鱼的属性* @param fishname* @throws IOException*/public Fish(String fishName) throws IOException {// 加载鱼的图⽚BufferedImage tempFishImage;String resourceName;for (int i = 0; i < 10; i++) {if (i!=9) {resourceName = "/images/" + fishName + "_0" + (i+1) + ".png";}else {resourceName = "/images/" + fishName + "_" + (i+1) + ".png";}tempFishImage = ImageIO.read(getClass().getResourceAsStream(resourceName));fishImages[i] = tempFishImage;}fishImage = fishImages[index];width = fishImage.getWidth(); // 根据背景图⽚的宽⾼设置鱼所占矩形区域的⼤⼩height = fishImage.getHeight();goInPool();}/*** 维持鱼的游动---x和y坐标的变化*/public void run() {while (true) {try {Thread.sleep(speedOfFish); // 如果不休眠,鱼的速度过快,基本感觉不到鱼的存在。

java制作游戏的课程设计

java制作游戏的课程设计

java制作游戏的课程设计一、课程目标知识目标:1. 让学生掌握Java语言的基本语法和面向对象编程思想;2. 让学生了解游戏开发的基本流程和关键环节;3. 让学生掌握简单的图形绘制和动画实现方法;4. 让学生理解事件监听和处理机制在游戏中的应用。

技能目标:1. 培养学生运用Java语言编写简单游戏的能力;2. 培养学生独立分析问题和解决问题的能力;3. 培养学生运用所学知识进行创新设计和实践的能力。

情感态度价值观目标:1. 激发学生对编程和游戏开发的兴趣,提高学习积极性;2. 培养学生的团队合作精神和沟通能力,增强协作意识;3. 引导学生关注游戏的社会影响,树立正确的价值观。

课程性质:本课程为选修课,面向有一定Java基础的学生,以实践为主,注重培养学生的编程能力和创新意识。

学生特点:学生具备基本的Java编程知识,对游戏开发有浓厚兴趣,但缺乏实际操作经验。

教学要求:结合学生特点和课程性质,采用案例教学、分组合作、实践操作等方式,使学生在掌握基本知识的基础上,提高实际操作能力和创新能力。

通过分解课程目标,确保学生在课程结束后能够独立完成一个简单游戏的开发。

二、教学内容1. Java基本语法回顾:变量、数据类型、运算符、控制流程(教材第1章)2. 面向对象编程基础:类与对象、继承与多态、接口与实现(教材第2章)3. Java图形用户界面(GUI):Swing组件、事件处理、布局管理器(教材第3章)4. 游戏开发基本概念:游戏循环、游戏状态、资源管理(教材第4章)5. 图形绘制与动画实现:Canvas绘图、双缓冲技术、帧动画(教材第5章)6. 游戏对象与碰撞检测:游戏对象设计、碰撞检测算法(教材第6章)7. 游戏音效与背景音乐:音频播放、音效处理(教材第7章)8. 游戏案例分析与实战:选取合适的小游戏案例,进行讲解和实战操作(教材实例)教学安排与进度:第1周:Java基本语法回顾,面向对象编程基础第2周:Java图形用户界面(GUI)第3周:游戏开发基本概念,图形绘制与动画实现第4周:游戏对象与碰撞检测第5周:游戏音效与背景音乐第6-8周:游戏案例分析与实战,分组合作完成一个简单游戏开发教学内容与教材紧密关联,确保学生在掌握基础知识的同时,能够学以致用,完成游戏开发实践。

捕鱼达人实验报告

捕鱼达人实验报告
images = new Bufferedlmage[10];
for (int i = 0; i < 9; i++) {
String filename = pre+"_0"+(i+1)+".png"; images[i] = lmagelO.read(new File(filename)); System.out.println(filename);
public void mouseEntered(MouseEvent e) { net.show=true;
}
public void mousePressed(MouseEvent e) {
for (int i = 0; i < allfish」ength; i++) {
Fish fish=allfish[i]; if(fish.catain(net.x,net.y)){ fish.catchFish();
}
index++;
image = images[index%images」ength];
if(index==100){index=0;}
try {
Thread.sleep(1000/24);
} catch (InterruptedException e) {
e.printStackTrace();
}
allfish[i] = new Fish("fish0"+(i+1)); allfish[i+9] = new Fish("fish0"+(i+1));
}

捕鱼达人

捕鱼达人

武汉理工大学华夏学院课程设计报告书课程名称:智能手机软件开发题目:捕鱼达人系名:专业班级:姓名:学号:指导教师:武汉理工大学华夏学院信息工程系课程设计任务书课程名称:智能手机软件开发课程设计指导教师:班级名称:开课系、教研室:一、课程设计目的与任务本课程的设计的目的是通过实践使同学们经历智能手机软件开发的全过程和受到一次综合训练,以便能较全面地理解、掌握和综合运用所学的智能手机开发的知识。

结合具体的开发案例捕鱼达人,理解并初步掌握智能手机开发的主要环节和步骤以及智能手机游戏开发的知识。

二、课程设计的内容与基本要求1、课程设计题目捕鱼达人2、课程设计内容要求学生根据所学的软件工程的理念,利用所学的Android 手机开发的知识,开发一个智能手机游戏捕鱼达人,并针对该手机游戏软件进行需求分析,总体设计、详细设计、编码、测试。

游戏操作鼠标移动/键盘方向键←→控制炮台射击方向,点击鼠标左键/按空格键射击撒网抓鱼,点击下方的红色+号和-号按钮/数字键1-8键/方向键↑键/滑动鼠标滑轮切换炮台游戏背景音乐设计游戏背景动画设计游戏界面设计游戏关卡设计游戏积分榜的设计三、课程设计步骤及时间进度和场地安排本课程设计将安排在第18周, 教育技术中心。

具体安排如下:第一天,系统开发平台搭建及主流开发工具安装第二天,游戏界面的设计第三天,游戏业务的设计第四天,游戏关卡的设计第五天,系统调试测试打包和验收四、课程设计考核及评分标准课程设计考核将综合考虑学生考勤和参与度,系统设计方案正确性,系统设计和开发效果以及课程设计报告书的质量。

具体评分标准如下:设置六个评分点(1)设计方案正确,具有可行性、创新性;25分(2)系统开发效果较好;25分(3)态度认真、刻苦钻研、遵守纪律;10分(4)设计报告规范、课程设计报告质量高、参考文献充分20分(5)课程设计答辩概念清晰,内容正确10分(6)课程设计期间的课堂考勤、答疑与统筹考虑。

java大嘴鱼课程设计

java大嘴鱼课程设计

java大嘴鱼课程设计一、课程目标知识目标:1. 理解Java面向对象编程的基本概念,掌握类与对象的关系,能够运用继承、封装、多态等特性进行编程;2. 学会使用Java集合框架,掌握数组和集合的使用场景及方法;3. 掌握Java异常处理机制,了解异常的分类及处理方法;4. 理解Java多线程编程的基本概念,掌握线程的创建、同步和通信方法。

技能目标:1. 能够运用Java编写简单的图形用户界面(GUI)程序,实现人机交互;2. 培养学生分析问题、设计算法、编写程序解决问题的能力;3. 培养学生良好的编程习惯,注重代码规范性和可读性;4. 提高学生的团队协作能力,学会与他人共同完成项目。

情感态度价值观目标:1. 培养学生对编程的兴趣和热情,激发学习积极性;2. 培养学生勇于尝试、克服困难的精神,增强自信心;3. 培养学生遵守编程道德规范,尊重他人知识产权;4. 培养学生具备良好的沟通能力,学会倾听、表达和合作。

课程性质:本课程为Java编程实践课程,旨在通过项目驱动的教学方式,让学生在动手实践过程中掌握Java编程技能。

学生特点:学生已经具备一定的编程基础,对Java编程有一定了解,但实践经验不足。

教学要求:教师应注重理论与实践相结合,以项目为导向,引导学生主动探究、实践,培养其编程能力和团队协作精神。

同时,关注学生个体差异,提供个性化指导,确保每位学生都能在课程中取得进步。

通过课程学习,使学生能够达到上述课程目标,为后续深入学习Java编程打下坚实基础。

二、教学内容1. 面向对象编程基础:- 类与对象的概念及其关系- 继承、封装、多态特性的应用- 抽象类与接口的定义及使用2. Java集合框架:- 数组的使用及优缺点- Collection接口及其子接口、实现类- Map接口及其实现类3. Java异常处理:- 异常的分类及概念- try-catch-finally结构的使用- 自定义异常的创建及抛出4. Java多线程编程:- 线程的创建及运行- 线程同步与死锁- 线程通信及协作5. 图形用户界面(GUI)编程:- Swing库的常用组件及布局管理器- 事件处理机制- 创建简单的GUI应用程序6. 项目实践:- 设计一个具有基本功能的Java应用程序(如:大嘴鱼游戏)- 运用所学知识,实现程序的各个功能模块- 团队协作,分工完成项目教学内容安排与进度:第一周:面向对象编程基础第二周:Java集合框架第三周:Java异常处理第四周:Java多线程编程第五周:图形用户界面(GUI)编程第六周:项目实践(一)第七周:项目实践(二)第八周:项目实践(三)教材章节关联:1. 面向对象编程基础:教材第3章2. Java集合框架:教材第4章3. Java异常处理:教材第5章4. Java多线程编程:教材第6章5. 图形用户界面(GUI)编程:教材第7章三、教学方法1. 讲授法:针对课程中的理论知识点,如面向对象编程基础、Java集合框架、异常处理和多线程编程等,采用讲授法进行教学。

软件设计java毕业设计-《大鱼吃小鱼》设计与实现

软件设计java毕业设计-《大鱼吃小鱼》设计与实现

目录第一部分设计任务与调研 (2)1.1、设计目标: (2)1.2、设计要求 (2)1.3、设计内容: (2)1.4. 技术路线(步骤与方法) (2)第二部分设计说明 (3)2.1、类的设计 (3)2.2、游戏流程 (4)2.2.1主流程 (4)2.2.2游戏初始化 (5)2.2.3游戏运行 (6)2.2.4游戏结束 (6)2.2.5生产精灵对象 (7)2.2.6键盘按下事件 (8)2.2.7键盘弹起事件 (8)2.2.8精灵与精灵的碰撞 (8)2.2.9世界边界碰撞事件 (9)2.3完成类的定义 (10)2.4实现SpriteFactory类 (12)2.4.1游戏初始化 (12)2.4.2键盘按下事件 (13)2.4.3键盘弹起事件 (14)2.4.5完成游戏运行 (14)2.2.6精灵与精灵的碰撞 (17)2.2.7精灵与世界边界的碰撞 (18)2.2.8完成游戏结束 (18)第三部分设计成果 (19)3.1设计编码图: (19)3.2游戏运行结果图 (26)第四部分结束语 (27)第五部分致谢 (29)第六部分参考文献 (30)第一部分设计任务与调研1.1、设计目标:“大鱼吃小鱼,小鱼吃虾米”,这大概是每个人都会的关于食物链最朴素的描述。

本游戏通过用MyEclipse来设计来是实现这个食物链。

1.2、设计要求1.对游戏中所需类进行设计;2写出源程序文件;3.对游戏进行调试和分析1.3、设计内容:敌方有三类鱼(鲨鱼、橙色鱼和小黄鱼),每一类鱼的对象出现后,在游戏中处于随机自由移动状态,敌方大鱼能吃小鱼;主角为红鱼且红鱼只有一条,玩家通过键盘方向键控制移动,红鱼有两级状态,初始时处于低级状态,只能吃黄鱼,能被蓝鱼或鲨鱼吃掉。

初级状态的红鱼经过重重险恶且吃掉一定数量的黄鱼升级后,能吃黄鱼和蓝鱼,但还是能被鲨鱼吃。

1.4. 技术路线(步骤与方法)游戏界面是一个游戏展现给玩家的平台,所以界面设计是否美观是很多玩家选择一款游戏的重要标准,游戏中界面设计和软件界面设计的要求是一致的,主要有以下几条要求[7]:1、界面美观2、界面条理3、符合玩家操作习惯(界面友好)在本界面中,包含玩家控制的鱼、自由移动的鱼、玩家信息及一个按钮文字,在本界面设计中,根据手机上的操作习惯,将按钮的位置设置在手机的右下角,玩家的信息设置在屏幕最上方和最右边,而将整个屏幕(包含按钮文字显示区域、玩家信息显示区域)作为游戏区域,以最大限度的利用手机上的屏幕空间,所以本游戏未从屏幕中划分出独立的游戏区域。

捕鱼达人原代码

捕鱼达人原代码

设计简述:本程序为简单地捕鱼达人程序,有四个类,fish类为鱼的实体类。

同时也是一个线程类,每一条鱼都是一个线程,Pool类继承的JPanel类,Pool类中重写了绘图函数。

通过改变与的位置并且不断的绘图来实现鱼的动作。

Net类是渔网的一个实体类,当渔网和鱼碰撞检测成功时,该鱼的线程sleep2秒这个时间绘制鱼被捉时的动画。

Fish类:package .qust;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.util.Random;import javax.imageio.ImageIO;public class Fish extends Thread {BufferedImage[] image = new BufferedImage[10];// 定义存放鱼的图片int width;// 定义与图片的宽度int height;// 定义鱼图片的高度int x;// 定义与图片在面板的x位置int y;// 定义鱼图片在面板的Y位置int step;// 定义鱼图片的速度BufferedImage catched1;// 鱼捕到时的第一张图片BufferedImage catched2;// 鱼捕到时的第二张图片boolean isCatched = false;// 表示鱼是否被捕到BufferedImage Image;private int index = 0;public Fish(String s) throws IOException {for (int i = 0; i < image.length; i++) {// 将各类鱼存放在数组中image[i] = ImageIO.read(new File("image/" + s + "_0" + i + ".png"));width = image[i].getWidth();// 获取当前照片的宽度height = image[i].getHeight();}Image = image[index];catched1 = ImageIO.read(new File("image/" + s + "_catch_01.png"));catched2 = ImageIO.read(new File("image/" + s + "_catch_02.png"));Random r = new Random();x = 800;y = r.nextInt(800 - height);step = r.nextInt(5) + 1;}public boolean isCatched(Net net) {int netx = net.x - x;int nety = net.y - y;return netx >= 0 && netx <= width && nety >= 0 && nety <= height;}public void goOut() {Random r = new Random();x = 800;y = r.nextInt(470 - height);step = r.nextInt(4) + 1;}@Overridepublic void run() {while (true) {try {Thread.sleep(60);if (isCatched == false) {index++;Image = image[index % image.length];// 现在要动,所以要改变图片?300x = x - step;} else {Image = catched1;Thread.sleep(60);Image = catched2;}if (x <= -300 || y <= 0 || y >= 480) {goOut();}} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}Net类:package .qust;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import javax.imageio.ImageIO;public class Net {BufferedImage image;int width;// 定义渔网图片的宽度int height;// 定义渔网图片的高度int x;// 定义渔网图片在面板的x位置int y;// 定义渔网图片在面板的Y位置boolean isShow = false;// 表示渔网是否显示public Net() throws IOException {image = ImageIO.read(new File("image/net09.png"));width = image.getWidth();height = image.getHeight();x = 200;y = 100;}public void moveTo(int x, int y) {this.x = x;this.y = y;}}Pool类:package .qust;import java.awt.Color;import java.awt.Graphics;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.util.Date;import javax.imageio.ImageIO;import javax.swing.JPanel;public class Pool extends JPanel {BufferedImage b;// 定义背景Fish fishes[];Net net;int count;// 统计鱼的个数BufferedImage s;// 分数面板BufferedImage[] scores = new BufferedImage[6];// 存储0~9图片public Pool() throws IOException {b = ImageIO.read(new File("image/bg.jpg"));s = ImageIO.read(new File("image/bottom-bar.png"));fishes = new Fish[20];for (int i = 0; i < 9; i++) {fishes[i] = new Fish("fish0" + (i + 1));fishes[i + 9] = new Fish("fish0" + (i + 1));}fishes[18] = new Fish("fish14");fishes[19] = new Fish("fish13");new Thread() {@Overridepublic void run() {for (int i = 0; i < fishes.length; i++) {fishes[i].start();try {Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}.start();net = new Net();for (int i = 0; i < scores.length; i++) {scores[i] = ImageIO.read(new File("image/0.png"));}}@Overridepublic void paint(Graphics g) {// 绘图函数g.drawImage(b, 0, 0, 800, 600, null);// 绘制背景图g.drawImage(s, -5, 500, 800, s.getHeight(), null);for (int i = 0; i < scores.length; i++) {g.drawImage(scores[i], 13 + i * 25, 545, 23, 23, null);}for (int i = 0; i < fishes.length; i++) {g.drawImage(fishes[i].Image, fishes[i].x, fishes[i].y, null);// System.out.println("画一条鱼");}// for (int i = 0; i < fishes.length; i++) {// if (fishes[i].isCatched = true) {// g.drawImage(fishes[i].catched1, fishes[i].x, fishes[i].y, null);// g.drawImage(fishes[i].catched2, fishes[i].x, fishes[i].y, null);// g.drawImage(fishes[i].catched1, fishes[i].x, fishes[i].y, null);// g.drawImage(fishes[i].catched2, fishes[i].x, fishes[i].y, null);// g.drawImage(fishes[i].catched1, fishes[i].x, fishes[i].y, null);// g.drawImage(fishes[i].catched2, fishes[i].x, fishes[i].y, null);// g.drawImage(fishes[i].catched1, fishes[i].x, fishes[i].y, null);// g.drawImage(fishes[i].catched2, fishes[i].x, fishes[i].y, null);// }// }if (net.isShow == true) {int x = net.x - net.width / 2;int y = net.y - net.height / 2;g.drawImage(net.image, x, y, net.width, net.height, null);}g.setColor(new Color(255, 255, 0));// 设置画笔颜色g.drawString(count + "", 10, 10);// 画捕捉到鱼的条数Date date = new Date();g.drawString(date.toString(), 25, 25);// 画系统时间}public void action() {MouseAdapter mouse = new MouseAdapter() {@Overridepublic void mouseMoved(MouseEvent e) {int x = e.getX();int y = e.getY();net.moveTo(x, y);}@Overridepublic void mouseEntered(MouseEvent e) {net.isShow = true;}@Overridepublic void mouseExited(MouseEvent e) {net.isShow = false;}@Overridepublic void mousePressed(MouseEvent e) {try {catchFish();} catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}};// 将事件监听器绑定到面板中this.addMouseListener(mouse);this.addMouseMotionListener(mouse);while (true) {repaint();// 重复绘图}}public void catchFish() throws IOException {for (int i = 0; i < fishes.length; i++) {if (fishes[i].isCatched(net)) {fishes[i].isCatched = true;final Fish a = fishes[i];new Thread() {@Overridepublic void run() {try {Thread.sleep(800);a.goOut();count++;// 统计鱼的数目String str = count + "";// 变成字符串for (int j = 0; j < str.length(); j++) {try {scores[5 - j] = ImageIO.read(new File("image/"+ str.charAt(str.length()- 1 - j) + ".png"));} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}};}.start();}}}}Main类:package .qust;import java.io.IOException;import javax.swing.JFrame;public class Main {/*** @param args* @throws IOException*/public static void main(String[] args) throws IOException { // TODO Auto-generated method stubJFrame j = new JFrame();Pool p = new Pool();j.add(p);j.setResizable(true);// 设置窗体不可拖拽// j.setLocation(200, 800);j.setDefaultCloseOperation(3);// 设置窗体与jvm关联j.setSize(800, 600);j.setVisible(true);j.setVisible(true);p.action();}}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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代表同一种鱼的不同的游动的样子。

相关文档
最新文档