- 浏览: 383508 次
- 性别:
- 来自: 上海
-
文章分类
最新评论
-
小灯笼:
LoadRunner性能测试实战课程网盘地址:https:// ...
LoadRunner性能测试实战教程 -
爱上疯狂:
[范德萨发的是 发大水发大水发多大沙发啊quote]
main方法测试外系统接口 -
siphlina:
Loadrunner视频——http://pan.baidu. ...
LoadRunner性能测试实战教程 -
全球唯一的你:
LoadRunner性能测试实战视频教程课程观看地址:http ...
LoadRunner性能测试实战教程 -
凡人修仙:
课程:LoadRunner性能测试实战网盘地址: http:/ ...
LoadRunner性能测试实战教程
重点
1, 处理发射的子弹
当按下空格键时,将激光弹同时加到容器和数组列表中。 创建线程和永久循环后, 通过for循环语句和setBounds方法让太空飞船向上射击激光弹。
代码还不能运行, 仅供参考
1, 处理发射的子弹
当按下空格键时,将激光弹同时加到容器和数组列表中。 创建线程和永久循环后, 通过for循环语句和setBounds方法让太空飞船向上射击激光弹。
代码还不能运行, 仅供参考
package chapter4; import java.io.*; import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.applet.*; import java.awt.event.*; import java.util.*; import java.applet.AudioClip; import java.net.MalformedURLException; import java.net.*; public class SpaceDestroyers extends JFrame implements MouseMotionListener, KeyListener { Container cont; // 游戏等级 int currentLevel = 1; // 外星人数量 int numOfEnemies = 1; // 背景图片background JLabel backgrounD = new JLabel(new ImageIcon ("background.PNG")); // 封面图片 JLabel front = new JLabel(new ImageIcon("front.png")); // 飞机发射图片 ImageIcon shipBullet = new ImageIcon("shipBullets.PNG"); ImageIcon enemyBullet = new ImageIcon("enemyBullets.PNG"); // 能量包 JLabel powerup = new JLabel(new ImageIcon("powerup.PNG")); // 飞机 ImageIcon shipImg = new ImageIcon("ship.PNG"); ImageIcon shipHit = new ImageIcon("shipHit.PNG"); // 敌人 ImageIcon enemyImg = new ImageIcon("enemy.PNG"); ImageIcon enemyImg1 = new ImageIcon("ufoImg.png"); ImageIcon enemyImg2 = new ImageIcon("bigenemy1.png"); ImageIcon enemyImg3 = new ImageIcon("bigenemy.png"); ImageIcon enemyHit = new ImageIcon("enemyHit.PNG"); // 能量加强包能量释放 JLabel powerAttack = new JLabel(new ImageIcon ("powerAttack.PNG")); // 医疗包 JLabel healthPack = new JLabel(new ImageIcon("health.PNG")); // 游戏得分 int score = 0; // 显示分数标签 JLabel scoreDisplay = new JLabel(); // 健康指数 int health = 200; // 最后得分 int finalScore = 0; // 能量加强包是否释放能量 boolean useAttack = false; JLabel ship = new JLabel(shipImg); // 飞机发射的子弹数组 ArrayList playerBullets = new ArrayList(); // 敌人发射弹的数组 ArrayList enemyBullets = new ArrayList(); // 敌人的数组 ArrayList enemies = new ArrayList(); // 背景音乐 // AudioClip sound = loadSound("beijing.mp3"); public SpaceDestroyers() { super("太空保卫战"); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(500, 610); cont = getContentPane(); cont.setLayout(null); front.setBounds(-10, -20, 500, 610); backgrounD.setBounds(0, 0, 600, 600); ship.setBounds(225, 500, 50, 50); cont.add(front); title(); cont.remove(front); // cont.setBackground(Color.BLACK); cont.add(ship); scoreDisplay.setBounds(10, 10, 400, 30); scoreDisplay.setFont(new Font("Time New Roman", Font.BOLD, 15)); scoreDisplay.setForeground(Color.WHITE); cont.add(scoreDisplay); cont.add(backgrounD); addMouseMotionListener(this); addKeyListener(this); populateEnemies(); Play play = new Play(); play.start(); // backgrounD.setBounds(0, 0, 600, 600); // cont.add(backgrounD); setContentPane(cont); } // public void paint(Graphics g) // { // try // { // g.setColor(Color.WHITE); // String name = "--太空保卫战背景--"; // Font f = new Font(name, Font.BOLD, 20); // String xinxi=g.setFont(f); // JLabel information = new JLabel(xinxi); // cont.add(information); // information.setBounds(-60, -300, 600, 200); // do // { // information.setBounds(information.getX(),information.getY() + 1, 600, // 200); // Thread.sleep(5); // } while (information.getY() < 700); // } // catch (Exception e) { } // } public void title() { try { JLabel title = new JLabel(new ImageIcon ("title.PNG")); cont.add(title); title.setBounds(-60, -300, 600, 200); do { title.setBounds(title.getX(), title.getY() + 1, 600, 200); Thread.sleep(10); } while (title.getY() < 560); // repaint(); } catch (Exception e) { } } // 程序自动生成敌人 public void populateEnemies() { for (int i = 0; i <= numOfEnemies; i++) { if (i % 2 == 0) { JLabel tempEnemy = new JLabel (enemyImg); int randLocation = (int) (Math.random() * 500); enemies.add(tempEnemy); cont.add((JLabel) (enemies.get(i))); tempEnemy.setBounds(randLocation, 10, 30, 30); cont.setComponentZOrder(((JLabel) (enemies.get(i))), 0); } else if (i % 4 == 0) { JLabel tempEnemy2 = new JLabel (enemyImg2); int randLocation2 = (int) (Math.random () * 500); enemies.add(tempEnemy2); cont.add((JLabel) (enemies.get(i))); tempEnemy2.setBounds(randLocation2, 10, 30, 30); cont.setComponentZOrder(((JLabel) (enemies.get(i))), 0); } else if (i % 3 == 0) { JLabel tempEnemy3 = new JLabel (enemyImg3); int randLocation3 = (int) (Math.random () * 500); enemies.add(tempEnemy3); cont.add((JLabel) (enemies.get(i))); tempEnemy3.setBounds(randLocation3, 10, 30, 30); cont.setComponentZOrder(((JLabel) (enemies.get(i))), 0); } else { JLabel tempEnemy1 = new JLabel (enemyImg1); int randLocation1 = (int) (Math.random () * 500); enemies.add(tempEnemy1); cont.add((JLabel) (enemies.get(i))); tempEnemy1.setBounds(randLocation1, 10, 30, 30); cont.setComponentZOrder(((JLabel) (enemies.get(i))), 0); } } } public class Play extends Thread { // 游戏结束 public void stopp() { } public void run() { while (true) { try { for (int i = 0; i < enemies.size(); i++) { JLabel tempEnemy = (JLabel) (enemies.get(i)); int distance = (int) (Math.random() * 2); tempEnemy.setBounds (tempEnemy.getX(), tempEnemy.getY() + distance, 30, 30); // 能量包是否释放能量 if (useAttack) { // 释放的能量是否击中敌机 if (powerAttack.getBounds().intersects( tempEnemy.getBounds())) { cont.remove(tempEnemy); i--; numOfEnemies--; score += 15; } } if (tempEnemy.getBounds().intersects(ship.getBounds())) { health--; cont.remove (tempEnemy); } if (tempEnemy.getY() > 550) { tempEnemy.setBounds(tempEnemy.getX(), 10, 30, 30); } int fire = (int) (Math.random() * 2500); if (fire <= 1) { JLabel tempBullet = new JLabel(enemyBullet); // tempBullet.setBounds(ship.getX() + 5, // ship.getY()+30, 10, 20); tempBullet.setBounds(tempEnemy.getX() + 5, tempEnemy.getY() + 30, 10, 20); enemyBullets.add(tempBullet); cont.add ((JLabel) (enemyBullets.get(enemyBullets.size() - 1))); cont.setComponentZOrder((JLabel) (enemyBullets .get(enemyBullets.size() - 1)), 0); } } // 是否歼灭了敌人 boolean breakAll = false; for (int i = 0; i < playerBullets.size(); i++) { JLabel temp = ((JLabel) (playerBullets.get(i))); temp.setBounds (temp.getX(), temp.getY() - 8, 10, 20); if (temp.getY() < 0) { cont.remove (temp); playerBullets.remove(i);// shipBullet i--; } for (int j = 0; j < enemies.size(); j++) { JLabel tempEnemy = (JLabel) (enemies.get(j)); if (temp.getBounds().intersects(tempEnemy.getBounds())) { score += 1000; tempEnemy.setIcon(enemyHit); Thread.sleep(100); enemies.remove(j); cont.remove(tempEnemy); numOfEnemies--; if (numOfEnemies <= 0) { currentLevel++;// 升级 if (currentLevel % 3 == 0) { cont.add(powerup); int randLoc = (int) (Math.random() * 450); powerup.setBounds(randLoc, 0, 30, 30); } if (currentLevel % 5 == 0) { cont.add(healthPack); int randLoc = (int) (Math.random() * 450); healthPack .setBounds(randLoc, 0, 30, 30); } // numOfEnemies = currentLevel * // currentLevel;//敌机数量翻倍 numOfEnemies = (int) (Math.random() * 5) + 1;// 随机产生敌机数量 populateEnemies(); breakAll = true; break; } } } if (breakAll) { break; } } if (useAttack) { powerAttack.setBounds (0, powerAttack.getY() - 1, 500, 10); if (powerAttack.getY() < 0) { cont.remove(powerAttack); useAttack = false; currentLevel++; // numOfEnemies= currentLevel * // currentLevel;//敌机数量翻倍 numOfEnemies = (int) (Math.random() * 5) + 1;// 随机产生敌机数量 populateEnemies(); } } // 如果游戏级数为3的倍数,就显示能量包为 if (currentLevel % 3 == 0) { powerup.setBounds (powerup.getX(), powerup.getY() + 1, 30, 30); if (powerup.getBounds ().intersects(ship.getBounds())) { useAttack = true; cont.add (powerAttack); powerAttack.setBounds(0, ship.getY(), 500, 10); cont.remove (powerup); powerup.setBounds(-200, -200, 30, 30); } } if (currentLevel % 5 == 0) { healthPack.setBounds (healthPack.getX(), healthPack.getX() + 1, 30, 30); if (healthPack.getBounds().intersects(ship.getBounds())) { health += 50; score += 100; cont.remove (healthPack); healthPack.setBounds(-100, -100, 30, 30); } } // 敌人是否击中飞机 breakAll = false; for (int i = 0; i < enemyBullets.size(); i++) { JLabel temp = ((JLabel) (enemyBullets.get(i))); temp.setBounds (temp.getX(), temp.getY() + 2, 10, 20); if (temp.getY() > 550) { cont.remove (temp); enemyBullets.remove(i); i--; } if (ship.getBounds ().intersects(temp.getBounds())) { ship.setIcon (shipHit); Thread.sleep (100); ship.setIcon (shipImg); score -= 100; health -= 50; cont.remove (temp); enemyBullets.remove(i); numOfEnemies--; if (health <= 0) { // 游戏结束了 // stopp(); // break; } if (numOfEnemies <= 0) { currentLevel++; // numOfEnemies = currentLevel * currentLevel; numOfEnemies = (int) (Math.random() * 5) + 1;// 随机产生敌机数量 populateEnemies(); breakAll = true; break; } } if (breakAll) { break; } } scoreDisplay.setText("等级: " + currentLevel + " 得分: " + score); cont.repaint(); Thread.sleep(10); } catch (Exception e) { System.out.println (e.getMessage()); } } } } public void mouseMoved(MouseEvent event) { // ship.setBounds(event.getX() - 25, event.getY() - 40, 50, 50); } public void mouseDragged(MouseEvent event) { // new SpaceDestroyers(); } // 使用空格键发射弹 public void keyPressed(KeyEvent event) { if (event.getKeyChar() == ' ') { JLabel tempBullet = new JLabel(shipBullet); tempBullet.setBounds(ship.getX() + 20, ship.getY() - 20, 10, 20); playerBullets.add(tempBullet); cont.add((JLabel) (playerBullets.get (playerBullets.size() - 1)), 0); score -= 2; } if (event.getKeyCode() == KeyEvent.VK_UP)// 上 { if (ship.getY() <= 0) { ship.setBounds(ship.getX(), 0, 50, 50); } else { ship.setBounds(ship.getX(), ship.getY () - 20, 50, 50); } } if (event.getKeyCode() == KeyEvent.VK_DOWN)// 下 { if (ship.getY() >= 520) { ship.setBounds(ship.getX(), 520, 50, 50); } else { ship.setBounds(ship.getX(), ship.getY () + 20, 50, 50); } } if (event.getKeyCode() == KeyEvent.VK_LEFT)// 左 { if (ship.getX() <= -5) { ship.setBounds(-5, ship.getY(), 50, 50); } else { ship.setBounds(ship.getX() - 20, ship.getY(), 50, 50); } } if (event.getKeyCode() == KeyEvent.VK_RIGHT)// 右 { if (ship.getX() >= 450) ship.setBounds(450, ship.getY(), 50, 50); else ship.setBounds(ship.getX() + 20, ship.getY(), 50, 50); } } public void keyReleased(KeyEvent event) { } public void keyTyped(KeyEvent event) { } public static void main(String[] args) { try { URL cb; File f = new File("D:\\软件\\Java\\eclipse 安装\\phone\\beijing.wav"); cb = f.toURL(); AudioClip aau; aau = Applet.newAudioClip(cb); // aau.play(); aau.loop(); new SpaceDestroyers(); } catch (MalformedURLException e) { e.printStackTrace(); } } }
发表评论
-
星际 源码
2012-12-03 14:09 785mark mark mark mark mark -
swing 绘制图表
2011-07-21 11:01 2899由于JFreeChart在swing中不能动态刷新, 所以采用 ... -
swing 中调用 jfreechat
2011-07-13 15:06 694只能做一个简单的例子, 无法和【遗传算法】结合 package ... -
四国大战 - 联机对战
2011-06-25 10:21 1277论坛上有一个超强的单机版的四国。 现以其为模板,改造成支持联机 ... -
四国大战 v1.0
2011-06-08 09:29 0四国大战 v1.0 支持两家对战 如果要实现跨网络的访问, ... -
电子记账本 ipassbook
2011-05-16 16:52 1179应用截图 UML图 -
揍扁捣蛋鬼
2011-05-16 15:20 867重点 1,在button上显示图片而非文本, 表示击打的东西 ... -
猜数字游戏
2011-05-16 15:18 1004重点 1, JOptionPane.showInputDial ... -
赛车游戏
2011-05-15 19:21 1183重点 1, 多线程 - 两辆赛车 2, 按键监听 - KeyL ...
相关推荐
《Android雷电射击游戏》是一款基于Android平台的飞行射击游戏,源码的公开为我们提供了深入理解Android游戏开发的宝贵资源。下面将详细解析这款游戏的开发技术、关键组件以及可能涉及的知识点。 首先,游戏的核心...
这是一款基于java语言的小游戏,模仿了雷电游戏,玩家可以通过鼠标移动操控飞机的位置,点击鼠标左键进行射击,击落敌机并取得最后胜利,本游戏设置了几个简单的关卡,难度越大,敌机移动速度越快,数量也有一定的...
在本资源中,我们主要探讨的是一个基于Android平台的雷电射击游戏的源代码。"Android雷电射击游戏源代码" 提供了开发此类游戏的完整框架,这为开发者提供了深入学习Android游戏开发的机会,同时也方便了那些希望...
【Android雷电射击游戏源码】是一套专为学习Android游戏开发设计的教程资源,它包含了一款典型的飞行射击游戏的完整源代码。通过深入学习和理解这套源码,开发者可以掌握基本的游戏逻辑构建、图形渲染、用户交互以及...
《仿雷电射击游戏——基于VC++ MFC的编程实践》 在计算机编程的世界里,游戏开发是一项富有挑战性和创新性的任务,它结合了艺术、逻辑与技术。本项目名为“仿雷电射击游戏”,是使用C++语言,并基于Microsoft ...
《基于Java的飞机雷电射击游戏的设计实现》是一款利用Java编程语言开发的飞行射击游戏,其设计理念在于结合经典雷电游戏的玩法,为玩家提供刺激的空中战斗体验。本项目采用Eclipse作为集成开发环境,这是一款广泛...
java程序设计大作业——雷电飞机射击游戏(Java)java程序设计大作业——雷电飞机射击游戏(Java)java程序设计大作业——雷电飞机射击游戏(Java)java程序设计大作业——雷电飞机射击游戏(Java)java程序设计大...
自己做的游戏,当作练习SE了,小弟新号,所以给两个积分给我吧
《Java编写的雷电纵轴射击游戏》是一款利用Java编程语言开发的横版飞行射击游戏,深受编程爱好者和游戏玩家的喜爱。该游戏以其华丽的特效、刺激的战斗体验以及丰富的功能吸引了众多用户。接下来,我们将深入探讨游戏...
《Java面向对象程序设计之雷电飞机射击游戏》 在编程世界中,Java以其跨平台性和强大的类库支持,成为了开发各种类型应用的热门选择,包括游戏开发。本项目“雷电飞机射击游戏”就是利用Java面向对象编程思想实现的...
FLASH平台雷电飞机射击游戏;flash平台雷电飞机射击游戏;含游戏图片
"android雷电射击小游戏源码"是针对这一平台开发的一款经典飞行射击游戏,其背后蕴含了丰富的编程技术和设计思路。本文将深入探讨这个项目中的关键知识点,为Android游戏开发爱好者提供学习参考。 1. **游戏框架**...
【JAVA版射击游戏【雷电】】是一款基于Java编程语言开发的电子游戏,深受玩家喜爱。这款游戏借鉴了经典的街机射击游戏"雷电"的玩法,带给玩家高速、刺激的空战体验。开发者利用Java的强大功能和跨平台特性,使得游戏...
【标题】"仿雷电飞行射击游戏源代码"所涉及的知识点主要集中在C++编程语言、游戏开发技术和雷电风格的飞行射击游戏设计上。首先,C++是一种强大的、通用的编程语言,以其面向对象的特性、高效性能和丰富的库支持在...
**仿雷电太空射击游戏项目需求分析文档** **1. 引言** 本文档旨在对仿雷电太空射击游戏项目的具体需求进行详细分析,为后续的设计、开发与测试提供明确的指导。游戏的设计灵感来源于经典的雷电系列,目标是创建一款...
可以用as写一个射击游戏,子弹与飞机碰撞的效果,适合新手,2-3小时完成
【标题】"仿照雷电DIRECTX纵版射击游戏"所涉及的知识点主要集中在游戏开发领域,特别是使用DirectX技术实现纵版射击游戏的编程。DirectX是由微软开发的一组应用编程接口(API),用于处理多媒体任务,尤其是游戏开发...
采用java编写,运用多线程,实现飞机射击游戏,游戏一共三个关卡,每个关卡都有boss,最后一个boss有激光效果。游戏可选择难度,可选择声音开关,游戏过程中有gift,吃到后可增加子弹数目,游戏设计了三种不同的敌机...