微信打飞机--Java版(二)

2014-11-24 03:00:35 · 作者: · 浏览: 2
ffer.getGraphics(); paint(gBuffer);//先绘制在缓冲中 g.drawImage(buffer, 0, 0, null); } class MainThread implements Runnable{ MainFrame mf = null; public MainThread(MainFrame mf) { this.mf = mf; } @Override public void run() { while(true){ try{ Thread.sleep(50); mf.update(mf.getGraphics()); }catch(Exception e){ e.printStackTrace(); } } } } public static void main(String[] args) { MainFrame m = new MainFrame(); } }

2 打飞机逻辑

好了,能自己实现上面这段就说明:你已经会打飞机啦!大笑

下面教你怎么打更comfortable

继续刚才的,既然我们可以把飞机的逻辑业务都抽取出来,那么这个Frame类我们就不去打扰了,我们独立出一个Controller的类,该类负责游戏业务控制,比如我方飞机的对象持有,敌方一群飞机对象持有(用什么数据结构?当然就用链表呗。。)该逻辑也就是控制分数,还有游戏开始,暂停以及重新开始一些外围以及游戏运行的整体逻辑。

我把Controller的onDraw()函数贴出来,大家就清楚这个游戏逻辑

定期安排敌人飞机出现

定期安排药丸出现

刷新我们飞机位置 状态

刷新敌人飞机位置 状态

刷新爆炸动画

刷新药丸个数显示

刷新分数

public void onDraw(Graphics g) {
		///////游戏逻辑/////////////
		//schedular produce plane-other
		//定期安排出飞机,出飞机的类型有飞机工厂来生成
		if((++readyOther)%10==0){
			readyOther = 0;
			Random rand = new Random();
			OtherPlaneFactory.getPlanes(rand.nextInt(2), others, this);
		}
		//schedular produce equipment
		//定期安排药丸出现  其实这里也可以弄一个药丸工厂
		if((++readyPowerful)%600==0){
			Random rand = new Random();
			if(rand.nextBoolean())
				equipments.add(new PowerEquipment(rand.nextInt(MainFrame.FRAME_WIDIH), 0, this));
			else
				equipments.add(new BombEquipment(rand.nextInt(MainFrame.FRAME_WIDIH), 0, this));
		}
		
		/////下面就是把逻辑分配给这些游戏角色了
		Color oldColor = g.getColor();
		
		myPlane.onDraw(g);  //我方飞机逻辑控制
		for(int i=0;i
  
   

3 打飞机的角色

主要的还是角色的设置才是学习java的途径

如何把java的一些设计原则使用的好就在这里。

接口的封装和字符类的继承,我觉得最好能用接口就使用接口,还有功能不能定的太死,最好能用插拔接口的形式。

例如某个物体是需要能运动的。我们不需要对所有角色都继承一个有onMove()的父类,而是可以用实现了Moveable这个接口。这种灵活性比使用类好的多。当然我实现上也有许多缺陷,仅供参考:下载地址

http://download.csdn.net/detail/ylf13/6870955

还在弄git。。不太会用,传上去后再给出地址下载哈