试图为游戏添加一些逻辑
Trying to add a bit logic to game
我有格斗游戏,想增加一些互动,一些能力。这是一个好方法吗?构造函数和所有能力的列表,或者我错过了一些更简单的方法?
var abilityConstructor = function(name, desc, icon, target, param, rate, duration) {
this.name = name; // Name of ability
this.desc = desc; // Ability's description
this.icon = icon; // Ability's icon
this.target = target; // If for self usage - 0, if for enemy - 1
this.param = param; // Which parameter is influenced (health - 0, damage - 1, speed - 2, missing rate - 3)
this.rate = rate; // Factor for dealing (ability's strength)
this.duration = duration; // Spells' duration (current round - 1, two rounds - 2, three rounds - 3)
}
// List of available rates for abilities
var lowRate = 0.1;
var midRate = 0.25;
var highRate = 0.5;
var testAbility = new abilityConstructor('Health reduction', 'Reduces health of the opponent for 2 rounds', 'icon_path_here', 1, 0, midRate, 2);
好吧,首先,按照惯例,构造函数最好大写,因为这有助于识别它们,而且通常也不会附加构造函数这个词。
此外,这主要是一种偏好,但当您开始有很多参数时,我更喜欢使用单个data
或options
对象作为参数。
最后,如果您只是在配置上进行复制,您可以通过在配置键上循环来完成。
function Ability(data) {
for (var k in data) {
this[k] = data;
}
}
然而,您可能无法进行太多的泛化,因此您可以像以前那样手动复制值,而不是循环。
function Ability(data) {
this.name = data.name;
//...
}
以下是如何调用构造函数:
var testAbility = new Ability({
name: 'Health reduction',
...
});
编辑:
这种结构的优点是,你不必记住参数的顺序,当一些参数可能是可选的时,它也简化了你的生活。您可以简单地省略数据对象中的键,而不是传递未定义的键。这种模式在几乎所有的JavaScript库中都有使用,包括jQuery。但是,由于每次都必须创建一个数据对象,因此您将略微牺牲性能。如果性能是一个真正的问题,我强烈建议您尝试这种模式,并放弃最初的解决方案。
相关文章:
- 通过PHP将单词添加到游戏中
- 为 HTML5 游戏添加游戏加载程序
- 向 html5 画布游戏添加计时器
- 为基于Canvas和jQuery的游戏添加一个结束屏幕
- 将任务添加到我的游戏中
- 如何将碰撞检测添加到我的 JavaScript 游戏中
- 在 Unity 5.3 中向新实例化的游戏对象添加强制时出现问题
- 试图为游戏添加一些逻辑
- 如何“;添加“;现有JavaScript编程游戏的并发性
- 在javascript游戏中添加暂停函数时遇到问题
- 为简单的HTML5游戏添加按钮
- 如何添加图片到石头,剪刀游戏
- 在我的Javascript数字猜谜游戏中添加一个猜谜循环
- 通过Javascript(Battleships游戏)将7x7基于网格的tabla数据标签添加到表中
- 如何处理添加游戏玩家插座房间与socket.io
- 如何在游戏中添加计时器?
- 石头剪刀布Javascript游戏添加选择限制
- 如何在简单的贪吃蛇游戏中添加结束画面?
- 如何添加分数的javascript游戏
- 在这个JS纸牌游戏中添加一个纸牌翻转动画