用Java写一款雷霆战机游戏的思路

一、需要些什么东西?
   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);//从最中间下落,且画出了下落的轨迹
                        
                     }
        }

你可能感兴趣的:(用Java写一款雷霆战机游戏的思路)