敲地鼠java_Java实现的打地鼠小游戏完整示例【附源码下载】
本文实例讲述了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实现的打地鼠小游戏完整示例【附源码下载】相关推荐
- 天天酷跑php源码_Java实现天天酷跑小游戏完整代码(附源码)
首先,写一个需求文档: 一.项目名称:<天天酷跑>(RunDay) 二.功能介绍: 闯关类游戏,玩家登录后,选择进入游戏,通过键盘控制玩家的上下左右移动,来躲避 障碍物和吃金币,玩家躲避的 ...
- 使用SDK快速接入各大平台快游戏 微信小游戏 QQ小游戏使用方法-附源码下载地址
使用SDK快速接入各平台快游戏 微信小游戏 QQ小游戏 使用方法 引入SDK文件 // 该方式引入可以直接使用qgsdk<script src="qg-sdk.min.1.0.4.js ...
- 天天酷跑电脑版代码C语言,Java实现天天酷跑小游戏完整代码(附源码).pdf
Java实实现现天天天天酷酷跑跑小小游游戏戏完完整整代代码码(附附源源码码) 首首先先,,写写一一个个需需求求文文档档:: 一.项目名称: <天天酷跑> (RunDay ) 二.功能介绍: ...
- java 打地鼠 源代码_Java实现的打地鼠小游戏完整示例【附源码下载】
本文实例讲述了Java实现的打地鼠小游戏.分享给大家供大家参考,具体如下: 这里涉及到java线程和GUI的相关知识,一个简单的java小游戏打地鼠,有兴趣的朋友可以优化一下.先来看看运行效果: 具体 ...
- java做小游戏扫雷(附源码)
下载解压即可玩:扫雷 项目代码下载:java代码 目录 图片 怎么自己也能做 代码细节 感受 全部代码 GameWin.java类 : MapBottom.java类: GameUtil.java类: ...
- 前端技术搭建弹珠小游戏(内附源码)
The sand accumulates to form a pagoda ✨ 写在前面 ✨ 功能介绍 ✨ 页面搭建 ✨ 样式设置 ✨ 逻辑部分 ✨ 写在前面 上周我们实通过前端基础实现了小人逃脱,当 ...
- JavaScript实现垃圾分类小游戏教程,附源码!
JavaScript语言是让网页能够动起来非常重要的一环,今天小千就来给大家分享一个利用JavaScript开发一个垃圾分类小游戏的教程,学完之后别忘记自己动手试一试哦. JavaScript其实主要 ...
- JS实现飞机大战小游戏 超详细 附源码和原图
目录 效果展示 源码 HTML CSS JS 原图 效果展示 HTML+CSS+JS做打飞机小游戏 开始界面 选择你喜欢的飞机开始游戏 按下空格键 开始/暂停 有三种敌机 可以设置飞机生命值,生命值 ...
- c语言/c++大作业基于easyx图形库自制RPG类型小游戏代码(附源码)
目录 一.游戏玩法 二.完整代码 三.部分细节 透明化人物背景 关于easyx库中怎样贴出透明图片 地图的链表实现 移动检测 碰撞检测 总结 前言: 花两天边看easyx文档边学边写的期末小作业. 学 ...
最新文章
- Python程序员的“避坑”指南
- 201771010126.王燕《面向对象程序设计(Java)》第六周学习总结
- 坡道行驶电动小车_事发红绿灯路口!东莞一女子骑电动滑板车被撞致颅内出血…...
- SAP科目的行项目显示未勾选补救步骤
- css 实现页面加载中等待效果
- HDU3255(线段树+扫描线)
- dataframe两个表合并_R语言读取多个excel文件后合并:rbind/merge/cmd合并
- springMVC两种方式实现多文件上传及效率比较
- 洛谷 P1219 八皇后题解
- Java-keepalived
- 何为量子计算机? | CSDN 博文精选
- tomcat ---- 启动,关闭和配置等等
- JMS学习(三)JMS 消息结构之属性及消息体详解
- SAR成像处理算法_CS算法_原理
- 获取docker容器里面的root权限
- IOS5短信拦截怎么实现?
- 轻松带你上手最好用的操作Excel工具——EasyExcel
- 论文复现:<Beyond Static Features for Temporally Consistent 3D Human Pose and Shape from a Video>
- pyqt制作自动获取电脑IP地址的软件(含源代码)
- 女工程师独家揭秘:双11秘密武器阿里云数据库团队故事
热门文章
- 网站维护页面_营销型企业网站有哪些功能?
- 央视记者王冰冰为何走红?博导和研究生写了一篇论文进行了分析
- 搜索引擎技术之网络爬虫
- 中国科学院大学庆生 一颗小行星以“国科大”命名
- 简单计算机面试题库及答案_试讲可以看教案吗?必看的面试考前问题解答
- zookeeper结构和命令详解
- node.js util全局变量和事件驱动events
- Gvim开发环境配置笔记--Windows篇
- “CV_RGB2BGR”: 未声明的标识符
- Python-OpenCV设置摄像头分辨率