package com.tarena.fish;

//只要类不是在java.lang下面的包,都要导包

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import java.awt.event.MouseMotionListener;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import java.util.Random;

import javax.imageio.ImageIO;

import javax.swing.JFrame;

import javax.swing.JPanel;

public class Pool extends JPanel implements

MouseMotionListener,MouseListener{

public static void main(String[] args) {

JFrame f = new JFrame();//创建窗口

f.setTitle("My捕鱼达人");//设置窗口标题

f.setSize(800, 600);//设置窗口大小

f.setDefaultCloseOperation(

JFrame.EXIT_ON_CLOSE);//当窗口关闭,程序就结束

f.setLocationRelativeTo(null);//窗口居中

f.setResizable(false);//取消默认布局

Pool p = new Pool();//创建面板Pool对象

f.addMouseListener(p);//增加鼠标监听器

f.addMouseMotionListener(p);//增加鼠标监听器

f.add(p);//把面板放到窗口里

f.setVisible(true);//设置窗口可见

p.action();//调用执行鱼游动的方法

}

BufferedImage bg;//背景图片

// Fish fish;//一条鱼

Fish[] fishs;//所有的鱼

Net net;//鱼网

int score = 0;//积分

//构造器,用来加载图片

public Pool() {

try {

//加载背景图片

bg = ImageIO.read(

new File("src/images/bg.jpg"));

//创建鱼

// fish = new Fish(

// "src/images/fish08_02.png");

// fish = new Fish(

// "src/images/fish08");

//初始化所有的鱼

fishs = new Fish[11];

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

if(i < 9){

fishs[i] = new Fish(

"src/images/fish0"+(i+1));

}else{

fishs[i] = new Fish(

"src/images/fish"+(i+1));

}

}

//加载鱼网图片

net = new Net("src/images/net.png");

} catch (IOException e) {

e.printStackTrace();

System.out.println("加载图片失败!");

}

}

//画背景

public void paint(Graphics g) {

//填冲背景

g.drawImage(bg,0,0,getWidth()

,getHeight(),null);

//画一鱼

// fish.draw(g);

//画多条鱼

for (Fish fish : fishs) {//新的for循环

fish.draw(g);

}

//画鱼网

net.draw(g);

//画积分

g.setColor(Color.white);

g.setFont(new Font("宋体",Font.BOLD,30));

g.drawString("积分:"+score,20,30);

}

//执行鱼游动的方法

public void action(){

//把鱼放到线程里,并启动线程

// new Thread(fish).start();

//每条鱼分配一个线程

for (Fish fish : fishs) {

new Thread(fish).start();

}

while(true){

repaint();//重新绘画面板

}

}

@Override

public void mouseDragged(MouseEvent e) {

// TODO Auto-generated method stub

}

//让鱼网同步鼠标

@Override

public void mouseMoved(MouseEvent e) {

net.x = e.getX();//把鼠标的当前坐标赋给鱼网的坐标

net.y = e.getY();

repaint();//重新绘画

}

@Override

public void mouseClicked(MouseEvent e) {

Random r = new Random();

for (Fish fish : fishs) {

//如果鱼在网里,就重新生成鱼

if(net.contain(fish)){

fish.x = 800;

fish.y = r.nextInt(550)+20;

fish.step = r.nextInt(4)+1;

score += 10;

}

}

}

@Override

public void mousePressed(MouseEvent e) {

// TODO Auto-generated method stub

}

@Override

public void mouseReleased(MouseEvent e) {

// TODO Auto-generated method stub

}

@Override

public void mouseEntered(MouseEvent e) {

// TODO Auto-generated method stub

}

@Override

public void mouseExited(MouseEvent e) {

// TODO Auto-generated method stub

}

}

