多用户RPG的数据库

时间:2012-04-12 09:48:07

标签: actionscript-3

我正在制作一个基于回合制Flash的RPG来练习OOP(谁没有:P)我对武器,物品以及所有Jazz都有很好的设置。虽然我正在考虑如何制作我的角色。

目前,我有一个playerenemy类,可以扩展battler类。

     Battler
      /  \
     /    \
 Player  Enemy

我的player类有一些初始化播放器本身的功能,添加图形等等。我的party类调用player,传递一个类似的参数:player.setup(1),其中1是playerID。

澄清这是我的玩家伪代码:

{   setup(player_id)
    player =  **??????player_id??????????**
    name = player.name
    character_name = player.character_name
    character_index = player.character_index
    weapon_id = player.returnWeapon
 /*---------
    armor1_id = player.returnArmor //increase for other body parts
 ----------*/
    level = player.level
}

我的问题,或更多的问题是我将如何存储播放器数据。我需要有很多玩家,因为这是一个聚会中有很多玩家的游戏。

我如何实际使用player.returnArmor之类的内容?因为当我这样做时它只是调用一个函数,并且它不知道那个玩家是谁(我想我可以使用参数,比如player.returnArmor(player),但我认为有更好的方法来做到这一点。

欢迎使用任何语言,但只是因为您不使用汇编语言作为示例;),C ++,Actionscript 3,Ruby和/或Java都可以。请帮我!提前谢谢。

2 个答案:

答案 0 :(得分:2)

在AS3中,您可以拥有静态和实例功能。如果你打电话给player.returnarmor(),你就是在调用静态函数。你想拥有一个实例函数,并为你想要的装甲值的玩家实例调用它。

如果你有几个(< 4)字符,你可以为每个字符设置命名变量,但是超过3或4,你应该只有一个数组或其他容器。

var mainProtagonist:player;
var spunkySidekick:player;
var whiteMage:player;
var players:Array = new Array();
players.push(mainProtagonist);
players.push(spunkySidekick);
players.push(whiteMage);

然后获得一个玩家的盔甲......我们会说你想要那个精力充沛的搭档盔甲:

players[1].returnarmor();
// or
spunkySidekick.returnarmor();

你可能拥有一个存在的所有玩家阵列,以及另一个阵列,当在战斗中使用时,只有当前派对/战斗中的玩家。这样你的敌人可以随机瞄准玩家,而且只能从目前正在战斗中的玩家那里瞄准。

答案 1 :(得分:2)

可能值得考虑使用实体系统,其中游戏中的每个项目都被视为可以单独管理的无关属性(位置,速度,位图/网格)的集合。这往往会使硬问题变得更容易(可扩展性,同步性,存储性)。

相关问题