java-捕鱼达人课程设计要点

合集下载

jav课程设计内容

jav课程设计内容

jav课程设计内容一、教学目标本节课的教学目标是让学生掌握Java编程语言的基本语法和编程思想,学会使用Java编写简单的控制台应用程序。

具体分为以下三个部分:1.知识目标:(1)了解Java语言的基本语法和数据类型。

(2)掌握Java程序的结构和编写方法。

(3)理解面向对象编程的基本概念,如类、对象、封装、继承和多态。

2.技能目标:(1)能够使用Java编写简单的控制台应用程序。

(2)学会使用Java编写面向对象的程序,具备初步的编程能力。

3.情感态度价值观目标:培养学生对编程语言的兴趣,激发学生主动学习和探索编程的欲望,培养学生的团队协作精神和自主学习能力。

二、教学内容本节课的教学内容主要包括以下几个部分:1.Java语言的基本语法和数据类型。

2.Java程序的结构和编写方法。

3.面向对象编程的基本概念,如类、对象、封装、继承和多态。

4.编写简单的控制台应用程序,巩固所学知识。

三、教学方法为了更好地实现教学目标,本节课采用以下几种教学方法:1.讲授法:讲解Java语言的基本语法、数据类型和程序结构。

2.案例分析法:通过分析实例,使学生掌握面向对象编程的基本概念。

3.实验法:让学生动手编写控制台应用程序,巩固所学知识。

4.讨论法:鼓励学生积极参与课堂讨论,培养学生的团队协作精神。

四、教学资源为了保证教学效果,本节课准备以下教学资源:1.教材:《Java编程入门》2.参考书:《Java核心技术》3.多媒体资料:PPT课件、教学视频4.实验设备:计算机、网络环境5.在线编程平台:例如LeetCode、牛客网,供学生课后练习和提高编程能力。

五、教学评估为了全面、客观地评估学生的学习成果,本节课采用以下几种评估方式:1.平时表现:观察学生在课堂上的参与程度、提问回答等情况,了解学生的学习态度和基本素养。

2.作业:布置适量作业,要求学生在规定时间内完成,通过作业质量评估学生的掌握程度。

3.考试:安排一次课堂小测,测试学生对Java基本语法和编程思想的掌握情况。

java捕鱼达人工作流程

java捕鱼达人工作流程

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

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

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

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

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

接下来是游戏进行阶段。

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

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

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

最后是游戏结算阶段。

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

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

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

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

捕鱼达人沙盘课程设计

捕鱼达人沙盘课程设计

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

捕鱼达人原代码

捕鱼达人原代码

设计简述:本程序为简单地捕鱼达人程序,有四个类,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();}}。

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凭借其开放性和灵活性成为时下热门的移动终端操作系统之一。

深海猎奇-捕鱼达人玩法

深海猎奇-捕鱼达人玩法

灯笼鱼:分值 40,它的分值是一条鲨鱼的一
半!有些打很多枪也死不了,但是不要灰心,因 为在你打这种灯笼鱼的同时也会打到 N 多的小 鱼,打不死它我们也不吃亏,追着它打~!
魔血鱼:分值 30。魔血鱼在海里的游泳速度
是最快的,也是我们玩《深海猎奇-捕鱼达人》 要重点打击的鱼种!一般情况下,朝着你枪口飞 奔而来或者是从你身边滑过的魔血鱼基本都是 送分使者,运气好的话一枪就能秒杀,如果一枪 秒不了的一般在四枪至六枪之内必秒! 鲨鱼:分值 100.,海洋中的霸王!打中它的 话你就赚大了!在街机上面,打到一条鲸鱼就等
近游动的那些乌龟,尽量就不要浪费炮弹了,命 中率很低,从炮塔两侧突然出现的鲨鱼,如果你 平常喜欢用三级打,如果看到这样的鲨鱼,先用 三级打一发,然后突然提高一级,连发两发,炮
鱼就不容易死。第二天,我去厨房煎药顺带搞一下卫生,那条鱼看
塔不定,就不要浪费炮弹 了。
在把炮塔调整角度时候,通常可以看到一些
向你的炮塔直冲而下的鱼,这些鱼的速度很快, 遇到这种鱼,可以通常采取迎射,往往是 2 级和 三级炮弹的连发,打鱼的两侧,而且要左右切换
的攻击,特别是打魔血鱼的时候,炮弹一定要先
打鱼的外侧,然后切换到左侧,连击,命中率很 高。
从炮塔两侧出来的灯笼鱼,绕着你的炮塔很
鱼就不容易死。第二天,我去厨房煎药顺带搞一下卫生,那条鱼看
于 100 金币(价值各个游戏厅价值不等)所以,
鲨鱼一出现的地方必定是火力猛烈轰炸的地方! 在的《深海猎奇-捕鱼达人》中就是一个不折不 扣的“死硬派”非常的不好打。在《深海猎奇捕鱼达人》中,我们要注意的地方是,有些魔血 鱼出来运气好的话一枪或者两枪就能秒掉的,这 类型的就是传说中的“活雷锋”送“分使者”了,
在打离炮塔很近的乌龟的时候,先用平常打

嵌入式课程设计捕鱼达人

嵌入式课程设计捕鱼达人

嵌入式课程设计捕鱼达人一、教学目标本课程旨在通过“捕鱼达人”项目的设计与实现,让学生掌握嵌入式系统的基本原理和开发技能。

具体目标如下: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.多媒体资料:制作课件和教学视频,辅助学生理解嵌入式系统的原理和应用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

武汉理工大学华夏学院课程设计报告书课程名称:智能手机软件开发题目:捕鱼达人系名:信息工程系专业班级:计算机1112*名:***学号:***************:***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代表同一种鱼的不同的游动的样子。

相关文档
最新文档