大鱼吃豆子游戏java_java swing开发简单的大鱼吃豆子小游戏,可用于毕业设计(附详细设计文档)...

/**

* @(#)fish.BigMouthFish.java 2008-7-31

* Copy Right Information: Tarena

* Project: fish

* JDK version used: jdk1.6.4

* Comments: 大嘴鱼类

* Version: 1.0

* SrDateModified ByWhy & What is modified

* 1.2008-7-31 小猪 新建

**/

package fish;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.Timer;

/**

* 大嘴鱼类

* 此类继承AcitonListener,实现AcitonPerformed方法,练习ActionListener的另一种实现方法

* 此类还练习定时器Timer的使用

* 此类还练习图形类Graphics的使用

* 2008-7-31

* @author达内科技[Tarena Training Group]

* @version1.0

* @sinceJDK1.6(建议)

*/

public class BigMouthFish implements ActionListener{

/** 大嘴鱼嘴的方向:0-上 */

public static int UP = 0;

/** 大嘴鱼嘴的方向:1-右 */

public static int RIGHT = 1;

/** 大嘴鱼嘴的方向:2-下 */

public static int DOWN = 2;

/** 大嘴鱼嘴的方向:3-左 */

public static int LEFT = 3;

/** 大嘴鱼的身体大小,以size为半径画圆 */

public int size = 50;

/** 大嘴鱼现在的方向(以嘴的方向为基准) */

public int direction = RIGHT;

/** 大嘴鱼身体的颜色 */

private Color color = Color.CYAN;

/** 大嘴鱼的位置x */

public int posx = 80;

/** 大嘴鱼的位置y */

public int posy = 80;

/** 大嘴鱼的速度,鱼每次前进的像素 */

public int speed = 4;

/** 大嘴鱼眼睛的大小 */

private int eyesize = size/5;

/** 大嘴鱼眼睛的位置x */

private int eyeposx = posx+size/2;

/** 大嘴鱼眼睛的位置y */

private int eyeposy = posy+size/5;

/** 大嘴鱼眼睛的颜色 */

private Color eyecolor = Color.RED;

/** 大嘴鱼嘴的最大角度的一半 */

private int maxMonth = 30;

/** 大嘴鱼现在嘴角的角度 */

private int monthsize = 30;

/** 大嘴鱼的嘴是否张开 */

private boolean isOpen = true;

private Timer time = null;

/**

* 大嘴鱼缺省构造函数.

* 创建一个位置为(200,200),大小为50,方向为右,颜色为Color.CYAN,速度为10的大嘴鱼

*/

public BigMouthFish() {

//this的使用。

this(200,200,50,RIGHT,Color.CYAN,4);

}

/**

* 根据位置、大小、方向、颜色、速度构造一个大嘴鱼。

* @param posx 大嘴鱼的位置x。

* @param posy 大嘴鱼的位置y。

* @param size 大嘴鱼的大小。

* @param direction 大嘴鱼的方向:0-上;1-右;2-下;3-左。出入错误时,默认改为1。

* @param color 大嘴鱼的颜色。

* @param speed 大嘴鱼的速度。

*/

public BigMouthFish(int posx,int posy,int size,int direction,Color color,int speed) {

this.posx = posx;

this.posy = posy;

this.size = size;

if(direction==1 || direction==2 || direction==3 || direction==4)

this.direction = direction;

this.color = color;

this.speed = speed;

eyesize = size/7;

initEye();

time = new Timer(FishPool.reTime,this);

time.start();

}

/**

* 大嘴鱼移动。根据鱼的方向移动鱼。

*/

public void move(){

switch (direction) {

case 0:

posy--;

break;

case 1:

posx++;

break;

case 2:

posy++;

break;

case 3:

posx--;

break;

default:

break;

}

}

/**

* 改变大嘴鱼身体的颜色。

* @param color 欲改变大嘴鱼身体的颜色

*/

public void changeColor(Color color){

this.color = color;

}

/**

* 改变大嘴鱼的方向

* @param direction 欲改变大嘴鱼的方向

*/

public void changeDir(int direction){

this.direction = direction;

}

/**

* 使用画笔绘画大嘴鱼.大嘴鱼的头像:一个扇形的是鱼脸,上面有一个小圆是眼睛

* 1.保存画笔颜色

* 2.绘制大嘴鱼的脸

* 3.绘制大嘴鱼的眼睛

* 4.恢复画笔颜色

* @param g 画笔

*/

public void paint(Graphics g){

//保存画笔的颜色

Color c = g.getColor();

//绘制鱼脸

g.setColor(color);

//从(posx,posy)点开始,绘制宽为size,高为size,开始角度为(direction%2==0?(direction+1):(direction-1))*90+monthsize,弧度为360-2*maxMonth的弧形

g.fillArc(posx, posy, size, size, (direction%2==0?(direction+1):(direction-1))*90+monthsize, 360-2*monthsize);

//绘制鱼眼

initEye();

g.setColor(eyecolor);

g.fillOval(eyeposx, eyeposy, eyesize, eyesize);

//恢复画笔颜色

g.setColor(c);

}

/**

* 大嘴鱼张嘴闭嘴事件

* 此处只负责鱼的角度的变化,不负责鱼的重绘。

* 重绘在鱼池中实现。

* 这样的好处:保证鱼的绘制和步伐分开。显示层和逻辑层单独处理。(面向对象的责任问题)。

* @param e 事件对象

*/

public void actionPerformed(ActionEvent e) {

if(isOpen){

monthsize -= 2;

if(monthsize<=0)

isOpen = false;

}else{

monthsize += 2;

if(monthsize>=maxMonth)

isOpen = true;

}

}

/**

* 方向改变时,眼睛的改变。

*/

private void initEye(){

switch (direction) {

case 0:

eyeposx = posx+size/7;

eyeposy = posy+size/2-eyesize;

break;

case 1:

eyeposx = posx+size/2;

eyeposy = posy+size/7;

break;

case 2:

eyeposx = posx+size*5/7;

eyeposy = posy+size/2;

break;

case 3:

eyeposx = posx+size/2-eyesize;

eyeposy = posy+size/7;

break;

default:

break;

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.1 手机软件现状 在信息社会中,手机及其他无线设备越来越多的走进普通百姓的工作和生活,随着信息网络化的不断进展,手机及其他无线设备上网络势在必行。但是传统手机存在以下弊端: 1. 传统手机出厂时均由硬件厂商固化程序,程序不能增加、删除,有了错误也不能更新、修改,若要增加新功能必须另换一部手机。 2. 传统手机访问互联网是通过WAP(Wireless Application Protocal),所有网络资源必须接通网络才能在线访问,非常耗时、费用亦很高。 而Java技术在无线应用方面的优势非常明显: 1. 应用程序可按需下载,而不是购买由硬件商提供的套件,可升级空间大。 2. Java技术提供了一个类库,它使的应用开发商可以创建更为直觉、丰富的用户界面(GUI); 3. Java技术使网络带宽的应用更为有效,因为应用程序可以下载到器件上,并在本地运行,仅仅是在连接到服务器时才会占用网络带宽。 基于以上分析,Java手机将是未来手机的发展方向,是业界的热点。 1.2 J2ME介绍 虽然 Java 已经被用到许多企业级软体上,可是其实骨子里面还是非常适合用在嵌入式系统之中。Java平台演进到Java2后,Java平台分别针对不同领域的需求被分成四个版本,亦即J2EE、J2SE、J2ME以及JavaCard。其中J2ME定位在消费性电子产品的应用上。这个版本针对资源有限的电子消费产品的需求精简核心类库,并提供了模块化的架构让不同类型产品能够随时增加支持的能力。这个版本的应用层面相当广泛,会是未来Java平台发展的重点项目。 J2ME在1999年的JavaOne开发人员大会上初次亮相,它的目标是面向智能无线设备和小型计算机设备的开发人员。J2ME的一个关键优点是,J2ME与所有支持Java的设备都是兼容的。支持Java的设备就是任何运行Java虚拟机器的计算机。Motorola、Nokia等生产厂商都生产支持Java的设备。、 J2ME平台是由配置(Configuration)和简表(Profile)构成的。配置是提供给最大范围设备使用的最小类库集合,在配置中同时包含Java虚拟机。简表是针对一系列设备 提供的开发包集合。在J2ME中还有一个重要的概念是可选包(Optional Package),它是针对特定设备提供的类库,比如某些设备是支持蓝牙的,针对此功能J2ME中制定了JSR82(Bluetooth API)提供了对蓝牙的支持。 目前,J2ME中有两个最主要的配置,分别是Connected Limited Devices Configuration(CLDC)和Connected Devices Configuration(CDC)。 作为第一个面对小型设备的Java应用开发规范,CLDC是由包括Nokia,Motorola和Siemens在内的18家全球知名公司共同协商完成的。CLDC是J2ME核心配置中的一个,可以支持一个或多个profile。其目标主要面向小型的、网络连接速度慢、能源有限(主要是电池供电)且资源有限的设备,如手机、PDA等。 而CDC则是主要用于运算能力相对较佳、在电力供应上相对比较充足的嵌入式装置 (比方说冷气机、电冰箱、电视机机顶盒 (set-top box))
豆豆 一、 背景描述 在完成面向对象、Swing、线程的课程后,可以开始练习本项目的部署安排。安排本练习的主要目的理解面向对象、能够用面向对象的思路去思考问题,结合Swing和现成的知识完成本项目。 二、 实现要求 使用面向对象的方式,完成本项目。 三、 实现技术 a) 熟练使用if、for等语句进行逻辑操作。 b) 分析数据的属性和方法,能够熟练地写出该数据表示的类。 c) 使用JFrame创建一个窗体。 d) 掌握ActionListener等事件的注册、添加、操作等。 e) 使用Grahpics能够绘制一般的图形、根据需要定制自己需要的复杂图形。 四、 类图 a) 类图 b) 类图说明 类名称 BigMouthFishFrame 类描述 大嘴鱼界面类。完成大嘴鱼的界面的绘制。该类继承JFrame。 包描述 main 函数描述 public static void main(String[] args) 程序的主函数。 BigMouthFishFrame() 构造函数。构造大嘴鱼界面。 类名称 BigMouthFish 类描述 大嘴鱼类。此类继承AcitonListener,实现AcitonPerformed方法,练习ActionListener的另一种实现方法。此类还练习定时器Timer的使用。此类还练习图形类Graphics的使用。 包描述 fish 函数描述 public BigMouthFish() 大嘴鱼缺省构造函数.创建一个位置为(200,200),大小为50,方向为右,颜色为Color.CYAN,速度为10的大嘴鱼 public BigMouthFish(int posx,int posy,int size,int direction,Color color,int speed) 根据位置、大小、方向、颜色、速度构造一个大嘴鱼。 public void move() 大嘴鱼移动。根据鱼的方向移动鱼。 public void changeColor(Color color) 改变大嘴鱼身体的颜色。 public void changeDir(int direction) 改变大嘴鱼的方向 public void paint(Graphics g) 使用画笔绘画大嘴鱼.大嘴鱼的头像:一个扇形的是鱼脸,上面有一个小圆是眼睛1.保存画笔颜色、2.绘制大嘴鱼的脸、3.绘制大嘴鱼的眼睛、4.恢复画笔颜色 类名称 FishPool 类描述 鱼池类。大鱼和小鱼放到此鱼池中,当大嘴鱼每10条小鱼的时候,鱼的size加1,速度加2。每条小鱼默认存在的时间是15秒钟。10秒后自动消失。此类练习if、for、Timer、内部类等的使用。更重要的是,希望学员做这个的游戏时候能做好严谨的逻辑考虑后,再动手。难点:大嘴鱼在鱼池边界的处理、大嘴鱼升级时的相关问题的处理。 包描述 fish 函数描述 FishPool() 鱼池的缺省构造函数。此处需要完成上下左右键的注册功能。 private void initFishBean() 初始化小鱼。保证小鱼生成的位置与大嘴鱼的位置不重叠。 private void beanNewPos() 小鱼重新生成新位置。保证小鱼生成的位置与大嘴鱼的位置不重叠。 public void paint(Graphics g) 覆盖JLabel的paint事件。 private void bigFishMove(int direction) 大嘴鱼的移动。根据大嘴鱼嘴的方向,判断其是否到了鱼池边界(此处为难点)。 private boolean isTouched() 检测大嘴鱼是否到了小鱼。 内部类 private class RightListenerImpl extends AbstractAction 内部类 - 向右按键事件。 private class DownListenerImpl extends AbstractAction 内部类 - 向下按键事件。 private class DownListenerImpl extends AbstractAction 内部类 - 向下按键事件。 private class LeftListenerImpl extends AbstractAction 内部类 - 向左按键事件。 private class TimerListenerImpl implements ActionListener 内部类 - 图形重回事件。 类名称 FishBean 类描述 豆豆类 包描述 fish 函数描述 public FishBean() 缺省构造函数。按位置(190,190),大小10,颜色Color.MAGENTA构造一
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值