`

飞机大战 界面版

阅读更多

                                                         飞机大战 界面版

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再重新导入。

 

此程序尚未实现敌机碰到子弹消失的情况,以及敌机发子弹的情形。

 

 

  • 大小: 52.4 KB
分享到:
评论

相关推荐

    飞机大战网页版HTML5源码

    描述中提到的"飞机大战网页版",意味着游戏完全基于Web运行,无需下载安装,用户只需打开浏览器即可游玩。这种模式得益于HTML5的离线存储机制(如localStorage和IndexedDB),即使在网络不稳定的情况下,游戏也能...

    飞机大战完整版代码

    【飞机大战完整版代码】是一款基于游戏开发的项目,它以经典的"打飞机"游戏为蓝本,提供了全面的游戏逻辑和界面实现。这个游戏通常由以下几个关键部分组成:游戏引擎、游戏对象(如飞机、子弹、敌人)、碰撞检测、...

    飞机大战图片素材(全)

    它包括了游戏中的各种基本元素,如飞机模型、爆炸效果、游戏界面和状态提示,开发者可以基于这些素材快速构建一个飞机大战类游戏,同时通过自定义和优化,创造出独特且吸引人的游戏体验。有了这些素材,开发者无需从...

    java版全民飞机大战

    在Java版全民飞机大战中,开发者会设计一套计分规则,如击落敌机加分、生存时间加分等,通过变量维护当前分数,并在界面上实时展示。 5. **血量计算**:血量管理是游戏中角色生命力的体现。每个游戏对象(如玩家...

    java图形界面游戏飞机大战.zip

    java图形界面游戏飞机大战.zipjava图形界面游戏飞机大战.zip java图形界面游戏飞机大战.zipjava图形界面游戏飞机大战.zip java图形界面游戏飞机大战.zipjava图形界面游戏飞机大战.zip java图形界面游戏飞机大战.zip...

    labview2013版本的飞机大战

    在这个特定的案例中,"labview2013版本的飞机大战"是一个使用LabVIEW编程语言创建的交互式游戏。下面我们将深入探讨LabVIEW的基本概念、其在游戏开发中的应用以及如何利用LabVIEW2013构建类似“飞机大战”的游戏。 ...

    飞机大战.zip

    "飞机大战"作为一款简单的2D射击游戏,是初学者了解Java图形用户界面(GUI)编程和游戏循环机制的理想实例。 游戏的核心部分主要包括以下几个方面: 1. **游戏循环**:游戏循环是游戏持续运行的关键,通常采用主...

    飞机大战精简版

    "飞机大战精简版"就是这样一款特别为初学者设计的小型游戏,它巧妙地结合了Java编程语言的面向对象特性,使得学习过程既有趣又富有挑战性。 首先,让我们了解一下Java的面向对象编程(Object-Oriented Programming,...

    Unity3D飞机大战

    本节我们将深入探讨如何利用C#语言和Unity3D构建"飞机大战"游戏,以及其GUI登录界面的实现。 1. **Unity3D基础** Unity3D使用C#作为主要脚本语言,它具有直观的可视化编辑器,支持场景、游戏对象、组件等概念。在...

    飞机大战素材.zip

    【飞机大战素材.zip】是一个包含了制作飞机大战游戏所需的各种图片素材的压缩文件。这个资源包很全面,适合那些想要开发或改进飞机大战游戏的开发者,无论是初学者还是经验丰富的程序员,都能从中受益。以下是该...

    飞机大战手游全套UI素材资料

    《飞机大战手游全套UI素材资料》是一份专为游戏开发初学者设计的资源包,包含了制作2D飞行射击游戏——飞机大战所需的全部图像资源。这个资料包不仅适用于飞机大战项目,其内含的各种按钮和其他元素也可以灵活应用于...

    飞机大战图片素材

    【标题】:“飞机大战图片素材”是一套专为游戏开发者设计的资源库,其中涵盖了游戏中所有与飞机大战相关的视觉元素。这些素材对于制作一款飞行射击类游戏至关重要,无论是设计游戏界面,还是创建丰富的游戏动画,都...

    飞机大战游戏.rar

    在"飞机大战游戏"中,CSS确保了游戏界面的美观性和一致性。它可以设置背景色、边框、阴影等视觉效果,调整元素的位置和大小,使游戏界面布局合理,提升用户体验。 四、HBuilder的使用 HBuilder是一款强大的Web开发...

    小游戏飞机大战网页版

    【微信小游戏飞机大战网页版】是一款利用HTML技术开发的在线游戏,它将经典的飞机大战玩法带入了网页环境中,让玩家无需下载应用即可在微信等平台上体验。这个游戏的设计旨在提供轻松娱乐的同时,也展示了HTML5在...

    python飞机大战图片

    "Python飞机大战图片"项目,是基于Python编程语言,利用图像处理技术实现的一款名为"飞机大战"的游戏的图形界面设计。这款游戏的制作,不仅展示了Python在游戏开发中的应用潜力,还涵盖了图像处理、事件处理和动画...

    Pygame经典飞机大战(双人版)源码

    #Pygame 双人版经典飞机大战 源码 1. 图片和音效素材改编,界面美观; 2. 双人同时游戏; 3. 暂停/继续游戏; 4. 记录历史最高分; 5. 安装python和pygame库后,运行feijidazhan.py即可开始游戏; 6. 代码整洁高效,...

    Aircraft Battle 飞机大战素材(含图片,声音,字体)

    在“飞机大战”中,图片涵盖了游戏界面、角色模型、弹幕效果、背景图像等多个方面。例如,飞机模型图像是玩家操控的核心,设计时需要考虑到不同飞机的外观差异,以及在高速移动和战斗中的视觉表现。背景图像则营造了...

    飞机大战游戏素材(含图片和音频)

    在开发一款游戏,尤其是像“飞机大战”这样的经典空战射击游戏时,视觉效果和音频设计是至关重要的组成部分。这款名为“飞机大战游戏素材”的压缩包文件提供了制作此类游戏所需的图像和音频资源,使得开发者或者爱好...

Global site tag (gtag.js) - Google Analytics