首先我们新创建一个世界,方法参考:Greenfoot【java学习】-创建新世界。

创建好新的世界后,如图所示

Greenfoot 的基本功能和使用方法之调整网格的尺寸

然后双击右侧世界类下的“MyWorld”,来看一下源代码

Greenfoot 的基本功能和使用方法之调整网格的尺寸

super(600, 400, 1);

表示网格数量为600X400,每个网格是1×1像素

游戏世界的网格划分有两种基本情况,一种情况是:每个游戏角色对象占据一个大网格 (即每个网格要能够容纳一个完整的角色);另一种情况是:每个游戏角色需要占据多个小网格。通过调用 super 语句,可以在父类(World 类)的构造方法中指定游戏世界的大小和网格的大小。例如修改程序,执行以下语句:

super(20, 20, 20);

Greenfoot 的基本功能和使用方法之调整网格的尺寸

这将会得到一个 20 格宽、20 格高,每个网格尺寸为 20×20 像素的一个游戏世界。World 类构造方法的完整形式为:

public World(int worldWidth, int worldHeight, int cellSize)

需要注意的是,所有游戏角色在世界中的定位都是基于网格,不能把游戏角色放置在网格之间 (尽管一个角色图像可能比网格大,但那也只是覆盖了多个网格)。

Greenfoot 的基本功能和使用方法之调整网格的尺寸

游戏世界网格的大小决定着游戏角色运动的平滑性及碰撞检测的方便性。具体来说,若将角色限制在大网格中往往会造成不连续的运动效果。例如“树袋熊”

游戏实例使用了尺寸为 60×60 像素的网格,这样一来,每当树袋熊向前移动一步,它们的图像就会在屏幕上移动 60 个像素。另一方面,在各种角色能完全被网格容纳的世界中,某种角色检测同一个位置中的其它角色是很简单的,因为这时不需要利用图像去检测,而只需查看同一个网格中是否存在其它角色。当然,检测邻近网格中的角色也很容易。