2013-02-09 2 views
0

до сих пор ив получил:Может ли этот 2-мерный массив работать?

var Items = new Array(5); // this array contains the items 
BodyPaint = new Array(1, 0, 1, 0, 0, 0, 0, 0, 0); // this array gives stats for the item 
WolfFur = new Array(3, 0, 1, 0, 0, 0, 0, 0, 0);  // ^^ 
BearFur = new Array(4, 0, 1, 0, 0, 0, 0, 0, 0);  // ^^ 
WolfSkin = new Array(6, 0, 0, 0, 0, 0, 0, 0, 0);  // ^^ 
BearSkin = new Array(7, 1, 0, 0, 0, 0, 0, 0, 0);  // ^^ 
бы

эту работу массива? я относительно новичок в программировании, и мой друг предположил, что это так, как я должен это делать, но я оглядывался вокруг, и везде рекомендует более сложный способ сделать это, что могло бы иметь смысл, если бы они это объяснили. , если этот массив будет работать, пожалуйста, скажите мне, как я бы получить доступ к значению во втором массиве до сих пор, чтобы получить доступ к 1-й стату для волка меха Айв получили это:

var example = Items.2.1 

бы это (^^) работать?

, и если это не сработает, сообщите мне, как это сделать, используя приведенные выше имена в примере и объясняя, почему вы делаете все, что вы делаете, и что оно делает. thx.

Im теперь использует объект, ив получил:

var Items = { 
    BodyPaint : new Array(1, 0, 1, 0, 0, 0, 0, 0, 0), 
    FurCloak : new Array(3, 0, 1, 0, 0, 0, 0, 0, 0), 
    WolfSkin : new Array(5, 0, 0, 0, 0, 0, 0, 0, 0)}; 

есть больше массивов, но я закончил его здесь, чтобы сэкономить место я получаю следующие ошибки: Неизвестный идентификатор: BodyPaint Неизвестный идентификатор: FurCloak Неизвестный идентификатор: WolfSkin и для всех моих других массивов , если я заменяю имя номером ошибки, но он не может быть хорошим для кода, и я действительно не хочу, чтобы мои объекты назывались здесь числами, я не буду b умеет знать, что есть

ответ

0

У вас есть только несколько 1D массивов, вы должны объединить их в 2D, как:

var Items = new Array 
BodyPaint = new Array(1, 0, 1, 0, 0, 0, 0, 0, 0); 
WolfFur = new Array(3, 0, 1, 0, 0, 0, 0, 0, 0); 
BearFur = new Array(4, 0, 1, 0, 0, 0, 0, 0, 0); 
WolfSkin = new Array(6, 0, 0, 0, 0, 0, 0, 0, 0); 
BearSkin = new Array(7, 1, 0, 0, 0, 0, 0, 0, 0); 

Items[0] = BodyPaint; 

alert(Items[0][2]); 

В этом случае у вас есть 2D, и предупредительными например, вы можете получить доступ к вещам

2

No. Это это не то, как вы получаете значения из массива.

Items[2][1] будет работать, если ваш массив был примерно таким;

var BodyPaint = new Array(1, 0, 1, 0, 0, 0, 0, 0, 0); // this array gives stats for the item 
var WolfFur = new Array(3, 0, 1, 0, 0, 0, 0, 0, 0);  // ^^ 
var BearFur = new Array(4, 0, 1, 0, 0, 0, 0, 0, 0);  // ^^ 
var WolfSkin = new Array(6, 0, 0, 0, 0, 0, 0, 0, 0);  // ^^ 
var BearSkin = new Array(7, 1, 0, 0, 0, 0, 0, 0, 0);  // ^^ 
Items = [BodyPaint, WolfFur, BearFur, WolfSkin, BearSkin]; 

Items[2][1] возвратит 0.


Edit: Вы можете быть заинтересованы в использовании объекта тоже.

