情况是: 敌人tank 在行走过程中如何保证不和别的坦克相碰撞,
         目前,我是用该坦克逐一的去和panel上所有的坦克进行分析,这个方法自己觉得不好,
         
         有没有这种函数,获取panel上 谋个位置此时此刻的颜色,通过 与 原先的背景色相比较,就可以知道该位置上
         有没有东西甚至有没有tank,哈哈。这样就可以很方便的了解一个坦克周围的环境
         help

解决方案 »

  1.   

    试过做墙的类了没?如果有··那当两个tank的距离到一定近的时候··将任意一方强制转换成墙类的对象··也就是静止··待一方离去后再变回来··
      

  2.   

    到网上搜一下 贪吃蛇 俄罗斯 方块小游戏的算法 或者 下载传智博客关于小游戏视频 你就明白了.简单的建模是使用不同的二位数组存贮tank和障碍物的位置(也可放在一个数组,但就不是最简单的了);复杂的建你可以找开源的2d游戏引擎,这些引擎建模 算法比较复杂,这些引擎封装了碰撞检测的方法但不适合这类小游戏;欢迎你访问我的博客: http://blog.csdn.net/GysGogo
      

  3.   


    目前,我的做法是:  
        面板上(panel)所有的坦克用一个Vector来存储,然后要避免坦克相撞,都要一个for循环来逐个判断两个坦克之间会不会相撞(通过坐标),这方法肯定是要封装。
         可是问题出现了,如果很有很多个坦克,拿这个不是很费时(n*n 复杂度)》。。所以我想是不是有方法可以通过
       知道该坦克的四周的颜色来判断(n复杂度)???????????、
        哈哈!!!谢谢
      

  4.   

    不要使用panel Swing是重量级组件 Panel是轻量级组件 但这是相对的 自己可以设计一个类 有个draw方法就行 相自己的类 panel是重量级组件 消耗大量的内存 所以每个游戏都有自己的引擎,类库 而不是使用封装好的类库
      

  5.   

    试试这么处理,获取主战坦克和敌人坦克在panel上所占的矩形区域,如果两个两个矩形区域产生了一个交集的话就会触发碰撞处理的事件,各自回到上一步移动的位置,或者静止此一步//这个方法用于获取一个坦克所占的矩形区域
    public Rectangle getRect(){

    return new Rectangle(x,y,WIDTH,HEIGHT); 
    }//下边这个语句用于判断这两个区域是否产生了一个交集
    主战坦克.getRect().intersects(敌人坦克.getRect())
      

  6.   


    是个方法  不过就是效率,还是(n*n) 有没有(n*k,k是常数)???
      

  7.   

    目前,我的做法是:   
      面板上(panel)所有的坦克用一个Vector来存储,然后要避免坦克相撞,都要一个for循环来逐个判断两个坦克之间会不会相撞(通过坐标),这方法肯定是要封装。
      可是问题出现了,如果很有很多个坦克,拿这个不是很费时(n*n 复杂度)》。。所以我想是不是有方法可以通过
      知道该坦克的四周的颜色来判断(n复杂度)???????????、
      哈哈!!!谢谢
    这个想法和我我的差不多那