聪明文档网

聪明文档网

最新最全的文档下载
当前位置: 首页> 捕鱼达人原代码

捕鱼达人原代码

时间:2018-06-27 22:28:30    下载该word文档

设计简述:

本程序为简单地捕鱼达人程序,有四个类,fish类为鱼的实体类。同时也是一个线程类,每一条鱼都是一个线程,Pool类继承的JPanel类,Pool类中重写了绘图函数。通过改变与的位置并且不断的绘图来实现鱼的动作。Net类是渔网的一个实体类,当渔网和鱼碰撞检测成功时,该鱼的线程sleep2秒这个时间绘制鱼被捉时的动画。

Fish类:

package cn.edu.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;

}

@Override

public void run() {

while (true) {

try {

Thread.sleep(60);

if (isCatched == false) {

index++;

Image = image[index % image.length];

// 现在要动,所以要改变图片?300

x = 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 block

e.printStackTrace();

}

}

}

}

Net类:

package cn.edu.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 cn.edu.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() {

@Override

public void run() {

for (int i = 0; i < fishes.length; i++) {

fishes[i].start();

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}.start();

net = new Net();

for (int i = 0; i < scores.length; i++) {

scores[i] = ImageIO.read(new File("image/0.png"));

}

}

@Override

public 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() {

@Override

public void mouseMoved(MouseEvent e) {

int x = e.getX();

int y = e.getY();

net.moveTo(x, y);

}

@Override

public void mouseEntered(MouseEvent e) {

net.isShow = true;

}

@Override

public void mouseExited(MouseEvent e) {

net.isShow = false;

}

@Override

public void mousePressed(MouseEvent e) {

try {

catchFish();

} catch (IOException e1) {

// TODO Auto-generated catch block

e1.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() {

@Override

public 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 block

e.printStackTrace();

}

}

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

};

}.start();

}

}

}

}

Main类:

package cn.edu.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 stub

JFrame 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();

}

}

免费下载 Word文档免费下载: 捕鱼达人原代码

  • 29.8

    ¥45 每天只需1.0元
    1个月 推荐
  • 9.9

    ¥15
    1天
  • 59.8

    ¥90
    3个月

选择支付方式

  • 微信付款
郑重提醒:支付后,系统自动为您完成注册

请使用微信扫码支付(元)

订单号:
支付后,系统自动为您完成注册
遇到问题请联系 在线客服

常用手机号:
用于找回密码
图片验证码:
看不清?点击更换
短信验证码:
新密码:
 
绑定后可用手机号登录
请不要关闭本页面,支付完成后请点击【支付完成】按钮
遇到问题请联系 在线客服