Java

您所在的位置:网站首页 捕鱼达人经典 Java

Java

2023-07-17 05:50| 来源: 网络整理| 查看: 265

捕鱼达人

捕鱼达人游戏开发 界面–>池塘Pool–>池塘的环境–>鱼–>渔网 1、完成捕鱼达人游戏的窗体界面 2、完成捕鱼达人的背景(环境)功能 3、完成一条静止不动的鱼 (1)定义了Fish类 (2)在Fish类添加了5个特征 (3)在Fish类中添加了构造方法,在构造方法中对5个特征赋值 (4)在Pool的特征处,定义了一条鱼 Fish f; (5)在Pool类的构造方法中,创建一条鱼,给f赋值。 f=new Fish(); (6)在Pool类的paint方法中,使用画笔 画出鱼f 4、完成一条能够移动的鱼(游) (1)让Fish类继承Thread (2)在Fish类的行为处,调出run方法 在run()方法中实现x— (3)在Pool类的构造方法中,通过f调用start()方法启动线程 (4)在Pool类中自定义action方法,在 action方法中实现不停的执行paint 方法 (5)在Start类中通过pl调用action()方法 5、鱼游出池塘,在重新进入池塘 6、重新进入池塘,改变y坐标值(不在一条线上游) 7、鱼的速度 1-5随机 8、鱼重新进入池塘,速度也发生改变(鱼别一直一个速度) 9、鱼初始位置的设置 10、完成一条鱼的动画效果 fish08_00.png fish08_01.png … fish08_09.png 10张图片 – 一组鱼游的动画 11、完成多条同种类型的鱼 12、完成多条不同种类型的鱼 13、渔网 14、渔网的功能 (1)渔网移动的功能 (2)渔网的隐藏功能 (3)渔网的显示功能 (4)渔网的捕鱼功能 Start.java

package com.lddx.projects; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; //启动捕鱼达人游戏的主类 public class Start { public static void main(String[] args) throws Exception{ Start s=new Start(); s.Init(); } //初始化 public void Init() throws Exception{ JFrame f=new JFrame(); JPanel p=new JPanel(); Pool pl= new Pool(); /*ImageIcon fish=new ImageIcon("images/fish05_00.png"); JLabel label=new JLabel(fish); p.add(label); f.add(p);*/ f.add(pl); f.setTitle("捕鱼达人破解版"); f.setVisible(true); f.setSize(2000, 1000); f.setLocation(3, 6); f.setResizable(false); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setIconImage(ImageIO.read(new File("images/fish09_00.png"))); pl.action(); } }

池塘Pool.java

package com.lddx.projects; 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.util.Random; import javax.imageio.ImageIO; import javax.swing.JPanel; public class Pool extends JPanel{ //背景 BufferedImage bg; //渔网图片 //11种鱼 Fish[] fish=new Fish[11]; //渔网 Fishnet net=new Fishnet(); //无参的默认构造函数 public Pool() throws Exception{ bg=ImageIO.read(new File("images/bg.jpg")); for(int i=0;i g.drawImage(bg, 0, 0,2000, 1000,null);//画背景 //画11种不同的鱼 for(int i=0;i g.drawImage(net.net_image,net.x,net.y,net.width,net.height,null);//画渔网 } } //自定义方法,让paint()重复执行 public void action(){ //使用匿名内部类继承MouseAdapter MouseAdapter ma=new MouseAdapter(){ //鼠标移动事件的监听,完成渔网移动的功能 public void mouseMoved(MouseEvent e) { //System.out.println("鼠标移动了"); net.change(e.getX(), e.getY());//渔网跟着鼠标移动 } //鼠标点击事件的监听,完成捕鱼的功能 public void mouseClicked(MouseEvent e) { //System.out.println("鼠标点击了"); //当监听到鼠标单击了,进行捕鱼功能 //将数组中每一条鱼取出,检测这些fish是否被捕捉 for(int i=0;i fish[i].x=2000; Random r=new Random();//重新进入池塘,改变y坐标。 fish[i].y=r.nextInt(800-fish[i].height);//随机产生y坐标 fish[i].speed=r.nextInt(10)+1;//随机改变鱼的速度 } } } //鼠标离开事件的监听,完成渔网隐藏的功能 public void mouseExited(MouseEvent e) { //System.out.println("鼠标离开了"); net.show=false; } //鼠标进入事件的监听,完成渔网显示的功能 public void mouseEntered(MouseEvent e) { //System.out.println("鼠标进来了"); net.show=true; } }; //将定义好的匿名内部类绑定到池塘 //使用关键字this,表示当前池塘Pool类 this.addMouseListener(ma); this.addMouseMotionListener(ma);//鼠标移动 while(true) { //repaint()继承父类JPanel, repaint();//将paint()调用一次; } } }

鱼类Fish.java

package com.lddx.projects; import java.awt.image.BufferedImage; import java.io.File; import java.util.Random; import javax.imageio.ImageIO; //鱼类 public class Fish extends Thread{ //种类 BufferedImage type; //大小 int width,height; //位置 int x,y; //速度 int speed; //状态 BufferedImage[] state=new BufferedImage[10]; public Fish() throws Exception{ Random r=new Random(); //对鱼的特征初始化 type=ImageIO.read(new File("images/fish06_00.png")); width=type.getWidth(); height=type.getHeight(); x=2000; y=r.nextInt(800-height); speed=r.nextInt(6)+1; for(int i=0;i Random r=new Random(); //对鱼的特征初始化 type=ImageIO.read(new File("images/fish0"+num+"_00.png")); width=type.getWidth(); height=type.getHeight(); x=2000; y=r.nextInt(800-height); speed=r.nextInt(6)+1; for(int i=0;i int index=0; while(true) { x=x-speed;//改变鱼的x坐标位置 type=state[(index++)%10];//不停改变鱼的状态 if(x Thread.sleep(60);//线程睡眠 } catch (InterruptedException e) { e.printStackTrace(); } } } }

渔网Fishnet.java

package com.lddx.projects; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; public class Fishnet{ //渔网 BufferedImage net_image; //大小 int width,height; //位置 int x,y; //渔网的显示隐藏 boolean show;//为true表示显示; //无参的默认构造函数 public Fishnet() throws Exception{ net_image=ImageIO.read(new File("images/net09.png")); width=net_image.getWidth(); height=net_image.getHeight(); x=100; y=100; show=true; } //定义修改渔网坐标值的方法 public void change(int x1,int y1){ x=x1-width/2;//渔网的x坐标-渔网宽度的一半 y=y1-height/2; } }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3