2015-05-15 3 views
1

Я очень новичок в Javascript, и то, что я собираюсь спросить, возможно, очень рудиментарно, но я застрял в проекте, и мне нужна помощь.Создание объектов и их хранение в массиве

В принципе, я делаю небольшой проект Javascript, где я хочу, чтобы там были некоторые враги. В начале будет 0 врагов, а с течением времени может быть создано больше врагов. Я думал, что всякий раз, когда создается враг, я должен создать его как объект, а затем хранить его в массиве, содержащем всех активных противников в игре. Затем, позже, я мог удалить врагов из массива, которые нужно было удалить.

Это функция, которая создает свои вражеские объекты:

function enemy(name, strength, rarity, estTime, success, remTime, Id){ 
 
\t this.name = name; 
 
\t this.strength = strength; 
 
\t this.rarity = rarity; 
 
\t this.estTime = estTime; 
 
\t this.success = success; 
 
\t this.remTime = remTime; 
 
\t this.Id = Id; 
 
}

Таким образом, я мог бы создать несколько врагов, как это:

var enemy1 = new enemy("Bob", 1, "Common", 100, 1, 30, 1) 
 
var enemy2 = new enemy("Cow", 22, "Rare", 50, 10, 40, 2) 
 
var enemy3 = new enemy("Pig", 333, "Epic", 25, 10, 50, 3)

Тогда я мог бы создать массив врагов, и кладу 3 врагов в этом массиве:

var enemies = []; 
 
enemies = [enemy1, enemy2, enemy3];

Все хорошо и денди, когда я делаю это вручную, но проблема возникает, когда я хотите попытаться получить код для автоматического создания еще нескольких врагов. Скажите, что я хотел создать противника каждый раз, когда пользователь нажал кнопку. Имя врага получит какое-то имя, силу, редкость, а следующий Id в строке (в этом случае используются 1, 2 и 3, так что следующим будет 4). я думал, что я мог сделать это что-то вроде этого, но это не работает:

enemy[enemies.length + 1] = new enemy("Dog", 444, "Epic", 13, 100, 60, 4); 
 
enemies.push(enemy + [enemies.length + 1]);

Я надеялся, что это будет создавать объект под названием «enemy4» с с именем, идентификатором и все, что я только что напечатал, а затем добавить этот объект в массив врагов.

Но это, очевидно, не работает. Я надеюсь, вы, ребята, понимаете проблему, и любая помощь очень ценится. Я понимаю, что я, вероятно, просто подхожу к этому все неправильно, и, вероятно, существует гораздо более простой способ сделать это.

Спасибо!

EDIT: Да, ответ был очень прост, получил его сейчас. Благодаря!

+0

'противника [enemies.length + 1] = новый враг ("Собака", 444, "Эпос", 13, 100, 60, 4);' это означает, что у вас есть массив под названием враг ... который вы не – Michelangelo

ответ

1
var enemies = [ 
    new enemy(/*params here*/), 
    new enemy(/*params here*/), 
    new enemy(/*params here*/), 
    new enemy(/*params here*/), 
    new enemy(/*params here*/) 
]; 

Позже:

enemies.push(
    new enemy(/*params here*/) 
); 
+2

О, вау, это действительно просто! Большое спасибо, я не могу поверить, что не понимал, что вы могли бы так сделать>. < – Greaseddog

Смежные вопросы