java编写猫抓老鼠程序_Java抓鱼程序相关推荐

  1. java 模拟时钟程序_java模拟时钟程序

    } clock_revise(); } final_print_out(); //时钟修正 //仿真结果打印输出 下图表示了 GPSS/JAVA 的运行逻辑初始化 程序 1. 设定仿真开始时间 2.初 ...

  2. java编写超市收银系统_java编写的超市收银系统

    [实例简介] 用java编写的超市收银系统, [实例截图] [核心代码] ad9ea874-4694-4cc4-b634-760c9c1b6b65 └── 超市收银系统 ├── sql │   ├── ...

  3. 用java编写租车系统代码_java实现租车系统

    今天用java编写了一个租车系统,过程中主要遇到的两个问题: 1.输出数组信息问题: 在得到cars[]数组后,要生成租车信息表,目前有两种思路:一是用循环输出:二是用arrays.tostring( ...

  4. 用java编写日历添加窗口一角_Java 实训4 编写一个窗体程序显示日历

    实训要求: 1.使用BorderLayout 进行总体布局 2.在North 位置放置包含两个按钮( 上月和下月)的Panel 3.在South 位置放置一个Label 用于显示当前年份和月份 4.在 ...

  5. java编写脚本校验修改密码_java编写一个更改密码校验程序,有两个密码框,一个用于输入新密码,另一个请输入确认密码……...

    展开全部 import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JBu ...

  6. java编写摄氏度转华氏度_JAVA题:编写一个能够转换华氏温度和摄氏温度的程序。在“摄氏温度”文本域输入一个值并点击华氏按钮(两...

    展开全部 import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListe ...

  7. JAVA编写提示用户输入投资额_java(计算银行存款总额(要求输入错误时,提示重新输入))...

    [任务一]:编写一个简单 Java 程序,计算银行年存款的本息. 要求:程序运行后要求用户输入存款本金.年利率和存款年限,最后程序计算并输出相应年限后存款的金额.相应 的计算公式为:存款总额=本金 * ...

  8. java编写抖音上图片转文字的程序

    看着有趣就花了点时间,找相关demo拼凑在一起了. 逻辑是读取图片像素,根据像素RGB值区分深浅,然后再用文字替换,输出成text的文档.最后改变字体到合适的大小. 话不多说,直接贴主代码.为防伸手党 ...

  9. java编写主类什么意思_Java中什么是类及类的定义

    本章节主要介绍java中类的定义及定义所用的关键字 类是 Java 中的一种重要的复合数据类型,也是组成 Java 程序的基本要素,因为所有的 Java 程序都是基于类的.本节介绍如何定义类. 在 J ...

最新文章

  1. 刘小京 | 与盐碱地和谐共生-关于盐碱地改良利用的思考
  2. Linux下Makefile的automake生成全攻略--转
  3. Linux高级文本处理之sed(三)
  4. template里面要做数据渲染,但是数据还没有出来
  5. python运行报错_请教大神python运行书上源码报错,请指点,谢谢
  6. Android 5.0+(RecycleView、CardView、Palette)
  7. 计算机网络领悟摩尔定,计算机网络等133信息技术展望P15-P17.PPT
  8. JAVA基础--JAVA语言组成01
  9. 《计算机系统:核心概念及软硬件实现(原书第4版)》——3.1 无符号二进制表示...
  10. 【已完美解决】由于找不到MSVCR100.dll,无法继续执行代码。重新安装程序可能会解决此问题。DirectX修复工具下载
  11. Ubuntu修改源镜像方法(22.04也能用)附带常用源镜像地址
  12. pycharm 隐藏或显示文件类型
  13. 《有一种错过叫作遗憾》
  14. 在Ubuntu 22.04 Jammy Jellyfish Linux上流畅安装VMware tools
  15. pgsql 使用技巧
  16. DNS,二级域名泛解析
  17. python的简单使用_用python简单处理图片
  18. 无向图、深度优先搜索(无向图)、广度优先搜索(无向图)、无向图路径查找(基于深度优先搜索)
  19. 二叉排序树的特点以及实现代码
  20. Chained Predictions Using Convolutional Neural Networks

热门文章

  1. 像拍电影一样做软件(译者序)原创
  2. linux服务器配置jdk1.8
  3. mysql show 翻页_mysql show操作
  4. [TaskList] 省选前板子补完计划
  5. LAMP架构mariadb/apache的安装及基本使用
  6. 3D印花芭蕾舞鞋为舞者科学地保护双脚
  7. SpringBoot2.0.3 + SpringSecurity5.0.6 + vue 前后端分离认证授权
  8. (转)用 Maven 部署 war 包到远程 Tomcat 服务器
  9. C Primer Plus 第9章 函数 9.4 多源代码文件程序的编译
  10. Oracle索引简单介绍与示例