这可能是一个简单答案的基本问题,但我似乎无法围绕它背后的逻辑。
我将从一个着名的Java游戏Minecraft的一个简单例子开始。玩家被放入一个世界,并被允许与不同的对象进行交互。说玩家想要木头。他看到一棵树,走过去,把它砍下来。他看到另一棵树,走过去,也做同样的事。他可以按照自己的意愿多次执行此操作,如果玩家探索得足够多,游戏将加载更多的树木。但这是怎么做到的?换句话说,一个程序如何制作一个基本上无穷无尽的树,玩家将永远能够与之交互?
我想在代码中有一个树类。但显然,程序员没有编写不同的类实例,例如tree1,tree2等,因为他不知道游戏中需要加载多少棵树。那么程序如何做到这一点却没有被告知将会有多少棵树?
换句话说,我不明白程序如何自己决定制作x个类实例而不是程序员必须手动编写他/她自己的类实例。游戏开发者和其他程序员如何做到这一点?
谢谢。
考虑我们如何生成随机游戏地图。假设地图的环境将在森林中。什么样的物体是森林的一部分?
我们从基本的100x100单位游戏地图开始。我们将让程序生成10到30之间的多个树,并且还生成树的X和Y坐标,条件是没有树可以具有相同的X和Y坐标。我们对其他对象也这样做。
现在我们告诉程序加载具有所有这些对象的游戏地图。完成。
考虑一个简单的网格,网格上的每个位置都可以被一个对象占据。物体可以是树,岩石或生物。在这个世界上,我将地图上的区域定义为“可增长”。在这些领域,如果没有某些东西,就会有所增长。游戏将有一组转弯。在每个回合中,我运行一个例程来找到所有可生长的斑点,如果没有生长的东西那么随机确定是否应该发芽。这样,如果有人砍下一棵树,该地点可以在游戏后期萌芽一棵新树。
也许游戏更复杂,简单的网格也不够好。无论如何,游戏必须以某种方式跟踪所有对象。