gpt4 book ai didi

actionscript-3 - OOP 中 C 风格结构的替换

转载 作者:行者123 更新时间:2023-12-01 22:45:06 24 4
gpt4 key购买 nike

我是一名学生,主要是电子背景,正在学习编程。我越深入,就越意识到我在这方面做得有多差。我正努力在 OO 设计方面做得更好。我一直在阅读的一件事是 Getters 和 Setters 的使用。

http://www.javaworld.com/javaworld/jw-09-2003/jw-0905-toolbox.html?page=1 http://typicalprogrammer.com/?p=23

现在我可以明白他们在这里提出的观点,但我仍然无法解决一些简单的问题。这让我想到了我的问题(最后)。我正在 AS3 中设置一个简单的塔防游戏作为学习练习。我希望敌人跟随路径点,所以我打算制作一个路径点数组,并将其作为 map 对象的属性。一个方法是成为一个具有 x 和 y 属性的对象(更像是一个结构)。现在我可以看出,这正是文章所反对的那种不良做法,但我似乎想不出更好的方法来做到这一点。非常感谢你们中一些有更多经验的人的帮助。

最佳答案

首先归纳;虽然您目前希望敌人跟随航路点,但在我看来,您所拥有的是 map 的特定实例,它决定了某物移动的位置。

让我们称敌人为“GameEntity”实例(可能是 MoveableGameEntity)。

你应该做的是告诉 map 管理相关的GameEntities,然后 map 可以保留这些对象的列表并根据需要移动它们。

代码片段。

interface  MoveableGameEntity
{
void positionNotify(Position new_postition);
};

public class Barbarian implements MoveableGameEntity
{
void positionNotify(Position new_postition)
{
// do something
}
};

// during initialisation.
map.Add(new Enemy("Barbarian 1"));
map.Add(new Enemy("Barbarian 2"));

//during map processing
Position new_position = new Position();
for (MoveableGameEntityList moveable : moveable_game_entity_items)
{
new_position = get_new_posistion(moveable);
item.moveTo(new_position);
moveable.positionNotify( new_position );
}

map 需要有一个方法 get_new_position(MoveableGameEntity ge) 来确定新的位置,而敌人只会通过 positionNotify 方法被告知他们的新位置。

MoveableGameEntityList 是一个将游戏实体及其位置联系在一起的对象。这样游戏实体不包含任何位置信息,这是由另一个对象管理的。

关于actionscript-3 - OOP 中 C 风格结构的替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2350129/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com