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

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)
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值