本文实例讲述了Java实现的打地鼠小游戏。分享给大家供大家参考,具体如下:

这里涉及到java线程和GUI的相关知识,一个简单的java小游戏打地鼠,有兴趣的朋友可以优化一下。先来看看运行效果:

具体代码:

Mouse.java:

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.Toolkit;

import java.awt.event.KeyEvent;

import java.util.HashMap;

import java.util.Map;

import java.util.Random;

public class Mouse {

private int x, y;

private int tab;

private int data;

Random rd = new Random();

private boolean live = true;

private int mouseTime = 10;

private MouseClient mc;

private static Toolkit tk = Toolkit.getDefaultToolkit();

private static Image[] imgs = null;

private static Map imgKV = new HashMap();

static {

imgs = new Image[] {

tk.getImage(Mouse.class.getClassLoader().getResource(

"images/A.png")),

tk.getImage(Mouse.class.getClassLoader().getResource(

"images/B.png")),

tk.getImage(Mouse.class.getClassLoader().getResource(

"images/C.png")),

tk.getImage(Mouse.class.getClassLoader().getResource(

"images/D.png")),

tk.getImage(Mouse.class.getClassLoader().getResource(

"images/E.png")),

tk.getImage(Mouse.class.getClassLoader().getResource(

"images/F.png")),

tk.getImage(Mouse.class.getClassLoader().getResource(

"images/G.png")),

tk.getImage(Mouse.class.getClassLoader().getResource(

"images/H.png")),

tk.getImage(Mouse.class.getClassLoader().getResource(

"images/I.png")),

tk.getImage(Mouse.class.getClassLoader().getResource(

"images/J.png")),

tk.getImage(Mouse.class.getClassLoader().getResource(

"images/K.png")),

tk.getImage(Mouse.class.getClassLoader().getResource(

"images/L.png")),

tk.getImage(Mouse.class.getClassLoader().getResource(

"images/M.png")),

tk.getImage(Mouse.class.getClassLoader().getResource(

"images/N.png")),

tk.getImage(Mouse.class.getClassLoader().getResource(

"images/O.png")),

tk.getImage(Mouse.class.getClassLoader().getResource(

"images/P.png")),

tk.getImage(Mouse.class.getClassLoader().getResource(

"images/Q.png")),

tk.getImage(Mouse.class.getClassLoader().getResource(

"images/R.png")),

tk.getImage(Mouse.class.getClassLoader().getResource(

"images/S.png")),

tk.getImage(Mouse.class.getClassLoader().getResource(

"images/T.png")),

tk.getImage(Mouse.class.getClassLoader().getResource(

"images/U.png")),

tk.getImage(Mouse.class.getClassLoader().getResource(

"images/V.png")),

tk.getImage(Mouse.class.getClassLoader().getResource(

"images/W.png")),

tk.getImage(Mouse.class.getClassLoader().getResource(

"images/X.png")),

tk.getImage(Mouse.class.getClassLoader().getResource(

"images/Y.png")),

tk.getImage(Mouse.class.getClassLoader().getResource(

"images/Z.png")),

tk.getImage(Mouse.class.getClassLoader().getResource(

"images/0.png")),

tk.getImage(Mouse.class.getClassLoader().getResource(

"images/1.png")),

tk.getImage(Mouse.class.getClassLoader().getResource(

"images/2.png")),

tk.getImage(Mouse.class.getClassLoader().getResource(

"images/3.png")),

tk.getImage(Mouse.class.getClassLoader().getResource(

"images/4.png")),

tk.getImage(Mouse.class.getClassLoader().getResource(

"images/5.png")),

tk.getImage(Mouse.class.getClassLoader().getResource(

"images/6.png")),

tk.getImage(Mouse.class.getClassLoader().getResource(

"images/7.png")),

tk.getImage(Mouse.class.getClassLoader().getResource(

"images/8.png")),

tk.getImage(Mouse.class.getClassLoader().getResource(

"images/9.png"))

};

imgKV.put(imgs[0], "A");

imgKV.put(imgs[1], "B");

imgKV.put(imgs[2], "C");

imgKV.put(imgs[3], "D");

imgKV.put(imgs[4], "E");

imgKV.put(imgs[5], "F");

imgKV.put(imgs[6], "G");

imgKV.put(imgs[7], "H");

imgKV.put(imgs[8], "I");

imgKV.put(imgs[9], "J");

imgKV.put(imgs[10], "K");

imgKV.put(imgs[11], "L");

imgKV.put(imgs[12], "M");

imgKV.put(imgs[13], "N");

imgKV.put(imgs[14], "O");

imgKV.put(imgs[15], "P");

imgKV.put(imgs[16], "Q");

imgKV.put(imgs[17], "R");

imgKV.put(imgs[18], "S");

imgKV.put(imgs[19], "T");

imgKV.put(imgs[20], "U");

imgKV.put(imgs[21], "V");

imgKV.put(imgs[22], "W");

imgKV.put(imgs[23], "X");

imgKV.put(imgs[24], "Y");

imgKV.put(imgs[25], "Z");

imgKV.put(imgs[26], "0");

imgKV.put(imgs[27], "1");

imgKV.put(imgs[28], "2");

imgKV.put(imgs[29], "3");

imgKV.put(imgs[30], "4");

imgKV.put(imgs[31], "5");

imgKV.put(imgs[32], "6");

imgKV.put(imgs[33], "7");

imgKV.put(imgs[34], "8");

imgKV.put(imgs[35], "9");

}

public Mouse(int x, int y, int tab, MouseClient mc) {

this.x = x;

this.y = y;

this.tab = tab;

this.mc = mc;

data = rd.nextInt(36);

new Thread(new MouseTime()).start();

}

public void draw(Graphics g) {

if (!live) {

mc.mouses.remove(this);

mc.tab[tab] = 0;

return;

}

g.drawImage(imgs[data], x, y, null);

Color c = g.getColor();

g.setColor(Color.gray);

g.setFont(new Font(null, 1, 40));

g.drawString("" + mouseTime, x + 50, y + 10);

if (mouseTime <= 0) {

this.live = false;

mc.eclipseTime++;

}

}

public boolean keyReleased(KeyEvent e) {

int key = imgKV.get(imgs[data]).charAt(0);

if (e.getKeyCode() == key) {

System.out.println(key);

mc.mouseCount++;

this.live = false;

return true;

}

return false;

}

private class MouseTime implements Runnable {

public void run() {

while (true) {

mouseTime--;

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

}

MouseClient.java:

import java.awt.Color;

import java.awt.Frame;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import java.util.ArrayList;

import java.util.List;

import java.util.Random;

public class MouseClient extends Frame {

/*

* 整个游戏界面的规格

*/

public static final int GAME_WIDTH = 1000;

public static final int GAME_HEIGHT = 700;

public static int mouseCount;

public static int count;

public static int gameTime;

public static int eclipseTime;

List mouses = new ArrayList();

Random rd = new Random();

public int initMouseCount = 2;// 同时显示的地鼠数

public int[] tab = new int[10];// 标记坑里是否有地鼠

Image offScreenImage = null;

/*

* 本方法显示主窗口

*/

public void launchFrame() {

this.setLocation(200, 10);

this.setSize(GAME_WIDTH, GAME_HEIGHT);

this.setTitle("MouseClient");

this.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});

this.setVisible(true);

this.setBackground(Color.GREEN);

this.setResizable(false);

this.addKeyListener(new KeyMonitor());

new Thread(new PaintThread()).start();

new Thread(new GameTime()).start();

}

private class GameTime implements Runnable {

public void run() {

while (true) {

gameTime++;

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

private class PaintThread implements Runnable {

public void run() {

while (true) {

repaint();

try {

Thread.sleep(10);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

public void update(Graphics g) {

if (offScreenImage == null) {

offScreenImage = this.createImage(GAME_WIDTH, GAME_HEIGHT);

}

Graphics gOffScreen = offScreenImage.getGraphics();

Color c = gOffScreen.getColor();

gOffScreen.setColor(Color.GREEN);

gOffScreen.fillRect(0, 0, GAME_WIDTH, GAME_HEIGHT);

gOffScreen.setColor(c);

paint(gOffScreen);

g.drawImage(offScreenImage, 0, 0, null);

}

public void paint(Graphics g) {

Color c = g.getColor();

g.setColor(Color.gray);

for (int i = 1; i <= 3; i++)

for (int j = 1; j <= 3; j++)

g.fillOval(GAME_WIDTH / 4 * i - 60, GAME_HEIGHT / 4 * j - 25,

120, 50);

g.setColor(c);

g.drawString("击打数:" + count, 20, 40);

g.drawString("击中数:" + mouseCount, 20, 60);

g.drawString("逃跑数:" + eclipseTime + "", 20, 80);

g.drawString("时间:" + gameTime + "s", 20, 100);

if (mouseCount >= 80)

initMouseCount = 8;

else if (mouseCount >= 50)

initMouseCount = 6;

else if (mouseCount >= 20)

initMouseCount = 4;

int temp;

while (mouses.size() < initMouseCount) {

temp = rd.nextInt(9);

while (tab[temp] == 1) {

temp++;

if (temp == 9)

temp = 0;

}

tab[temp] = 1;

mouses.add(new Mouse(GAME_WIDTH / 4 * (temp % 3 + 1) - 70,

GAME_HEIGHT / 4 * (temp / 3 + 1) - 100, temp, this));

}

for (int i = 0; i < mouses.size(); i++) {

Mouse m = mouses.get(i);

m.draw(g);

}

}

public static void main(String[] args) {

MouseClient km = new MouseClient();

km.launchFrame();

}

private class KeyMonitor extends KeyAdapter {

public void keyReleased(KeyEvent e) {

System.out.println(e.getKeyCode());

count++;

for (int i = 0; i < mouses.size(); i++) {

if (mouses.get(i).keyReleased(e))

break;

}

}

}

}

附:完整实例代码点击此处本站下载。

希望本文所述对大家java程序设计有所帮助。

敲地鼠java_Java实现的打地鼠小游戏完整示例【附源码下载】相关推荐

  1. 天天酷跑php源码_Java实现天天酷跑小游戏完整代码(附源码)

    首先,写一个需求文档: 一.项目名称:<天天酷跑>(RunDay) 二.功能介绍: 闯关类游戏,玩家登录后,选择进入游戏,通过键盘控制玩家的上下左右移动,来躲避 障碍物和吃金币,玩家躲避的 ...

  2. 使用SDK快速接入各大平台快游戏 微信小游戏 QQ小游戏使用方法-附源码下载地址

    使用SDK快速接入各平台快游戏 微信小游戏 QQ小游戏 使用方法 引入SDK文件 // 该方式引入可以直接使用qgsdk<script src="qg-sdk.min.1.0.4.js ...

  3. 天天酷跑电脑版代码C语言,Java实现天天酷跑小游戏完整代码(附源码).pdf

    Java实实现现天天天天酷酷跑跑小小游游戏戏完完整整代代码码(附附源源码码) 首首先先,,写写一一个个需需求求文文档档:: 一.项目名称: <天天酷跑> (RunDay ) 二.功能介绍: ...

  4. java 打地鼠 源代码_Java实现的打地鼠小游戏完整示例【附源码下载】

    本文实例讲述了Java实现的打地鼠小游戏.分享给大家供大家参考,具体如下: 这里涉及到java线程和GUI的相关知识,一个简单的java小游戏打地鼠,有兴趣的朋友可以优化一下.先来看看运行效果: 具体 ...

  5. java做小游戏扫雷(附源码)

    下载解压即可玩:扫雷 项目代码下载:java代码 目录 图片 怎么自己也能做 代码细节 感受 全部代码 GameWin.java类 : MapBottom.java类: GameUtil.java类: ...

  6. 前端技术搭建弹珠小游戏(内附源码)

    The sand accumulates to form a pagoda ✨ 写在前面 ✨ 功能介绍 ✨ 页面搭建 ✨ 样式设置 ✨ 逻辑部分 ✨ 写在前面 上周我们实通过前端基础实现了小人逃脱,当 ...

  7. JavaScript实现垃圾分类小游戏教程,附源码!

    JavaScript语言是让网页能够动起来非常重要的一环,今天小千就来给大家分享一个利用JavaScript开发一个垃圾分类小游戏的教程,学完之后别忘记自己动手试一试哦. JavaScript其实主要 ...

  8. JS实现飞机大战小游戏 超详细 附源码和原图

    目录 效果展示 源码 HTML CSS JS 原图 效果展示 HTML+CSS+JS做打飞机小游戏 开始界面 选择你喜欢的飞机开始游戏 按下空格键 开始/暂停  有三种敌机 可以设置飞机生命值,生命值 ...

  9. c语言/c++大作业基于easyx图形库自制RPG类型小游戏代码(附源码)

    目录 一.游戏玩法 二.完整代码 三.部分细节 透明化人物背景 关于easyx库中怎样贴出透明图片 地图的链表实现 移动检测 碰撞检测 总结 前言: 花两天边看easyx文档边学边写的期末小作业. 学 ...

最新文章

  1. Python程序员的“避坑”指南
  2. 201771010126.王燕《面向对象程序设计(Java)》第六周学习总结
  3. 坡道行驶电动小车_事发红绿灯路口!东莞一女子骑电动滑板车被撞致颅内出血…...
  4. SAP科目的行项目显示未勾选补救步骤
  5. css 实现页面加载中等待效果
  6. HDU3255(线段树+扫描线)
  7. dataframe两个表合并_R语言读取多个excel文件后合并:rbind/merge/cmd合并
  8. springMVC两种方式实现多文件上传及效率比较
  9. 洛谷 P1219 八皇后题解
  10. Java-keepalived
  11. 何为量子计算机? | CSDN 博文精选
  12. tomcat ---- 启动,关闭和配置等等
  13. JMS学习(三)JMS 消息结构之属性及消息体详解
  14. SAR成像处理算法_CS算法_原理
  15. 获取docker容器里面的root权限
  16. IOS5短信拦截怎么实现?
  17. 轻松带你上手最好用的操作Excel工具——EasyExcel
  18. 论文复现:<Beyond Static Features for Temporally Consistent 3D Human Pose and Shape from a Video>
  19. pyqt制作自动获取电脑IP地址的软件(含源代码)
  20. 女工程师独家揭秘:双11秘密武器阿里云数据库团队故事

热门文章

  1. 网站维护页面_营销型企业网站有哪些功能?
  2. 央视记者王冰冰为何走红?博导和研究生写了一篇论文进行了分析
  3. 搜索引擎技术之网络爬虫
  4. 中国科学院大学庆生 一颗小行星以“国科大”命名
  5. 简单计算机面试题库及答案_试讲可以看教案吗?必看的面试考前问题解答
  6. zookeeper结构和命令详解
  7. node.js util全局变量和事件驱动events
  8. Gvim开发环境配置笔记--Windows篇
  9. “CV_RGB2BGR”: 未声明的标识符
  10. Python-OpenCV设置摄像头分辨率