Log 2011.8.11

Plux posted @ 2011年8月11日 13:23 in Java with tags TankII Java2D java , 1400 阅读

昨天在回顾 POJ 3349 的时候,想起了散列表(Hash Table)的数据结构。提醒了我在 TankII 的对象碰撞的时候应该处理的一些事情,对需要检测的对象先进行粗略的分类然后再继续判断,这样的话,对 TankII 设计里可以减少实际碰撞检测的时候。这需要的就是一个散列函数了。这个散列函数应该满足的是把几个顶点坐标处理成一个数,如果所有坦克都可以通过这个数判断粗略分出可能造成碰撞的坦克的话,游戏的刷新间隔应该可以缩减到更短,有利于其他额外的绘制处理。但这个散列函数也不是容易找的。也只是我的一个很原始的想法而已。而且,散列表应该是对应静态分类(储存的对象基本是确定的)的,而我所需要的是动态分类,也是一个难题,还在探索中……

现在总算是对数据结构有些初始的理解了。

还有就是对 Java2D 的一些不满,似乎 Java2D 中的结构都是静止的结构,没有考虑到这个对象用作动画的一部分?如 Rectangle2D 这样的对象,虽然提供了 getCenterX() getCenterY() 这样的方法,但对 Rectangle2D 内顶点的修改却很少涉及。但看 OpenJDK 中 Rectangle2D 的实现,其实是可以增加额外的修改图像的方法的。而且碰撞检测也是基于变量的,这样修改也不会造成性能的问题吧?只有一个不方便的 setRect(doulbe x, double y, double w, double h) 来进行整体修改。当然,也是一个解决办法。相比起 Pygame 的 Rect 类就差远了。


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter