“飞机大战”面向对象小游戏

本文介绍了使用面向对象编程设计的“飞机大战”小游戏。通过分析游戏需求,创建了背景类BackGround、敌人类Enemy、飞机类Hero和子弹类Missile。详细讲述了游戏的开发步骤,包括基本界面绘制、背景移动、飞机控制、开火效果、敌人生成、碰撞检测以及生命值管理。文章最后展示了游戏截图和提供了源码链接。
摘要由CSDN通过智能技术生成

1.面向对象与面向过程的区别

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

2.游戏需求

  • 游戏通过键盘操作,键盘上的上下左右分别控制飞机的移动,空格键控制飞机的开火,击败敌人。
  • 开始游戏时,飞机的血量是100,当敌人遇到飞机的时候,在相遇的过程中飞机的血量递减1,如果飞机的生命数为0,则游戏结束,界面上没有任何敌人只有飞机。
  • 普通敌人被飞机打击一次就死亡;一般敌人 被飞机打击二次就死亡;高级敌人被飞机打击三次就死亡;
  • 背景每次启动是不同的界面;
  • 背景会自动向上移动
  • 飞机移动会有背景音乐;
  • 所有的敌人都是随机不停的从界面最上面的外部进入界面;
  • 游戏死亡界面只有自己的飞机;

3.飞机大战基于面向对象分析

基于上述需求,可以抽象出背景类BackGround,敌人类Enemy,飞机类Hero,子弹类Missile。整个游戏是由这些对象组成,这些对象的行为组合在一起就是游戏进行时的各种操作和反应。

4.开发详细步骤

①基本界面的绘制

public class PlaneClient extends JFrame{
   
	
	public PlaneClient() {
   
		/*绘制窗口*/
		//设置左上角那个图标
		this.setIconImage(Toolkit.getDefaultToolkit()
				.createImage(PlaneClient.class.getResource("../img/w_zdd.jpg")));
		this.setTitle("飞机大战");
		this.setSize(512,768);
		//尺寸固定不能被改变
		this.setResizable(false);
		//设置窗口相对于指定组件的位置。 null就是中央
		this.setLocationRelativeTo(null);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
	}	

②设置随机背景并使其移动

主要方法是用两个背景,一个正好在窗口内,一个在窗口上方,然后两个一起向下移动,当完全移出窗口时就跳到窗口正上方,循环这个过程。
背景类:

public class BackGround {
   
	 public  int  x1,y1,x2,y2;
	 public  BufferedImage  bg1,bg2;
	 //定义随机对象
	 Random  r=new Random();
	 
	 public  BackGround() {
   
		 int  i=r.nextInt(5)+1;
		 bg1=Tool.getImage("bg"+i+".jpg");
		 bg2=Tool.getImage("bg"+i+".jpg");
		 x1=y1=x2=0;
		 y2=-768;
	 }
	 
	 public  void  move1() {
   
		 y1+=8;
		 if(y1>=768) {
   
			 y1=-768;
		 }
	 }
	 
	 public  void  move2() {
   
		 y2+=8;
		 if(y2>=768) {
   
			 y2=-768;
		 }
	 } 
}

在PlaneClient中:

	//绘制画面
	public void paint(Graphics g) {
   
		g.drawImage(bg.bg1, bg.x1, bg.y1, this);
		g.drawImage(bg.bg2
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值