zl程序教程

您现在的位置是:首页 >  Java

当前栏目

Java 捕鱼达人简化版

2023-02-26 10:20:00 时间

实现思路:
界面–>池塘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

(福利推荐:阿里云、腾讯云、华为云服务器最新限时优惠活动,云服务器1核2G仅88元/年、2核4G仅698元/3年,点击这里立即抢购>>>

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<fish.length;i++)         {             fish[i]=new Fish(i+1);//11种不同的鱼             fish[i].start();//通过start()方法启动鱼         }     }     //画笔     public void paint(Graphics g){                  g.drawImage(bg, 0, 0,2000, 1000,null);//画背景         //画11种不同的鱼         for(int i=0;i<fish.length;i++)         {             g.drawImage(fish[i].type,fish[i].x,fish[i].y,fish[i].width,fish[i].height,null);         }         if(net.show)//表示显示渔网         {             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.length;i++)                 {                     //表示渔网中线(鼠标位置)在鱼身上,说明捕捉到鱼,让鱼消失,重新进入池塘                     if(e.getX()>=fish[i].x&&e.getX()<=fish[i].x+fish[i].width                             &&e.getY()>=fish[i].y&&e.getY()<=fish[i].y+fish[i].height)                     {                         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<state.length;i++)         {             state[i]=ImageIO.read(new File("images/fish06_0"+i+".png"));         }     }     public Fish(int num) throws Exception{         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<state.length;i++)         {             state[i]=ImageIO.read(new File("images/fish0"+num+"_0"+i+".png"));         }     }     //行为     //在run方法中实现鱼游动的行为     public void run() {         int index=0;         while(true)         {             x=x-speed;//改变鱼的x坐标位置             type=state[(index++)%10];//不停改变鱼的状态             if(x<=-width)             {                 x=2000;                 Random r=new Random();//重新进入池塘,改变y坐标。                 y=r.nextInt(800-height);//随机产生坐标                 speed=r.nextInt(10)+1;//随机改变鱼的速度                 }             try {                 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;              }  }

Java 捕鱼达人简化版


本站部分内容转载自网络,版权属于原作者所有,如有异议请联系QQ153890879修改或删除,谢谢!
转载请注明原文链接:Java 捕鱼达人简化版

你还在原价购买阿里云、腾讯云、华为云、天翼云产品?那就亏大啦!现在申请成为四大品牌云厂商VIP用户,可以3折优惠价购买云服务器等云产品,并且可享四大云服务商产品终身VIP优惠价,还等什么?赶紧点击下面对应链接免费申请VIP客户吧:

1、点击这里立即申请成为腾讯云VIP客户

2、点击这里立即注册成为天翼云VIP客户

3、点击这里立即申请成为华为云VIP客户

4、点击这里立享阿里云产品终身VIP优惠价

喜欢 (0)
[[email protected]]
分享 (0)