Log 2011.8.11

昨天在回顾 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 类就差远了。

TankII 1.2 - "Big Map"

我承认版本号没什么用,仅仅用来标识一个新的版本而已。这次的更新是自#十天游戏设计#以来的一些小更新了。尽管对于我来说是大更新……

简介:

基于 Java2D 写的坦克小游戏。1.0 的源码可以在 http://www.box.net/shared/r6rusgtymqqn3aaja8tc 处下载。需要 JRE 6.0 以上运行(因为仅仅测试过 JRE 6.0 上的运行情况)。

Enjoy playing~ :-)

更新内容:

  • 增加大地图模式。呃,看不了全部地图,增加了一些未知的成分;
  • 机器人探测的一些修改,只有在当前可视情况下才会攻击玩家;
  • 玩家坦克的射击角度更精确。

嗯,更新内容基本上就是上面这些了。但这次更新似乎不够优化,游戏速度反而有点慢了……

下载:
http://www.boxcn.net/shared/1v7lhfdfumj08sxoktsl