打地鼠java源代码 图片_打地鼠 java

0818b9ca8b590ca3270a3433284dd417.png

//简单的图片处理技术

所有图片连接:http://yunpan.cn/cQyWXfIhIUDqX (提取码:2db4)

import java.awt.Cursor;

import java.awt.Font;

import java.awt.Image;

import java.awt.Point;

import java.awt.Toolkit;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import java.util.Random;

import javax.swing.ImageIcon;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.Timer;

public class moleAttack extends JFrame implements ActionListener, MouseListener {

private String strDir = "./image/moleAttackImage/"; // 图片所在的路径

JLabel jlbMole, HitNumber, appearNumber, gradeNumber;// 图片标签

Timer timer; // 定时器

Random random; // 随机数

int delay = 1000;

int hit = 0, apper = 0, grade = 0; // 分别是打中次数、出现次数、等级

public moleAttack() {

this.setTitle("打地鼠");

setBack(); // 设置背景

setGrade(); // 设置打中次数、出现次数、等级

this.getContentPane().setLayout(null); // 因为要把图片放在自己定的位置,所以布局得取消掉

// 设置光标

Toolkit tk = Toolkit.getDefaultToolkit();

Image image = tk.createImage(strDir + "hammer.png");

Cursor myCursor = tk.createCustomCursor(image, new Point(10, 10), "xh");

this.setCursor(myCursor);

// 设置出现的地鼠

ImageIcon imageMole = new ImageIcon(strDir + "mole.png");

jlbMole = new JLabel(imageMole);

jlbMole.setSize(80, 80);

this.getContentPane().add(jlbMole);

jlbMole.setVisible(false);

this.getContentPane().addMouseListener(this);//对面板进行监听

jlbMole.addMouseListener(this);// 监听地鼠是否被打到

// 定时器

timer = new Timer(delay, this);

timer.start();

random = new Random();

this.setLocation(200, 200);

this.setSize(438, 375);

this.setResizable(false);

this.setVisible(true);

}

// 设置背景

private void setBack() {

((JPanel) (this.getContentPane())).setOpaque(false);// 使getContentPane()透明

ImageIcon bgImage = new ImageIcon(strDir + "backGround.jpg");

JLabel bgLabel = new JLabel(bgImage);

bgLabel.setBounds(0, 0, bgImage.getIconWidth(), bgImage.getIconHeight());

this.getLayeredPane().add(bgLabel, new Integer(Integer.MIN_VALUE));// 这里需要把背景图片的优先级调到最低,才能使别的图片在其上面显示

}

// 设置打中次数、出现次数、等级

private void setGrade() {

// 设置出现次数

ImageIcon imageNumber = new ImageIcon(strDir + "chuxiancishu.png");

JLabel Number = new JLabel(imageNumber);

Number.setSize(200, 50);

Number.setLocation(-30, 10);

this.getContentPane().add(Number);

// 显示数据

appearNumber = new JLabel();

appearNumber.setText("" + apper);

appearNumber.setLocation(122, 10);

appearNumber.setFont(new Font("宋体", Font.BOLD, 19));

appearNumber.setSize(50, 50);

this.getContentPane().add(appearNumber);

// 设置击中次数

ImageIcon imageHitTime = new ImageIcon(strDir + "dazhongcishu.png");

JLabel HitTime = new JLabel(imageHitTime);

HitTime.setSize(200, 50);

HitTime.setLocation(105, 10);

this.getContentPane().add(HitTime);

// 显示数据

HitNumber = new JLabel();

HitNumber.setText("" + hit);

HitNumber.setLocation(260, 10);

HitNumber.setFont(new Font("宋体", Font.BOLD, 19));

HitNumber.setSize(50, 50);

this.getContentPane().add(HitNumber);

// 实置当前等级

ImageIcon imageGrade = new ImageIcon(strDir + "dangqiandengji.png");

JLabel Grade = new JLabel(imageGrade);

Grade.setSize(200, 50);

Grade.setLocation(245, 10);

this.getContentPane().add(Grade);

// 显示数据

gradeNumber = new JLabel();

gradeNumber.setText("" + grade);

gradeNumber.setLocation(402, 10);

gradeNumber.setFont(new Font("宋体", Font.BOLD, 19));

gradeNumber.setSize(50, 50);

this.getContentPane().add(gradeNumber);

}

public static void main(String[] args) {

new moleAttack();

}

@Override

public void actionPerformed(ActionEvent e) {

appearNumber.setText("" + (++apper));//每出现一次地鼠,出现次数加一

//每出现十次地鼠,等级加一(出现频率变快)

if (apper % 10 == 0) {

gradeNumber.setText("" + (++grade));

timer.setDelay((int) (delay * 0.9));

}

//防止大众后不变会原来的样子

ImageIcon imagetIconHit = new ImageIcon(strDir + "mole.png");

jlbMole.setIcon(imagetIconHit);

jlbMole.setVisible(true);

//随机出现地鼠的位置

int r = random.nextInt(9);

switch (r + 1) {

case 1:

jlbMole.setLocation(54, 63);

break;

case 2:

jlbMole.setLocation(320, 204);

break;

case 3:

jlbMole.setLocation(180, 204);

break;

case 4:

jlbMole.setLocation(45, 203);

break;

case 5:

jlbMole.setLocation(295, 133);

break;

case 6:

jlbMole.setLocation(160, 133);

break;

case 7:

jlbMole.setLocation(20, 133);

break;

case 8:

jlbMole.setLocation(310, 63);

break;

case 9:

jlbMole.setLocation(183, 63);

break;

}

jlbMole.setVisible(true);

}

@Override

public void mouseClicked(MouseEvent e) {

}

@Override

public void mousePressed(MouseEvent e) {

//光标点击地鼠后变成打击的样子

Toolkit tk = Toolkit.getDefaultToolkit();

Image image = tk.createImage(strDir + "hit.png");

Cursor myCursor = tk

.createCustomCursor(image, new Point(10, 10), "yyy");

this.setCursor(myCursor);

//判断是否击中

if (e.getSource() == jlbMole) {

//改变地鼠的样子

ImageIcon imagetIconHit = new ImageIcon(strDir + "touch.png");

jlbMole.setIcon(imagetIconHit);

jlbMole.setVisible(true);

HitNumber.setText("" + (++hit));//击中后击中次数加一

}

}

@Override

public void mouseReleased(MouseEvent e) {

//光标松开后,回复原来的样子

Toolkit tk = Toolkit.getDefaultToolkit();

Image image = tk.createImage(strDir + "hammer.png");

Cursor myCursor = tk

.createCustomCursor(image, new Point(10, 10), "yyy");

this.setCursor(myCursor);

}

@Override

public void mouseEntered(MouseEvent e) {

}

@Override

public void mouseExited(MouseEvent e) {

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值