Java Swing打猎射击游戏源码
代码如下
<font size="3">package Game; import java.awt.Graphics;
import java.awt.Image;
import javax.swing.JPanel; public class BackgroundPanel extends JPanel {
private static final long serialVersionUID = 1L;
private Image image;// 背景图片 public BackgroundPanel() {
setOpaque(false);
setLayout(null);
} public void setImage(Image image) {
this.image = image;
} /**
* 画出背景
*/
protected void paintComponent(Graphics g) {
if (image != null) {
// 图片宽度
int width = getWidth();
// 图片高度
int height = getHeight();
// 画出图片
g.drawImage(image, 0, 0, width, height, this);
}
super.paintComponent(g);
}
}
</font>
<font size="3">package Game; import java.awt.Container;
import java.awt.event.*;
import javax.swing.*; public class BirdLabel extends JLabel implements Runnable {
private static final long serialVersionUID = 1L;
// 随机生成线程的休眠时间,即控制小鸟移动速度
private int sleepTime = (int) (Math.random() * 300) + 5;
private int y = 100;
private Thread thread;// 将线程作为成员变量
private Container parent;
private int score = 15;// 该类角色对应的分数 /**
* 构造方法
*/
public BirdLabel() {
super();
// 创建小鸟图标对象
ImageIcon icon = new ImageIcon(getClass().getResource("bird.gif"));
setIcon(icon);// 设置控件图标
addMouseListener(new MouseAction());// 添加鼠标事件监听器
// 添加控件事件监听器
addComponentListener(new ComponentAction());
thread = new Thread(this);// 创建线程对象
} /**
* 控件的控件事件监听器
*/
private final class ComponentAction extends ComponentAdapter {
public void componentResized(final ComponentEvent e) {
thread.start();// 线程启动
}
} /**
* 控件的鼠标事件监听器
*/
private final class MouseAction extends MouseAdapter {
public void mousePressed(final MouseEvent e) {
if (!MainFrame.readyAmmo())// 如果子弹没有准备好
return;// 什么也不做
MainFrame.useAmmo();// 消耗子弹
appScore();// 加分
destory();// 销毁本组件
}
} public void run() {
parent = null;
int width = 0;
try {
while (width <= 0 || parent == null) {
if (parent == null) {
parent = getParent();// 获取父容器
} else {
width = parent.getWidth();// 获取父容器的宽度
}
Thread.sleep(10);
}
for (int i = width; i > 0 && parent != null; i -= 8) {
setLocation(i, y);// 从右向左移动本组件位置
Thread.sleep(sleepTime);// 休眠片刻
}
} catch (InterruptedException e) {
e.printStackTrace();
}
if (parent != null) {
MainFrame.appScore(-score * 10); // 自然销毁将扣分
}
destory();// 移动完毕,销毁本组件
} /**
* 从容器移除本组件的方法
*/
public void destory() {
if (parent == null)
return;
parent.remove(this);// 从父容器中移除本逐渐
parent.repaint();
parent = null; // 通过该语句终止线程循环
} /**
* 加分的方法
*/
private void appScore() {
System.out.println("小鸟被击中");
MainFrame.appScore(15);
}
}
</font>
详细说明:http://java.662p.com/thread-3575-1-1.html
Java Swing打猎射击游戏源码的更多相关文章
- Java写的斗地主游戏源码
源码下载在最后 我们的前年的课设要求做一个斗地主程序,当时正在愁如何做界面,当时刚好在学习C#,于是就用C#完成了这个程序.一方面,当时我C#功底还很差(其实现在也不怎么样),很多地方用了“笨办法”, ...
- Java版的扫雷游戏源码
package com.xz.sl; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; i ...
- 射击的乐趣:WIN32诠释打飞机游戏源码补充
打飞机游戏源码补充 从指定位置加载bmp并显示到对话框. , TRUE);, , LR_LOADFROMFILE); { BITMAP bmpinfo; ...
- HTML5小游戏源码收藏
html5魅族创意的贪食蛇游戏源码下载 html5网页版打砖块小游戏源码下载 html5 3D立体魔方小游戏源码下载 html5网页版飞机躲避游戏源码下载 html5三国人物连连看游戏源码下载 js ...
- 3D坦克大战游戏源码
3D坦克大战游戏源码,该游戏是基于xcode 4.3,ios sdk 5.1开发.在xcode4.3.3上完美无报错.兼容ios4.3-ios6.0 ,一款ios平台上难得的3D坦克大战游戏源码,有2 ...
- iOS版打地鼠游戏源码
打地鼠游戏源码,游戏是一款多关卡基于cocos2d的iPad打地鼠游戏源码,这也是一款高质量的打地鼠游戏源码,可以拥有逐步上升的关卡的设置,大家可以在关卡时设置一些商业化的模式来盈利的,非常完美的一款 ...
- html5 canvas简易版捕鱼达人游戏源码
插件描述:html5利用canvas写的一个js版本的捕鱼,有积分统计,鱼可以全方位移动,炮会跟着鼠标移动,第一次打开需要鼠标移出背景图,再移入的时候就可以控制炮的转动,因为是用的mouseover触 ...
- ios跑酷游戏源码完整版
今天在网上看到了一个很流行的ios游戏源码,酷跑游戏源码,个人下载感觉非常不错,运行起来非常不错的,大家可以研究一下吧,由于源码文件较大,没有上传,请大家见谅. 由于文件较大,没有上传了,大家可以到这 ...
- ios源码-ios游戏源码-ios源码下载
游戏源码 一款休闲类的音乐小游戏源码 该源码实现了一款休闲类的音乐小游戏源码,该游戏的源码很简单,而且游戏的玩法也很容易学会,只要我们点击视图中的grid,就可以 人气:2943运行环境:/Xco ...
随机推荐
- JAVA变量的类型,定义变量
JAVA中常用的数据类型 数据类型 数据类型解释 说明 char 字符型 用于存储单个字符,如:性别“男”.“女”,电灯“开”.“关” int 整形 用于存储整数,如一天的时间是24小时,一月份是31 ...
- web性能 部分
雅虎34条提高性能的经验 http://www.cnblogs.com/li0803/archive/2009/09/20/1570581.html 减少http请求 1.尽量合并多个css.js文件 ...
- java多线程之生存者与消费者(Java编程思想)
1.通过wait() 与 Notify实现 package Produce; import java.util.concurrent.ExecutorService; import java.util ...
- vi命令的使用
<转:http://linux.vbird.org/linux_basic/0310vi.php> 基本上 vi 共分为三种模式,分别是『一般模式』.『编辑模式』与『指令列命令模式』. 圖 ...
- Spring读取配置文件
在spring中可以通过下面的方式将配置文件中的项注入到配置中 <bean class="org.springframework.beans.factory.config.Proper ...
- web性能测试的新利器 - Gatling 介绍
转载:http://www.51testing.com/html/10/26810-852956.html 最近发现了一个新的性能测试工具Gatling,貌似比Jmeter还好玩.这几天就先简单介绍一 ...
- console,和自己定义事件
console.log这个指令是在浏览器控制台输出日志,用来调试程序 跟alert 类似 但不像alert那样会打断程序.
- Net文章汇总帖
DevExpress:Data Grid ExamplesHow to: Initialize Cells in Newly Created RowsHow to: Set a Cell Value ...
- 内存数据库(sqlite)和 map数据结构 做缓存对比
背景: 今天看文档时发现说android的SQLITE在创建时,如果不指定name,则会创建in-memory的数据库.且当该db被close时,才会释放. 那这样来说,完全可以用来做内存缓存嘛. 用 ...
- JDK错误
WARN org.mortbay.log: Failed to read file: /usr/lib/jvm/jdk1.8.0_66/jre/lib/ext/._cldrdata.jar 删除._c ...