package com.leidian;
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Random;
import javax.swing.*;
import java.io.*;
public class MainFrame extends JFrame {
JFrame frame1 = new JFrame("重邮飞机大战");
JPanel panel = new JPanel();
// JButton button1 = new JButton("开始游戏");
// JButton button2 = new JButton("游戏帮助");
// JButton button3 = new JButton("游戏排行");
// JButton button4 = new JButton("退出游戏");
static boolean up = false;
static boolean down = false;
static boolean left = false;
static boolean right = false;
static boolean space = false;
static boolean changeBullet = true;
mainUI panel2 = new mainUI();
HelpPanel helppanel = new HelpPanel();
NewGame newgame;
MyPlane myplane;
AudioClip clip;
static GameOver Go;
static RankingList rl;
MyThread t;
String img_enemy[] = { "enemy1.png", "enemy2.png", "enemy3.png", "enemy4.png", "enemy5.png" };
String img_food[] = { "Food1.png", "Food2.png", "Food3.png", "Food4.png" };
String img_myBullet[] = { "bullet.png", "bulletlight.png" };
public int index;
public static ArrayList<Player> playerList = new ArrayList<Player>();// 玩家排名
public MainFrame() {
panel2.setOpaque(false);
panel2.setLayout(null);// 为了使用按钮的定位
frame1.setSize(420, 600);
ImageIcon bg = new ImageIcon(getClass().getResource("/image/bg1.png"));
JLabel label = new JLabel(bg);
label.setBounds(0, 0, bg.getIconWidth(), bg.getIconHeight());
frame1.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));
panel = (JPanel) frame1.getContentPane();
panel.setOpaque(false);
frame1.add(panel2);
frame1.setLocation(800, 300);
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame1.setVisible(true);
frame1.setResizable(false);
for (int i = 0; i < 5; i++) {
playerList.add(new Player("无名氏", 0));// 加入5个空排行
}
}
public static ArrayList<Enemy> enemyAll;
// 存放爆炸效果的集合
public static ArrayList<Explode> explodeAll;
// 存放子弹的集合
public static ArrayList<Bullet> bulletAll;
public static ArrayList<EnemyBullet> bulletEnemy;
public static ArrayList<Food> FoodAll;
public static int score;
class NewGame extends JPanel {
public int bg_y = 0;
public NewGame() {
String music = "/sound/雷电.wav";
clip = Applet.newAudioClip(getClass().getResource(music));
clip.loop();// 循环播放背景音乐
}
public void paintComponent(Graphics g) {
Image img_bg = new ImageIcon(getClass().getResource("/image/bg3.png")).getImage();
g.drawImage(img_bg, 0, bg_y, 420, 600, null);
bg_y = bg_y + 10;
g.drawImage(img_bg, 0, -600 + bg_y, 420, 600, null);// 使得图片向后移动,而飞机在不动的情况下向前移动的假象(相对运动)
if (bg_y >= 590) {
bg_y = 0;
}
// 创建自己的飞机
myplane.drawMyPlane(g);
g.drawRect(5, 5, 100, 10);
g.setColor(Color.red);
g.fillRect(5, 5, myplane.getHp(), 10);// 绘制自己飞机血量
g.drawString("分数:" + score, 300, 20);// 分数
if (new Random().nextInt(100) > 95) {// 产生food的概率
Food food = new Food(img_food[new Random().nextInt(4)]);
FoodAll.add(food);
}
if (new Random().nextInt(100) > 95) {// 产生敌机的概率
Enemy enemy = new Enemy(new Random().nextInt(365), 45, 100, 40, 40, 100, 10,
img_enemy[new Random().nextInt(5)]);
enemyAll.add(enemy);
}
for (int i = 0; i < FoodAll.size(); i++) {
Food food1 = FoodAll.get(i);
if (food1.isLive()) {
food1.drawFood(g);
} else {
FoodAll.remove(food1);
}
}
for (int i = 0; i < enemyAll.size(); i++) {
Enemy enemy = enemyAll.get(i);
if (enemy.isLive()) {
enemy.drawEnemy(g);
if (new Random().nextInt(100) > 70) {// 敌机产生子弹的概率
EnemyBullet eb = new EnemyBullet(enemyAll.get(i).getX() + 20, enemyAll.get(i).getY() + 50,
new Random().nextInt(7) + 1);
bulletEnemy.add(eb);
}
} else
enemyAll.remove(enemy);
}
// 绘画爆炸
for (int i = 0; i < explodeAll.size(); i++) {
Explode e = explodeAll.get(i);
// 判断是否是活字弹
if (e.isLive()) {
e.drawExplode(g);
} else {
explodeAll.remove(e);
}
}
// 绘画子弹
for (int i = 0; i < bulletAll.size(); i++) {
Bullet bullet = bulletAll.get(i);
// 判断是否是活子弹
if (bullet.isLive()) {
bullet.drawBullet(g);
} else {
bulletAll.remove(bullet);
}
}
for (int i = 0; i < bulletEnemy.size(); i++) {
EnemyBullet eb2 = bulletEnemy.get(i);
if (eb2.isLive()) {
eb2.drawEnemyBullet(g);
} else {
bulletEnemy.remove(eb2);
}
}
if (myplane.getHp() < 0) {
Go = new GameOver();
newgame.setVisible(false);
frame1.requestFocus();
Go.setVisible(true);
frame1.add(Go);
t.stop();
clip.stop();
}
}
public void move() {// 自己飞机的移动情况
if (MainFrame.left && MyPlane.getMy_x() > -15)
MyPlane.setMy_x(MyPlane.getMy_x() - 15);
if (MainFrame.right && MyPlane.getMy_x() < 365)
MyPlane.setMy_x(MyPlane.getMy_x() + 15);
if (MainFrame.down && MyPlane.getMy_y() < 500)
MyPlane.setMy_y(MyPlane.getMy_y() + 15);
if (MainFrame.up && MyPlane.getMy_y() > -15)
MyPlane.setMy_y(MyPlane.getMy_y() - 15);
if (MainFrame.space) {
Fire();
}
}
public void Fire() {
if (changeBullet) {
Bullet bullet = new Bullet(MyPlane.getMy_x() + 25, MyPlane.getMy_y() - 20, 5, 20, 30, 10,
img_myBullet[0]);
bulletAll.add(bullet);
} else {
Bullet bullet = new Bullet(MyPlane.getMy_x() + 25, MyPlane.getMy_y() - 20, 5, 20, 30, 20,
img_myBullet[1]);
bulletAll.add(bullet);
}
}
Image img = null;
// 缓冲,避免闪烁现象出现
public void update(Graphics g) {
if (img == null) {
img = this.createImage(420, 600);
}
// 利用img创建虚拟画笔
Graphics gb = img.getGraphics();
// 调用paint方法
paint(gb);
// 利用真实的画笔g来画图片
g.drawImage(img, 0, 0, 420, 600, null);
}
}
class MyThread4 extends Thread {
public void run() {
while (true) {
panel2.repaint();
try {
Thread.sleep(65);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
class MyThread extends Thread {
@Override
public void run() {
while (true) {
// if(MyPlane.getMy_y()>6){
// MyPlane.setMy_y(MyPlane.getMy_y() +2);
// }
newgame.repaint();
// 每时每刻都判断是否要移动飞机
newgame.move();
try {
// 让子弹前进,速度要比玩家速度快很多
for (int i = 0; i < bulletAll.size(); i++) {
Bullet bullet = bulletAll.get(i);
bullet.setY(bullet.getY() - bullet.getSpeed());
}
Thread.sleep(65);// 线程休眠
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
class MyKeyDown extends KeyAdapter {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == e.VK_SPACE) {
MainFrame.space = true;
}
if (e.getKeyCode() == e.VK_UP) {
MainFrame.up = true;
}
if (e.getKeyCode() == e.VK_DOWN) {
MainFrame.down = true;
}
if (e.getKeyCode() == e.VK_LEFT) {
MainFrame.left = true;
}
if (e.getKeyCode() == e.VK_RIGHT) {
MainFrame.right = true;
}
}
@Override
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == e.VK_SPACE) {
MainFrame.space = false;
}
if (e.getKeyCode() == e.VK_UP) {
MainFrame.up = false;
}
if (e.getKeyCode() == e.VK_DOWN) {
MainFrame.down = false;
}
if (e.getKeyCode() == e.VK_LEFT) {
MainFrame.left = false;
}
if (e.getKeyCode() == e.VK_RIGHT) {
MainFrame.right = false;
}
}
}
class mainUI extends JPanel {
没有合适的资源?快使用搜索试试~ 我知道了~
java gui实现的雷霆战机游戏.zip
共101个文件
png:66个
java:22个
wav:4个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 18 浏览量
2023-08-04
21:15:23
上传
评论
收藏 10.36MB ZIP 举报
温馨提示
用java写的项目,源码都经测试过,真实可靠,欢迎自行下载学习。用java写的项目,源码都经测试过,真实可靠,欢迎自行下载学习。用java写的项目,源码都经测试过,真实可靠,欢迎自行下载学习。用java写的项目,源码都经测试过,真实可靠,欢迎自行下载学习。用java写的项目,源码都经测试过,真实可靠,欢迎自行下载学习。用java写的项目,源码都经测试过,真实可靠,欢迎自行下载学习。用java写的项目,源码都经测试过,真实可靠,欢迎自行下载学习。用java写的项目,源码都经测试过,真实可靠,欢迎自行下载学习。用java写的项目,源码都经测试过,真实可靠,欢迎自行下载学习。用java写的项目,源码都经测试过,真实可靠,欢迎自行下载学习。用java写的项目,源码都经测试过,真实可靠,欢迎自行下载学习。用java写的项目,源码都经测试过,真实可靠,欢迎自行下载学习。用java写的项目,源码都经测试过,真实可靠,欢迎自行下载学习。用java写的项目,源码都经测试过,真实可靠,欢迎自行下载学习。
资源推荐
资源详情
资源评论
收起资源包目录
java gui实现的雷霆战机游戏.zip (101个子文件)
.classpath 301B
.gitignore 22B
MainFrame.java 19KB
MainFrame.java 10KB
Enemy.java 4KB
Enemy.java 4KB
RankingList.java 3KB
MyPlane.java 3KB
MyPlane.java 3KB
GameOver.java 3KB
EnemyBullet.java 2KB
EnemyBullet.java 2KB
Food.java 2KB
Food.java 2KB
Bullet.java 2KB
Bullet.java 2KB
GameBase.java 2KB
Explode.java 1KB
Explode.java 1KB
Loading.java 685B
Framework.java 580B
Player.java 532B
Player.java 532B
GameStart.java 200B
list.jpg 39KB
bg4.jpg 37KB
bg4.jpg 36KB
list.jpg 28KB
bg1.png 2.35MB
bg3.png 783KB
bg3.png 779KB
bg1.png 505KB
start1.png 281KB
help1.png 281KB
exit1.png 280KB
list1.png 280KB
reset1.png 277KB
return1.png 277KB
start2.png 275KB
help2.png 275KB
list2.png 275KB
exit2.png 275KB
return2.png 272KB
reset2.png 271KB
bg2.png 54KB
bg2.png 53KB
MyPlane.png 38KB
MyPlane.png 38KB
Food1.png 37KB
Food1.png 36KB
Food4.png 36KB
Food4.png 36KB
Food2.png 33KB
Food2.png 32KB
Food3.png 30KB
Food3.png 30KB
bulletlight.png 5KB
bulletlight.png 5KB
return.png 2KB
return3.png 2KB
return2.png 2KB
return4.png 2KB
enemy1.png 1KB
enemy1.png 1KB
enemy5.png 1KB
enemy5.png 1KB
enemy4.png 1KB
enemy4.png 1KB
reset2.png 996B
reset1.png 988B
enemy3.png 986B
enemy3.png 980B
enemy2.png 648B
enemy2.png 639B
boom6.png 627B
boom6.png 620B
boom7.png 597B
boom7.png 592B
boom5.png 552B
boom5.png 545B
boom3.png 308B
boom3.png 302B
boom2.png 287B
boom2.png 282B
enemyBullet.png 258B
enemyBullet.png 252B
boom4.png 248B
boom4.png 244B
bullet.png 217B
bullet.png 213B
enemybullet2.png 204B
enemybullet2.png 201B
boom1.png 197B
boom1.png 191B
org.eclipse.jdt.core.prefs 598B
.project 386B
GameList.ser 226B
雷电.wav 2.38MB
雷电.wav 2.36MB
boomSound.wav 241KB
共 101 条
- 1
- 2
资源评论
c++服务器开发
- 粉丝: 3045
- 资源: 4463
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功