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 ...
随机推荐
- Ubuntu Server如何配置SFTP
SH File Transfer Protocol是一个比普通FTP更为安全的文件传输协议.(参考资料:http://en.wikipedia.org/wiki/SSH_File_Transfer_P ...
- SAR命令
前面已经介绍了 vmstat和top命令的解析及使用,下面我们来学习一个更重要的命令sarsar命令可以通过参数单独查看系统某个局部的使用情况 sar 命令行的常用格式: sar [options] ...
- make[1]: *** [pcrecpp.lo] 错误 1
在安装:pcre-8.30 时,报如下错误: [root@localhost pcre-8.30]# make && make installmake all-ammake[1]: ...
- 30天轻松学习javaweb_打包web项目成war
jar -cvf news.war news 打包成 war 包后复制到webapps下,Tomcat将会解压.
- JSON.stringify()的使用--将string转换成json
===========================================================1. ====JSON.stringify()================== ...
- oracle中的exists 和not exists 用法详解
有两个简单例子,以说明 “exists”和“in”的效率问题 1) select * from T1 where exists(select 1 from T2 where T1.a=T2.a) ; ...
- EDE,DEDE网站搬家,DEDECMS搬家教程,一看就会
无聊做个小教程:DEDE搬家,本人提供搬家 先来说下DEDE 大家会安装吧,不多说,看图 一.进入织梦DedeCms的后台备份数据库 步骤:系统 –> 数据库备份/还原 -> 全选有所织梦 ...
- java异常处理机制throws
throws可以在方法声明时抛出的异常.原则上throws声明的异常,一定要在该方法中抛出,否则没有意义. 相反的,若方法中我们主动通过throw抛出一个异常,应该在throws中声明该种类异常,通知 ...
- centos 下安装.net core
先要安装libunwind, libunwind库为基于64位CPU和操作系统的程序提供了基本的堆栈辗转开解功能,32位操作系统不要安装.其中包括用于输出堆栈跟踪的API.用于以编程方式辗转开解堆栈的 ...
- telnet登录路由器启动服务的shell脚本
因为在测试中经常要telnet登录到路由器中去配置环境启动路由器,每次都输入一遍命令太麻烦了,想着写一个shell脚本实现自动登录.配置环境.启动服务的过程. 脚本实现是使用expect来实现的,所以 ...