我自己写的飞机大战,这里只有一个主类代码,然后其他的我也上传了,大家需要的话可以一并下载;有不足之处,望大家见谅和指出,,大家可以先点开下面的图片看下界面
package 飞机大战; import java.awt.Color; import java.awt.Font; import java.awt.Frame; import java.awt.Graphics; import java.awt.Image; import java.awt.LayoutManager; import java.awt.RenderingHints.Key; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.ArrayList; import java.util.List; import java.util.Random; import javax.swing.ImageIcon; import javax.swing.JPanel; public class WarUI extends Frame{ public static final int WIDTH=410; public static final int HEIGHT=600; public ImageIcon img; public ImageIcon img2; public static WarUI warui; public boolean p=true; public static List<Panle> planes = new ArrayList<Panle>();// 敌人飞机容器 public static List<Bullet> bullets = new ArrayList<Bullet>();//子弹容器 public static List<Explode> explodes=new ArrayList<Explode>();//爆炸对象 public static int score=0;//计分 private Image offScreenImage = null;//用来实现使用双缓冲,画一个缓冲画布 public Panle myplane=new Panle(150,500,warui,60,true); private Random random=new Random(); public void lauchFrame() { setTitle("飞机大战"); ImageIcon Icon=new ImageIcon("背景\\Icon.jpg"); setIconImage(Icon.getImage()); setBounds(380, 100, WIDTH, HEIGHT); // 匿名内部类,短,不涉及将来的扩展 addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); img=new ImageIcon("背景\\back.jpg");//接口,getImage方法返回一个Image对象,repaint方法会调用paint方法 img2=new ImageIcon("背景\\back2.jpg");//接口,getImage方法返回一个Image对象,repaint方法会调用paint方法 setResizable(false); setVisible(true); MyKeyListener mkl=new MyKeyListener(); this.addKeyListener(mkl); new Thread(new PaintThread()).start(); } public static void main(String[] args) { warui =new WarUI(); warui.lauchFrame(); } /** * 消除闪烁,使用双缓冲 * 线程重画更加均匀,更能控制重化的速度。按键重画不能解决子弹自动飞行的问题; * 每次重绘调用repaint方法时,必定会先调用update然后paint方法 */ public void update(Graphics g) { if (offScreenImage == null) { offScreenImage = this.createImage(WIDTH, HEIGHT); } // 拿到图片上的画笔 Graphics gOffScreen = offScreenImage.getGraphics(); Color c = gOffScreen.getColor(); gOffScreen.setColor(Color.blue); gOffScreen.fillRect(0, 0, WIDTH,HEIGHT); gOffScreen.setColor(c); paint(gOffScreen);// 画在背后图片上 g.drawImage(offScreenImage, 0, 0, null);// 画在屏幕上 } /** * 根据线程里面的repaint方法,不断重画面板,飞机,子弹,爆炸效果,等待都是在里面画出来的 */ public void paint(Graphics g){ // 根据不同的分数层切换背景图片 if(score>5000){ g.drawImage(img2.getImage(), 0, 0, warui); }else{ g.drawImage(img.getImage(), 0, 0, warui); } if(!myplane.isLive()){ g.setColor(Color.red); Font f = g.getFont(); g.setFont(new Font("宋体",Font.BOLD,60)); g.drawString("GAME OVER!!!", 20, 300); g.setFont(f); g.drawString("复活按B,重新开始按C!!!", 22, 340); p=false; } myplane.draw(g); myplane.move(); //敌人 if (planes.size()<3 ) { for (int j = 0; j < 3; j++) { Panle p = new Panle(false, warui); planes.add(p); } } if (planes.size() != 0) { for (int i = 0; i < planes.size(); i++) { Panle diren = planes.get(i); diren.draw(g); diren.dmove(); int r1=random.nextInt(200); if(r1==20) diren.dfire(); } } g.setColor(Color.BLUE); g.drawString("子 弹 个 数 :"+bullets.size(), 20,50); g.drawString("入侵敌机数:"+planes.size(), 20, 70); g.drawString("获得分数:"+score, 20, 90); g.setColor(Color.BLACK); for(int i=0;i<bullets.size();i++){ Bullet b1=bullets.get(i); b1.draw(g); b1.hitplane(planes); b1.hitplane(myplane); b1.move(); } /** * 创建爆炸对象 */ for (int i = 0; i < explodes.size(); i++) { Explode e = explodes.get(i); e.draw(g); } } /** * // 内部类,,方便的访问包装类的方法,不方便公开, * @author yan * */ private class PaintThread implements Runnable { public void run() { while (true) { if(p==true){ repaint(); } try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } } } } /** * 键盘事件,直接添加在面板上,然后对飞机的X,Y速度进行控制 * @author yan * */ class MyKeyListener extends KeyAdapter { public void keyPressed(KeyEvent e) { switch (e.getKeyCode()) { case 37: // 左 myplane.left(); break; case 38:// 上 myplane.up(); break; case 39:// 右 myplane.right(); break; case 40:// 下 myplane.down(); break; case 65://A键 if(myplane.isLive()){ myplane.fire(); } break; case 66://B建复活,清空子弹 p=true; myplane=new Panle(150,500,warui,60,true); bullets.removeAll(bullets); break; case 67://C建重新开始 p=true; myplane=new Panle(150,500,warui,60,true); bullets.removeAll(bullets); planes.removeAll(planes); break; case 80://P键,暂停 if(p==false){ p=true; }else{ p=false; } break; } } /** * 抬起键时,把速度为0 */ public void keyReleased(KeyEvent e) { if (e.getKeyCode() == 37 || e.getKeyCode() == 39) { myplane.initXc(); } else if (e.getKeyCode() == 38 || e.getKeyCode() == 40) { myplane.initYc(); } } } }
相关推荐
java写的飞机大战小游戏.zipjava写的飞机大战小游戏.zipjava写的飞机大战小游戏.zip java写的飞机大战小游戏.zipjava写的飞机大战小游戏.zipjava写的飞机大战小游戏.zip java写的飞机大战小游戏.zipjava写的飞机大战...
java小游戏 飞机大战java小游戏 飞机大战java小游戏 飞机大战java小游戏 飞机大战java小游戏 飞机大战java小游戏 飞机大战java小游戏 飞机大战java小游戏 飞机大战java小游戏 飞机大战java小游戏 飞机大战java小游戏...
Java课程设计 飞机大战 源项目文件及实验报告,本课程设计通过代码实现将理论知识和具体实践相结合,巩固提高了对JAVA的相关方法与概念的理解,进一步加强了学生的发散思维及动手能力,加强了学生对计算机及软件工程...
Java版飞机大战是一款基于Java编程语言开发的简单游戏,它展示了Java基础知识在实际项目中的应用。这款游戏的核心功能包括玩家控制飞机移动、射击敌机、躲避障碍以及得分系统等。通过这个游戏,开发者可以学习到如何...
java简单版飞机大战 请勿在未经授权的情况下上传任何涉及著作权侵权的资源,除非该资源完全由您个人创作 • 点击上传资源即表示您确认该资源不违反资源分享的使用条款,并且您拥有该资源的所有版权或者上传资源的...
在Java编程领域,小项目是学习和巩固基础知识的常见方式,而"Java飞机大战"就是一个典型实例。这个项目主要用于锻炼开发者的游戏逻辑构建、图形处理以及用户交互能力。在这个项目中,"图片素材"扮演了至关重要的角色...
JAVA实现的飞机大战小游戏.zipJAVA实现的飞机大战小游戏.zip JAVA实现的飞机大战小游戏.zipJAVA实现的飞机大战小游戏.zip JAVA实现的飞机大战小游戏.zipJAVA实现的飞机大战小游戏.zip JAVA实现的飞机大战小游戏.zip...
使用java编写的飞机大战游戏,包含源代码。适合初学者,通过对java语言中的面向对象、界面的表示等内容进行练习,以达到充分熟悉开发平台及代码编写。同时掌握并实践游戏项目设计规范及其开发流程:概要设计、详细...
java课程设计作业——基于java实现的飞机大战小游戏 java课程设计作业——基于java实现的飞机大战小游戏 java课程设计作业——基于java实现的飞机大战小游戏 java课程设计作业——基于java实现的飞机大战小游戏 ...
使用Java编程实现飞机大战游戏。游戏功能是使用鼠标操纵一架飞机,发射子弹击毁不断来袭的敌机。 游戏规则:在游戏中,英雄机初始生命为2,每击中一架小型敌机加5分,击中一架大型敌机加10分。另外有1/10的概率出现...
【Java实现的飞机大战】是一款基于Java编程语言开发的简易版飞行射击游戏,模仿了微信上的经典游戏"飞机大战"。这款游戏旨在为初学者提供一个学习Java编程的实践平台,虽然代码实现可能不是最简洁高效的,但对于理解...
Java Swing飞机大战小游戏Java Swing飞机大战小游戏Java Swing飞机大战小游戏Java Swing飞机大战小游戏Java Swing飞机大战小游戏Java Swing飞机大战小游戏Java Swing飞机大战小游戏Java Swing飞机大战小游戏Java ...
标题中的“老Java程序员花一天时间写了个飞机大战”揭示了一个资深的Java开发者利用一天的时间开发了一款名为“飞机大战”的游戏。这个标题暗示了Java作为一种编程语言在开发游戏方面的应用,同时也展示了高级程序员...
《JAVA 飞机大战游戏:深入解析与学习指南》 在编程世界中,游戏开发是一种极好的实践方式,能够帮助开发者深入理解编程语言的特性、图形处理、事件响应等核心概念。Java作为一门广泛应用于各种领域的编程语言,...
java飞机大战游戏.zipjava飞机大战游戏.zipjava飞机大战游戏.zip java飞机大战游戏.zipjava飞机大战游戏.zipjava飞机大战游戏.zip java飞机大战游戏.zipjava飞机大战游戏.zipjava飞机大战游戏.zip java飞机大战游戏....
JAVA实现的飞机大战小游戏-Asteroids game.zip JAVA实现的飞机大战小游戏-Asteroids game.zip JAVA实现的飞机大战小游戏-Asteroids game.zip JAVA实现的飞机大战小游戏-Asteroids game.zip JAVA实现的飞机大战小游戏...
java-飞机大战小游戏.zipjava-飞机大战小游戏.zipjava-飞机大战小游戏.zip java-飞机大战小游戏.zipjava-飞机大战小游戏.zipjava-飞机大战小游戏.zip java-飞机大战小游戏.zipjava-飞机大战小游戏.zipjava-飞机大战...
基于Java的飞机大战游戏的设计与实现设计软件源码+word毕业论文文档。基于Java的飞机大战游戏主要需要我方飞机和敌方飞机,还有子弹,特殊nPC,开始背景,结束背景,以及背景音乐。我方飞机可以随意移动,敌方飞机无...
java图形界面游戏飞机大战.zipjava图形界面游戏飞机大战.zip java图形界面游戏飞机大战.zipjava图形界面游戏飞机大战.zip java图形界面游戏飞机大战.zipjava图形界面游戏飞机大战.zip java图形界面游戏飞机大战.zip...