打地鼠 java

//简单的图片处理技术

所有图片连接: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) {
	}

}
时间: 2024-07-30 13:06:41

打地鼠 java的相关文章

一个基于Myeclipse开发的Java打地鼠小游戏(Appletcation)

1 package javaes.zixue.wangshang.daima; 2 3 import java.awt.Cursor; 4 import java.awt.Image; 5 import java.awt.Point; 6 import java.awt.Toolkit; 7 import java.awt.event.ActionEvent; 8 import java.awt.event.ActionListener; 9 import java.awt.event.Mous

java打地鼠游戏

学习java中的图片处理 import java.awt.Cursor; 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

HDOJ4540 威威猫系列故事——打地鼠 【DP】

威威猫系列故事--打地鼠 Time Limit: 300/100 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 1445    Accepted Submission(s): 713 Problem Description 威威猫最近不务正业,每天沉迷于游戏"打地鼠". 每当朋友们劝他别太着迷游戏,应该好好工作的时候,他总是说,我是威威猫,猫打老鼠就是我的工作! 无话

HDU 4540 威威猫系列故事——打地鼠 (DP)

威威猫系列故事——打地鼠 Time Limit: 300/100 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 1642    Accepted Submission(s): 807 Problem Description 威威猫最近不务正业,每天沉迷于游戏“打地鼠”. 每当朋友们劝他别太着迷游戏,应该好好工作的时候,他总是说,我是威威猫,猫打老鼠就是我的工作! 无话可说...

java小游戏代码

一. 需求分析 曾几何时,游戏是海洛因的代名词,让人与玩物丧志联系在一起,一度遭到社会反感和家长抵制.但是,随着互联网的发展,和游戏潜在好处被发现,游戏的价值开始逐渐被社会认可,人们开始接受.认识和了解游戏带来的诸多好处. 现在学生的课业负担重,娱乐时间少,人际交往少,烦恼和压力也因此相应增加.其实玩游戏不仅帮助学生调节情绪,还可以锻炼与提高他们的反应能力和手脑的快速配合能力,同时帮助他们了解电脑和网络知识等,可谓是一举多得.据调查显示,经常玩游戏的学生思维活跃.善于表达.情绪乐观,解决问题时会

JAVA上百实例源码以及开源项目

简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级.中级.高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情.执着,对IT的憧憬.向往!此时此景,笔者只专注Android.Iphone等移动平台开发,看着这些源码心中有万分感慨,写此文章纪念那时那景! Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能.编辑音乐软件的朋友,这款实例会对你有所帮助.Calendar万年历 1个目标文件EJ

Spring学习(一)--简化Java开发,认识Spring

一.传统Java开发弊端 在传统的开发之中,任何一个有实际意义的应用都会由两个或更多的类所组成,这些类之间相互协调来完成特定的业务逻辑,按照传统的做法,每个对象负责管理与自己相互协作的对象(即他所依赖的对象)的引用,这将会导致高耦合度和难以测试的代码.--给出一个示例代码:分派一个拯救公主的骑士去完成拯救公主的任务: 1 package knights; 2 3 /** 4 * @author : S K Y 5 * @version :0.0.1 6 */ 7 public class Res

Java多线程学习(吐血超详细总结)

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 目录(?)[-] 一扩展javalangThread类 二实现javalangRunnable接口 三Thread和Runnable的区别 四线程状态转换 五线程调度 六常用函数说明 使用方式 为什么要用join方法 七常见线程名词解释 八线程同步 九线程数据传递 本文主要讲了java中多线程的使用方法.线程同步.线程数据传递.线程状态及相应的一些线程函数用法.概述等. 首先讲一下进程和线程

Java TM 已被阻止,因为它已过时需要更新的解决方法

公司的堡垒机需要通过浏览器登陆,且该堡垒机的网站需要Java的支持,最近通过浏览器登陆之后总是提示"java TM 已被阻止,因为它已过时需要更新的解决方法"导致登陆之后不能操作, 但是操作系统中确实已经安装了比较新的JDK,安装的JDK版本是jdk-7u67-windows-i586,因为太烦人,所以决定搞清楚报错的原因,一劳永逸,彻底解决这个问题 准备工作:安装JDK,安装版本jdk-7u67-windows-i586.exe,因为机器的Eclipse还依赖64位的JDK,所以另安