var Items = { 
    BodyPaint: new Array(1, 0, 1, 0, 0, 0, 0, 0, 0), 
    WolfFur: new Array(3, 0, 1, 0, 0, 0, 0, 0, 0), 
    BearFur: new Array(4, 0, 1, 0, 0, 0, 0, 0, 0), 
    WolfSkin: new Array(6, 0, 0, 0, 0, 0, 0, 0, 0), 
    BearSkin: new Array(7, 1, 0, 0, 0, 0, 0, 0, 0) 
} 

Это позволит вам написать код так:

Items.BearFur[1] вернется 0 и такая же, как Items[2][1] выше.

+0

thx для примера объектов, я мог бы использовать его, но atm мои объекты называются идентификаторами havind, поэтому я думаю, что плохо использовать массив, и почему элементы [2] [1] возвращают 0? начинает ли подсчет массива в нуле? так что BodyPaint будет 0? извините за noob вопрос – empire2202

+0

Yep. Массивы начинаются с нуля почти на всех языках программирования. –

+0

использовал объект, но я получаю сообщение об ошибке, указывающее мне добавить точку с запятой в конце после}, когда я делаю это, возникает множество ошибок (Unknow identifier: «BodyPaint») для каждого отдельного массива, но вместо этого я заменяю имя номер ошибки для этого массива, есть ли способ исправить? это нормально использовать числа? – empire2202

0

Это не сработает, потому что вы не связываете элементы каким-либо образом с любым из других массивов. Вы должны написать:

var BodyPaint = new Array(1, 0, 1, 0, 0, 0, 0, 0, 0); 
var WolfFur = new Array(3, 0, 1, 0, 0, 0, 0, 0, 0); 
var BearFur = new Array(4, 0, 1, 0, 0, 0, 0, 0, 0); 
var WolfSkin = new Array(6, 0, 0, 0, 0, 0, 0, 0, 0); 
var BearSkin = new Array(7, 1, 0, 0, 0, 0, 0, 0, 0); 
var Items = new Array(BodyPaint, WolfFur, BearFur, WolfSkin, BearSkin); 

Тогда это будет работать:

var example = Items[2][1]; 

Я бы рекомендовал использовать JavaScript Object вместо массивов.В формате JSON, это было бы:

var Items = { 
    BodyPaint : Array(1, 0, 1, 0, 0, 0, 0, 0, 0), 
    WolfFur : new Array(3, 0, 1, 0, 0, 0, 0, 0, 0), 
    BearFur : new Array(4, 0, 1, 0, 0, 0, 0, 0, 0), 
    WolfSkin : new Array(6, 0, 0, 0, 0, 0, 0, 0, 0), 
    BearSkin : new Array(7, 1, 0, 0, 0, 0, 0, 0, 0)}; 

Вы можете добавить новые элементы, как это:

Items.AnotherItem = new Array(8, 0, 0, 0, 0, 0, 0, 0, 0); 

Или:

Items['AnotherItem'] = new Array(8, 0, 0, 0, 0, 0, 0, 0, 0); 

И получить свойство, как:

JavaScript Объекты очень гибкие и я рекомендую вам потратить некоторое время, чтобы действительно узнать их.

+0

ok, thx 4 все ваши быстрые ответы, я собираюсь использовать эту систему для хранения всех элементов в моем rpg и как они изменяют вашу статистику. вы думаете, что использование объекта мне подойдет лучше? если это так, пожалуйста, направьте меня в учебник по продвижению объектов. спасибо. – empire2202

+0

thx для ur help, ive использовал теперь объект, как показано выше, но он хочет, чтобы я положил точку с запятой после второй фигурной скобки}, а когда я ее вставляю, она вызывает множество ошибок, говорящих Неизвестный идентификатор: «BodyPaint», Неизвестный идентификатор: «WolfFur» и т. Д. Для всех массивов – empire2202

+0

Мои извинения. Кажется, я сделал несколько опечаток. Я отредактировал ответ, чтобы исправить – neelsg

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