java小游戏飞机大战,java飞机大战小游戏
package cn.sxt.game;
import java.awt.*;
import java.awt.event.*;
import java.util.Date;
import javax.swing.JFrame;
import javax.xml.crypto.Data;
public class MyGameFrame extends JFrame {
//导入图片
Image planeImg = GameUtil.getImage("images/plane.png");
Image bj = GameUtil.getImage("images/bg.jpg");
Plane plane = new Plane(planeImg,250,250);
//生成炮弹
Shell[] shells = new Shell[20];
//爆炸对象
Explode bao;
//起始时间对象
Date startTime = new Date();
Date endTime;
//计算时间
int period;
public void paint(Graphics g) {
//保存当前颜色
Color c = g.getColor();
g.drawImage(bj, 0, 0, null);
//飞机移动
plane.drawSelf(g);
//数组循环生成炮弹
for(int i=0;i
shells[i].draw(g);
boolean peng = shells[i].getRect().intersects(plane.getRect());
//判断是否发生碰撞
if(peng) {
//飞机状态变为爆炸
plane.live=false;
if(bao==null) {
//生成爆炸对象
bao = new Explode(plane.x, plane.y);
//记录结束时间
endTime = new Date();
//计算时长
period=(int)((endTime.getTime()-startTime.getTime())/1000);
}
//爆炸画面
bao.draw(g);
}
//判断飞机是否爆炸
if(!plane.live) {
g.setColor(Color.yellow);
//改变字体大小
Font f=new Font("宋体", Font.BOLD, 30);
g.setFont(f);
g.drawString("游戏时间:"+period+"秒", 200,300);
}
}
g.setColor(c);
}
//窗口重画
class PaintThread extends Thread{
@Override
public void run() {
while(true) {
repaint();
try {
Thread.sleep(40);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
//键盘监听
class KeyMonitor extends KeyAdapter{
@Override
public void keyPressed(KeyEvent e) {
plane.addDirection(e);
}
@Override
public void keyReleased(KeyEvent e) {
plane.minusDirection(e);
}
}
public void launchFrame() {
this.setTitle("飞机大战");
//窗口设置为可见
this.setVisible(true);
this.setSize(Constant.GAME_WIDTH,Constant.GAME_HEIGHT);
this.setLocation(300,300);
this.addWindowListener(new WindowListener() {
@Override
public void windowOpened(WindowEvent arg0) {
}
@Override
public void windowIconified(WindowEvent arg0) {
}
@Override
public void windowDeiconified(WindowEvent arg0) {
}
@Override
public void windowDeactivated(WindowEvent arg0) {
}
@Override
public void windowClosing(WindowEvent arg0) {
System.exit(0);
}
@Override
public void windowClosed(WindowEvent arg0) {
}
@Override
public void windowActivated(WindowEvent arg0) {
}
});
new PaintThread().start();
addKeyListener(new KeyMonitor());
for(int i=0;i
shells[i]=new Shell();
}
}
public static void main(String[] args) {
MyGameFrame f = new MyGameFrame();
f.launchFrame();
}
//双缓冲稳定画面闪烁
private Image offScreenImage=null;
public void update(Graphics g) {
if(offScreenImage==null)
offScreenImage = this.createImage(500,500);
Graphics gOff = offScreenImage.getGraphics();
paint(gOff);
g.drawImage(offScreenImage, 0, 0, null);
}
}
package cn.sxt.game;
public class Constant {
public static final int GAME_WIDTH=570;
public static final int GAME_HEIGHT=600;
}
package cn.sxt.game;
import java.awt.Graphics;
import java.awt.Image;
public class Explode {
double x,y;
static Image[]imgs=new Image[16];
static {
for(int i=0;i<16;i++) {
imgs[i]= GameUtil.getImage("images/explode/e"+(i+1)+".gif");
imgs[i].getWidth(null);
}
}
int count;
public void draw(Graphics g) {
if(count<=15) {
g.drawImage(imgs[count], (int)x,(int) y, null);
count++;
}
}
public Explode(double x,double y) {
this.x=x;
this.y=y;
}
}
package cn.sxt.game;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;
public class GameObject {
Image img;
double x,y;
int speed;
int width,height;
public void drawSelf(Graphics g) {
g.drawImage(img, (int)x, (int)y, null);
}
public GameObject(Image img, double x, double y, int speed, int width, int height) {
super();
this.img = img;
this.x = x;
this.y = y;
this.speed = speed;
this.width = width;
this.height = height;
}
public GameObject(Image img, double x, double y) {
super();
this.img = img;
this.x = x;
this.y = y;
}
public GameObject() {
}
public Rectangle getRect() {
return new Rectangle((int)x,(int)y,width,height);
}
}
package cn.sxt.game;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
public class GameUtil {
private GameUtil() {
}
public static Image getImage(String path) {
BufferedImage bi = null;
try {
URL u = GameUtil.class.getClassLoader().getResource(path);
bi = ImageIO.read(u);
}catch(IOException e) {
e.printStackTrace();
}
return bi;
}
}
package cn.sxt.game;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyEvent;
public class Plane extends GameObject{
boolean left,up,right,down,fire;
boolean live = true;
public void drawSelf(Graphics g) {
if(live) {
g.drawImage(img, (int)x, (int)y, null);
if(left) {
x-=speed;
}
if(right) {
x+=speed;
}
if(up) {
y-=speed;
}
if(down) {
y+=speed;
}
}
}
public Plane(Image img,double x,double y) {
this.img=img;
this.x=x;
this.y=y;
this.speed=10;
this.width=img.getWidth(null);
this.height=img.getHeight(null);
}
public void addDirection(KeyEvent e) {
switch(e.getKeyCode()) {
case KeyEvent.VK_LEFT:
left = true;
break;
case KeyEvent.VK_UP:
up = true;
break;
case KeyEvent.VK_RIGHT:
right = true;
break;
case KeyEvent.VK_DOWN:
down = true;
break;
case KeyEvent.VK_W:
fire = true;
break;
}
}
public void minusDirection(KeyEvent e) {
switch(e.getKeyCode()) {
case KeyEvent.VK_LEFT:
left = false;
break;
case KeyEvent.VK_UP:
up = false;
break;
case KeyEvent.VK_RIGHT:
right = false;
break;
case KeyEvent.VK_DOWN:
down = false;
break;
}
}
private void drawfire(Graphics g) {
if(fire) {
Color c = g.getColor();
g.setColor(Color.red);
for(int i=(int)y;i
g.fillOval((int)x, (int)y, width, height);
}
g.getColor();
}
}
}
package cn.sxt.game;
import java.awt.Color;
import java.awt.Graphics;
//炮弹类
public class Shell extends GameObject{
double degree;
public Shell() {
x=200;
y=200;
width=10;
height=10;
speed=3;
degree = Math.random()*Math.PI*2;
}
public void draw(Graphics g) {
Color c = g.getColor();
g.setColor(Color.YELLOW);
g.fillOval((int)x, (int)y, width, height);
x+=speed*Math.cos(degree);
y+=speed*Math.sin(degree);
if(x<0||x>Constant.GAME_WIDTH-width) {
degree=Math.PI-degree;
}
if(y<30||y>Constant.GAME_HEIGHT-height) {
degree=-degree;
}
g.getColor();
}
}
标签:java,img,int,awt,大战,小游戏,import,public
来源: https://blog.csdn.net/weixin_45675353/article/details/106615531
java小游戏飞机大战,java飞机大战小游戏相关推荐
- 基于Java语言在窗体上实现飞机大战小游戏
全套资料下载地址:https://download.csdn.net/download/sheziqiong/85594271 项目介绍 飞机大战:用 Java 语言在窗体上实现飞机大战小游戏,运行程 ...
- 飞机大战——Java小游戏
飞机大战 文章目录 飞机大战 游戏需求 代码实现 子弹类 英雄机类 小敌机类 大敌机类 小蜜蜂类 飞行物类 接口类 爆炸类 游戏窗口类 游戏需求 所参与角色:英雄机.子弹.小敌机.大敌机.小蜜蜂.天空 ...
- proj Java_proj 一个炫酷的飞机大战java游戏,很好玩的,很酷炫 用了 的图形界面 Games 256万源代码下载- www.pudn.com...
文件名称: proj下载 收藏√ [ 5 4 3 2 1 ] 所属分类: Games 开发工具: Java 文件大小: 3435 KB 上传时间: 2016-05-11 下载次数: 0 提 ...
- 怎么用java做全民飞机大战_Java飞机大战游戏设计与实现
1 概述 本次Java课程设计是做一个飞机大战的游戏,应用Swing编程,完成一个界面简洁流畅.游戏方式简单,玩起来易于上手的桌面游戏.该飞机大战项目运用的主要技术即是Swing编程中的一些窗口类库. ...
- 飞机大战java代码_[源码和文档分享]Java飞机大战游戏设计与实现
1 概述 1.1 项目简介 本次Java课程设计是做一个飞机大战的游戏,应用Swing编程,完成一个界面简洁流畅.游戏方式简单,玩起来易于上手的桌面游戏.该飞机大战项目运用的主要技术即是Swing编程 ...
- Java移除出界敌机,java实现飞机大战案例详解
前言 飞机大战是一个非常经典的案例,因为它包含了多种新手需要掌握的概念,是一个非常契合面向对象思想的入门练习案例 程序分析: 在此游戏中共有六个对象: 小敌机Airplane,大敌机BigAirpla ...
- JAVA课程设计—飞机大战和道路狂飙小游戏(可连接数据库实现用户信息查询、刷新)
文章目录 一.系统需求.主要功能称述 1.系统需求 2.主要功能 二.系统体系结构.设计方案(类图) 1.系统体系结构 2. 设计方案(类图) 三.系统实现技术.编码说明 1.系统实现技术 四. 设计 ...
- 飞机大战Java源代码
很快,大二这个学期就要完结了,所学的大部分课程都快要结束了,Java课程也是如此.而Java这门课程也有一个惯例就是要做一个课程设计,老师给了我们三个选择,分别是飞机大战.推箱子和学生成绩管理系统.在 ...
- 飞机大战--java
菜鸟日记-2月10日 案例 : 飞机大战 要求: 玩家可控制飞机躲避炮弹,界面显示玩家游玩时间 效果: 1.游戏物体根类 (飞机,炮弹等类都继承于此类) import java.awt.*;/* * ...
- Java第十一课——多线程实现飞机大战
Java第十一课--多线程实现飞机大战 一.补充讲解一下线程 在第九课的基础上补充两点: 1.启动线程使用start()方法而不直接使用rin()方法,因为线程是一直重复执行的,调用run方法只会执行 ...
最新文章
- 【事故反演】事故反演问题排查
- Python函数参数值传递
- 2022年中国即时配送行业趋势研究报告
- QEMU虚拟化加速方案 - KVM
- 周期串plus 水题
- [概率][lca][dfs][树形dp] Jzoj P4225 宝藏
- python全栈开发_day25_面向对象的接口,多态,鸭子类型,抽象父类,析构格式化,反射和断言...
- 【字体分享】设计师常用的日系中文字体
- chrome插件商店(Chrome插件商店)
- WAPI安全协议检测系统测试分析
- PAT乙级刷题感想及踩坑总结
- Android包管理机制(一) PackageInstaller的初始化
- Android读写日历,Android日历提醒问题总结
- c#实现麻将胡牌判定-----对子法
- Dubbo之@Adaptive
- 每晚泡脚15分钟,5年下来有哪些变化
- 液晶显示器偏光膜的基本原理
- nrm 安装和 nrm命令
- python应聘项目经历怎么写_简历中怎么写「项目经历」最好?为什么?
- DAVINCI DM3730开发攻略——开发环境篇
热门文章
- python写界面c这算法_OpenCV算法精解:基于Python与C.pdf
- 造价120万人民币,日本这款美女机器人是你梦寐以求的机器人老婆吗?
- 射频识别技术漫谈(25)——Felica简介
- 大白话理解LSTM神经网络(附实例讲解)
- linux修音软件下载,修音软件下载 Auto Tune 8(修音工具) v8.1.2 免费安装版 下载-脚本之家...
- java编程基础 | 练习题
- JavaScript 3D实时线图
- adb命令 关机与重启
- 邹博机器学习代码分析(1)-线性回归
- usb uvc协议 1