码迷,mamicode.com
首页 > 编程语言 > 详细

java21:捕鱼达人

时间:2016-01-06 12:13:38      阅读:286      评论:0      收藏:0      [点我收藏+]

标签:java   捕鱼达人   素材   源码   public   

类的设计 

    Pool 继承 JPanel

        background

        Fish[] allFish

        FishingNet fishingNet


    Fish 

        x

        y

        width

        height

        images

        index

        image

    

    FishingNet 

        x

        y

        width

        height

        image


素材在最下面:ps技术有限 不喜欢的可以自己画!!!

package xyz.rhel.fish;

import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;

public class FishingNet {
	private int x;
	private int y;
	private int width;
	private int height;
	private BufferedImage image;
	private boolean show;
	
	public FishingNet(String img) throws Exception {
		image = ImageIO.read(new File(img));
		width = image.getWidth();
		height = image.getHeight();
	}

	public int getWidth() {
		return width;
	}

	public void setWidth(int width) {
		this.width = width;
	}

	public int getHeight() {
		return height;
	}

	public void setHeight(int height) {
		this.height = height;
	}

	public int getX() {
		return x;
	}

	public void setX(int x) {
		this.x = x;
	}

	public int getY() {
		return y;
	}

	public void setY(int y) {
		this.y = y;
	}

	public BufferedImage getImage() {
		return image;
	}

	public void setImage(BufferedImage image) {
		this.image = image;
	}
	
	public boolean isShow(){
		return show;
	}
	
	public void setShow(boolean show){
		this.show = show;
	}
	
}
package xyz.rhel.fish;

import java.awt.image.BufferedImage;
import java.io.File;
import java.util.Random;

import javax.imageio.ImageIO;

public class Fish implements Runnable {
	private int x;
	private int y;
	private int width;
	private int height;
	private int index;
	private int step;
	private BufferedImage[] images;
	private BufferedImage image;

	public int getX() {
		return x;
	}

	public void setX(int x) {
		this.x = x;
	}

	public int getY() {
		return y;
	}

	public void setY(int y) {
		this.y = y;
	}

	public int getWidth() {
		return width;
	}

	public void setWidth(int width) {
		this.width = width;
	}

	public int getHeight() {
		return height;
	}

	public void setHeight(int height) {
		this.height = height;
	}

	public int getIndex() {
		return index;
	}

	public void setIndex(int index) {
		this.index = index;
	}

	public int getStep() {
		return step;
	}

	public void setStep(int step) {
		this.step = step;
	}

	public BufferedImage[] getImages() {
		return images;
	}

	public void setImages(BufferedImage[] images) {
		this.images = images;
	}

	public BufferedImage getImage() {
		return image;
	}

	public void setImage(BufferedImage image) {
		this.image = image;
	}

	public Fish(String perfix) throws Exception {
		images = new BufferedImage[10];
		for (int i = 0; i < 10; i++) {
			String file = perfix + i + ".png";
			images[i] = ImageIO.read(new File(file));
		}
		image = images[0];
		width = image.getWidth();
		height = image.getHeight();
		Random random = new Random();
		x = random.nextInt(800 - width);
		y = random.nextInt(480 - height);
		step = random.nextInt(3) + 1;

	}

	public void getOut() {
		Random random = new Random();
		x = 800;
		y = random.nextInt(480 - height);
		step = random.nextInt(3) + 1;
	}

	public void move() {// 鱼移动
		x -= step;
		if (x < -width) {
			getOut();
		}
		image = images[index++%images.length];//更换图片
	}

	public boolean catchBy(FishingNet fishingNet) {// 抓鱼
		int dx = fishingNet.getX() - this.x;
		int dy = fishingNet.getY() - this.y;
		return dx >= 0 && dx < width && dy >= 0 && dy < height;
	}

	public void run() {// 在Runnable 中定义的抽象方法,在子类中来重写
		while (true) {
			move();
			try {
				Thread.sleep(1000 / 10);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

}


package xyz.rhel.fish;

import static javax.imageio.ImageIO.read;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;



public class Pool extends JPanel {
	private BufferedImage background;
	private FishingNet fishingNet;
	private Fish[] all;
	
	public Pool() throws Exception{
		background = read(new File("pool.png"));
		fishingNet = new FishingNet("fishingNet.png");
		all = new Fish[]{
				new Fish("f"),new Fish("f"),new Fish("f"),new Fish("f")
				,new Fish("f"),new Fish("f"),new Fish("f"),new Fish("f")
				,new Fish("df"),new Fish("df"),new Fish("df"),new Fish("df")
				,new Fish("df"),new Fish("df"),new Fish("df"),new Fish("df")
				,new Fish("jf"),new Fish("jf"),new Fish("jf"),new Fish("jf")
		};
	}
	
	public void paint(Graphics g){
		g.drawImage(background,0,0,null);
		for(Fish fish :all){
			int x = fish.getX();
			int y = fish.getY();
			g.drawImage(fish.getImage(),x,y,null);
		}
		if(fishingNet.isShow()){
			Image img = fishingNet.getImage();
			int x = fishingNet.getX() - fishingNet.getWidth()/2;
			int y = fishingNet.getY() - fishingNet.getHeight()/2;
			g.drawImage(img,x,y,null);
		}
	}
	
	protected void catchFish(){
		for(Fish fish:all){
			if(fish.catchBy(fishingNet)){
				fish.getOut();
			}
		}
	}
	
	
	
	public void action()throws Exception{
		for(Fish fish:all){
			Thread t = new Thread(fish);
			t.start();
		}
		
		MouseAdapter l = new MouseAdapter(){
			public void mousePressed(MouseEvent e) {
				catchFish();
				

			}
			
			public void mouseMoved(MouseEvent e) {
				int x = e.getX();
				int y = e.getY();
				fishingNet.setX(x);
				fishingNet.setY(y);
			}
			
			public void mouseEntered(MouseEvent e) {
				fishingNet.setShow(true);
			}
			
			public void mouseExited(MouseEvent e) {
				fishingNet.setShow(false);
			}
		};
		this.addMouseListener(l);
		this.addMouseMotionListener(l);
		
		
		while(true){
			repaint();
			Thread.sleep(1000/24);
		}
	}
	
	public static void main(String[] args)throws Exception{
		JFrame frame = new JFrame("捕鱼达人");
		frame.setSize(800, 600);
		frame.setLocationRelativeTo(null);
		Pool pool = new Pool();
		frame.add(pool);
		frame.setVisible(true);
		pool.action();
		
		
	}
}



技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享


本文出自 “浪漫的偷笑” 博客,转载请与作者联系!

java21:捕鱼达人

标签:java   捕鱼达人   素材   源码   public   

原文地址:http://lmdtx.blog.51cto.com/6942028/1731946

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!