一、需要些什么东西?
1.飞机:
1.1-玩家飞机-属性:
坐标(x,y),大小(windth,height),速度(speed),
血量(hp),最大血量(maxhp),图片素材(image),绘制索引(index-maxindex)
1.2-敌机
2.子弹:攻击力
3.道具
二、步骤:
1.画界面:游戏界面
2.创画板
2.1-画地图--加载图片:
2.2.1-创建集合--键对值!!!!(文件名作为Key)
注意:在程序开始之前加载图片:使用static
public static HashMap TuPian
=new HashMap();
2.2.2-给集合赋值--静态代码块:在程序运行之前就有了赋值
static{
}
2.2.3--创建一个包:用来存放素材
2.2.4--获得项目的素材资源:
static{//静态代码块
URI u=A.class.getResource("/com/image").toURI();//获得项目的素材
}
2.2.5--获得所有文件--遍历所有文件--找出符合要求的文件--读取你要找的那个文件
2.2.6--图片索引
2.2-画飞机--1.工厂模式:创建飞机--获取飞机图片--为飞机赋属性--返回飞机
2.定义飞机--给飞机赋值(在画板前给飞机赋值)--先放飞机图片-截图-索引
3.飞机移动(键盘事件),放到飞机共同的属性里!!!--利用键盘的状态去改变线程--为每个状态设置一个布尔类型,然后根据布尔的值去判断啊--去线程里进行改变。
2.3-画敌机--1.增加属性:方向。
2.因为敌机出现的数量很多,所以用集合保存;
3.定义敌机集合和敌机间隔;
4.去线程画敌机:创一个敌机的方法-敌机数量-工厂里创建敌机;
5.添加判断敌机是否出界的方法;使它出界。
6.出界以后吧它清空
7.判断不为空时画敌机
8.在位置为空的时候,重新放敌机
套路:1-怎么产生?--工厂模式。每隔一段时间产生,集合
2-怎么操作?线程。
移动-先拿出这个飞机
3-怎么绘制?画板里画敌机
2.4-子弹:1-怎么产生子弹?类型--飞机类添加一个子弹类的属性-子弹集合-循环得到子弹的方法(线程)-产生玩家子弹(工厂)-去产生玩家子弹-得到子弹的集合
2-怎么操作?子弹的移动
3-怎么绘制?绘制子弹
三,里程:地图的移动
1-定义里程
2-里程的变化:在线程里改变
1-确定画哪几张地图
四,画爆炸
检测子弹是否碰到敌机:两个矩形区域的碰撞检测--为子弹和敌机创建一个获得矩形区域的方法--碰撞,死亡状态--子弹:画爆炸图片;敌机:改变索引;敌机绘制:截图
五,加声音
多线程 创声音的集合--满足条件的声频文件--在需要的文件那里加入声音。
六:画血槽
在绘制敌机的时候吧血槽和血量画进去--在碰撞的时候,让血量减少
七,导弹数量控制
八,跟踪弹
定义跟踪弹的属性--为跟踪弹做移动操作(三角函数)
/**
* @param 画方块
*/
private void DrawFankuai(Graphics g) {
int[][]arr=fk.DZT();
for (int i = 0; i < arr.length; i++)
for (int j = 0; j < arr[i].length; j++)
if (arr[i][j]==1) {
// g.fillRect((C.WINDOWS_WIDTH - 30 * 15) / 2 + (j+fk.getX()) * 30, (fk.getY()+i )* 30, 30, 30);
// g.fillRect( ( j+fk.getX() ) * C.Fk_Size + 260, ( i+fk.getY() ) * C.Fk_Size + 45, C.Fk_Size, C.Fk_Size);
// g.fillRect((C.WINDOWS_WIDTH -30* 15) / 2 + i * 30, 0 + j * 30, 30, C.Fk_Size);
// g.fillRect( j * 30+350, i * 30, 30, 30);//从最中间下落
g.fillRect( (fk.getX()+j )* 30+230, (fk.getY()+i) * 30, 30, 30);//从最中间下落,且画出了下落的轨迹
}
}