飞机大战 界面版
1.利用java的Swing界面 界面有两个按钮 其一实现开始游戏,暂停游戏,继续游戏三个功能;其二实现结束游戏功能 ,这两个按钮控制飞机的状态,还有键盘上的上下左右键控制飞机的方向。
2.该程序有6个类 BollUI类主要实现界面的初始化,重绘以及按钮按下后动作监听器实现的功能。
BollUI类的代码如下:
package Dream.thread0712v2; import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.LineBorder; public class BollUI extends JFrame{ public static ArrayList<RobotAir> list=new ArrayList<RobotAir>(); public static ArrayList<Bullet> bullet=new ArrayList<Bullet>(); ArrayList<BackGround> bg=new ArrayList<BackGround>(); MyAir air; public static void main(String[] args) { BollUI ui=new BollUI(); ui.InitUI(); } private MyPanel panel; private JButton overBt; private JButton startBt; public void InitUI(){ this.setTitle("多线程游戏"); this.setSize(450,600); this.setDefaultCloseOperation(3); this.setLayout(new FlowLayout()); //小球活动区域 panel=new MyPanel(); //小球控制区域 JPanel bottom=creatBottom(); this.add(panel); this.add(bottom); this.setVisible(true); } public JPanel creatBottom(){ JPanel bottom=new JPanel(); bottom.setPreferredSize(new Dimension(360,50)); startBt=new JButton("开始游戏"); overBt=new JButton("结束游戏"); startBt.setFocusable(false); overBt.setFocusable(false); MyListener lis=new MyListener(); startBt.addActionListener(lis); overBt.addActionListener(lis); bottom.add(startBt); bottom.add(overBt); return bottom; } class MyPanel extends JPanel{ public MyPanel(){ this.setBackground(Color.black); this.setPreferredSize(new Dimension(360,500)); LineBorder bl=new LineBorder(Color.red); this.setBorder(bl); } public void paint(Graphics g){ super.paint(g); //画背景 for(int i=0;i<bg.size();i++){ BackGround bk=bg.get(i); bk.draw(g); } //画敌人飞机 for(int i=0;i<list.size();i++){ RobotAir ball=list.get(i); ball.draw(g); } //画飞机 if(air!=null) air.draw(g); //画子弹 for(int i=0;i<bullet.size();i++){ Bullet bt=bullet.get(i); if(bt.isOver){ bullet.remove(i); }else{ bt.draw(g); bt.draw1(g); bt.draw2(g); } } } } class MyListener implements ActionListener{ @Override public void actionPerformed(ActionEvent e) { String str=e.getActionCommand(); if(str.equals("开始游戏")){ //刷新界面 StartThread st=new StartThread(panel); st.start(); //背景 for(int i=0;i<100;i++){ BackGround bk=new BackGround(); bk.start(); bg.add(bk); } //敌人飞机 for(int i=0;i<5;i++){ RobotAir ball=new RobotAir(); ball.start(); list.add(ball); } //玩家飞机 air=new MyAir(); air.start(); //给窗体添加键盘监听器 MyAirListener listener=new MyAirListener(air); BollUI.this.addKeyListener(listener); startBt.setText("暂停游戏"); }else if(str.equals("暂停游戏")){ RobotAir.pauseRobot(); startBt.setText("继续游戏"); }else if(str.equals("继续游戏")){ RobotAir.resumeBall(); startBt.setText("暂停游戏"); }else if(str.equals("结束游戏")){ RobotAir.gameOver(); //结束游戏后要清空队列里面的数据 list.clear(); bullet.clear(); startBt.setText("开始游戏"); } } } }
3.MyAir类,RobotAir类,Bullet类,BackGround类用到相同的知识点,线程,要重写线程里面的run方法
以MyAir类为列介绍程序的内容,该类有画玩家飞机的方法(玩家飞机为图片,背景画的是圆,子弹也为圆),飞机移动的方法,飞机自动发子弹的方法等。
相应的程序代码如下:
package Dream.thread0712v2; import java.awt.Graphics; import javax.swing.ImageIcon; /* * 创建我方飞机 */ public class MyAir extends Thread{ int x,y; int i; int xc=0,yc=0; int width,height; ImageIcon myAir; public boolean left=false,right=false,up=false,down=false; public MyAir(){ //玩家飞机 myAir=new ImageIcon("myair.jpg"); width=myAir.getIconWidth()/2; height=myAir.getIconHeight()/2; x=(360-width)/2; y=500-height; } public void run(){ while(!RobotAir.isStop){ if(!RobotAir.isPause) i++; if(i%6==0) fire(); mov(); try { Thread.sleep(10); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //发子弹 public void fire(){ Bullet bt=new Bullet(x+width/2,y); bt.start(); BollUI.bullet.add(bt); } public void mov(){ //左右方向移动 if(left && x>=0){ xc=-2; }else if(right && x<=(360-width)){ xc=2; }else{ xc=0; } //上下方向移动 if(up && y>=0){ yc=-2; }else if(down && y<=(500-height)){ yc=2; }else{ yc=0; } x+=xc; y+=yc; } public void draw(Graphics g){ g.drawImage(myAir.getImage(), x, y, width, height, null); } }
程序运行效果图:
在飞机发子弹的过程中播放声音可以用
InputStream in = new FileInputStream("xxx.wav"); AudioStream as = new AudioStream(in); AudioPlayer.player.start(as);
此方法,若出现Access restriction: The type AudioStream is not accessible due to restriction on required library E:\jdk1.7\jre\lib\rt.jar错误要先remove (移除)Build Path里面的JRE再重新导入。
此程序尚未实现敌机碰到子弹消失的情况,以及敌机发子弹的情形。
相关推荐
描述中提到的"飞机大战网页版",意味着游戏完全基于Web运行,无需下载安装,用户只需打开浏览器即可游玩。这种模式得益于HTML5的离线存储机制(如localStorage和IndexedDB),即使在网络不稳定的情况下,游戏也能...
【飞机大战完整版代码】是一款基于游戏开发的项目,它以经典的"打飞机"游戏为蓝本,提供了全面的游戏逻辑和界面实现。这个游戏通常由以下几个关键部分组成:游戏引擎、游戏对象(如飞机、子弹、敌人)、碰撞检测、...
它包括了游戏中的各种基本元素,如飞机模型、爆炸效果、游戏界面和状态提示,开发者可以基于这些素材快速构建一个飞机大战类游戏,同时通过自定义和优化,创造出独特且吸引人的游戏体验。有了这些素材,开发者无需从...
在Java版全民飞机大战中,开发者会设计一套计分规则,如击落敌机加分、生存时间加分等,通过变量维护当前分数,并在界面上实时展示。 5. **血量计算**:血量管理是游戏中角色生命力的体现。每个游戏对象(如玩家...
java图形界面游戏飞机大战.zipjava图形界面游戏飞机大战.zip java图形界面游戏飞机大战.zipjava图形界面游戏飞机大战.zip java图形界面游戏飞机大战.zipjava图形界面游戏飞机大战.zip java图形界面游戏飞机大战.zip...
在这个特定的案例中,"labview2013版本的飞机大战"是一个使用LabVIEW编程语言创建的交互式游戏。下面我们将深入探讨LabVIEW的基本概念、其在游戏开发中的应用以及如何利用LabVIEW2013构建类似“飞机大战”的游戏。 ...
"飞机大战"作为一款简单的2D射击游戏,是初学者了解Java图形用户界面(GUI)编程和游戏循环机制的理想实例。 游戏的核心部分主要包括以下几个方面: 1. **游戏循环**:游戏循环是游戏持续运行的关键,通常采用主...
"飞机大战精简版"就是这样一款特别为初学者设计的小型游戏,它巧妙地结合了Java编程语言的面向对象特性,使得学习过程既有趣又富有挑战性。 首先,让我们了解一下Java的面向对象编程(Object-Oriented Programming,...
本节我们将深入探讨如何利用C#语言和Unity3D构建"飞机大战"游戏,以及其GUI登录界面的实现。 1. **Unity3D基础** Unity3D使用C#作为主要脚本语言,它具有直观的可视化编辑器,支持场景、游戏对象、组件等概念。在...
【飞机大战素材.zip】是一个包含了制作飞机大战游戏所需的各种图片素材的压缩文件。这个资源包很全面,适合那些想要开发或改进飞机大战游戏的开发者,无论是初学者还是经验丰富的程序员,都能从中受益。以下是该...
《飞机大战手游全套UI素材资料》是一份专为游戏开发初学者设计的资源包,包含了制作2D飞行射击游戏——飞机大战所需的全部图像资源。这个资料包不仅适用于飞机大战项目,其内含的各种按钮和其他元素也可以灵活应用于...
【标题】:“飞机大战图片素材”是一套专为游戏开发者设计的资源库,其中涵盖了游戏中所有与飞机大战相关的视觉元素。这些素材对于制作一款飞行射击类游戏至关重要,无论是设计游戏界面,还是创建丰富的游戏动画,都...
在"飞机大战游戏"中,CSS确保了游戏界面的美观性和一致性。它可以设置背景色、边框、阴影等视觉效果,调整元素的位置和大小,使游戏界面布局合理,提升用户体验。 四、HBuilder的使用 HBuilder是一款强大的Web开发...
【微信小游戏飞机大战网页版】是一款利用HTML技术开发的在线游戏,它将经典的飞机大战玩法带入了网页环境中,让玩家无需下载应用即可在微信等平台上体验。这个游戏的设计旨在提供轻松娱乐的同时,也展示了HTML5在...
"Python飞机大战图片"项目,是基于Python编程语言,利用图像处理技术实现的一款名为"飞机大战"的游戏的图形界面设计。这款游戏的制作,不仅展示了Python在游戏开发中的应用潜力,还涵盖了图像处理、事件处理和动画...
#Pygame 双人版经典飞机大战 源码 1. 图片和音效素材改编,界面美观; 2. 双人同时游戏; 3. 暂停/继续游戏; 4. 记录历史最高分; 5. 安装python和pygame库后,运行feijidazhan.py即可开始游戏; 6. 代码整洁高效,...
在“飞机大战”中,图片涵盖了游戏界面、角色模型、弹幕效果、背景图像等多个方面。例如,飞机模型图像是玩家操控的核心,设计时需要考虑到不同飞机的外观差异,以及在高速移动和战斗中的视觉表现。背景图像则营造了...
在开发一款游戏,尤其是像“飞机大战”这样的经典空战射击游戏时,视觉效果和音频设计是至关重要的组成部分。这款名为“飞机大战游戏素材”的压缩包文件提供了制作此类游戏所需的图像和音频资源,使得开发者或者爱好...