Shoot射击游戏项目四
1.需求分析
A: 将窗体大小设置为常量
B:画对象
想画对象先获取到图片,针对每一个对象都能获取到图片,获取到图片的行为是共有的,设计到父类中;----FlyingObject
每一个对象得到图片的行为都是不一样的,设计了一个抽象方法----getmage()
在不同状态下,得到不同的图片
状态:设计到父类中,设计常量:life;dead;remove
默认状态:state = life
获取图片的同时,需不需要判断当前状态,需要每一个对象都需要判断,设计到超类/父类中
而每一个对象判断的行为都是一样的,设计普通方法即可;—FlyingObject:isLife()/isDead()/isRemove()
C:在6个子类中重写getlmage()方法;
Sky:直接返回即可。
子弹Bullet:如果是存活的,返回iamages即可
如果是over的,删除即可;
英雄机:如果是存活的,返回images[0]/images[1]
小敌机:如果是存活的,返回images[0]
如果是over的,images[1]到images[4]进行切换,切换完毕,到了images[4]后进行删除;
D:得到不同状态下的图片,进行开始画出来;
画对象是共有的,所以设计到超类中;
每一个对象画的方式都是一样的,所以设计为【普通方法】;
E:测试,调用即可;
设计规则:
将所有子类所共有的行为和属性,可以设计到超类中;–抽共性
所有子类的行为都是不一样的,设计为普通方法;所学子类的行为都是不一样的,设计成抽象方法;
Shoot射击游戏项目五
1.需求分析
A:敌人入场
产生敌人:在shootmain类中nextone()
需要定时加载敌人-------enterAction()实现敌人入场
每400毫秒获取到敌人,扩容,将敌人添加到数组的最后一位
B: 子弹入场
英雄机发射子弹,Hero类中设计一个方法用来实现子弹的发射----shoot()
run()方法中,子弹的发射shootAction()
每400毫秒获取到子弹,扩容,将敌人添加到数组的最后一位
C:飞行物的移动
敌人的移动
子弹的移动
天空的移动
D: 英雄机随鼠标去移动
在hero中设计方法:movedTo()实现英雄机的移动
在ShootMain中建立监听机制,检测鼠标的移动时间
E: 删除越界的飞行物
在FlyingObject中设计一个方法outOfBounds()------检测是否越界
在run()方法中,写一个方法outOfboundsAction();------删除越界的飞行物
遍历敌人,子弹数组 ,如果对象不越界,那么将存放到不越界的数组中,将不越界的数组复制到敌人,子弹数组中。
F: 设计接口
击中小敌机+大敌机------得1分或3分-------enemy
击中蜜蜂