PDA

Просмотр полной версии : Загрузка чисел из txt файла в двумерный массив


realist
12.01.2012, 13:26
Товарищи, здравствуйте.

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

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

Значит задача такая - в тхт файлике (test.txt) лежит много-много цифр в таком формате

4,0,4,1|3,1,2,7|4,0,4,1
( я его сократил для удобства. Реально там цифр столько - координата Х и Y 22 игроков и мяча э то 46 цифр в одной строке. и строк таких штук 600. Итого 2500-3000 цифр).

Необходимо эти цифры загрузить в двумерный массив таким образом:
первое число - 1 элемент массива, через запятую второй элемент, и т.д. Прямая черта это переход на вторую строку массива.
Ну вот так вот:
4 0 4 1
3 1 2 7
4 0 4 1

и потом уже обращаясь к разным элементам этого массива я элементарно заставлю игроков двигаться.

Предполагаю, что нужно использовать loadVariables() - для загрузки данных, LoadVars.onLoad - для определения момента, когда все данные загрузятся, два метода String.split() для разбивания данных (по запятой и прямой черте).

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

mooncar
12.01.2012, 14:24
Массив стоит организовать иначе? Номер игрока, и ему соответствует пара x и y ? Разве нет?
(Кстати loadVariables() не нужно, нужно полностью использовать LoadVars, а для получения строки LoadVars.onData).

PS. То есть строка 4 0 4 1 5 6 7 8 рассматривается так - x и y первого игрока - это 4 и 0, второго - 4 и 1 и т.д. Так?
А зачем несколько строк? В чем игровой смысл?

lexa2000lexa
12.01.2012, 14:29
можно както вот так все это реализоватьvar my_lv:LoadVars = new LoadVars();
my_lv.onData = function(success:String) {
if(success){
arr = parse(success);
trace(arr[0]);
}
};
my_lv.load("test.txt");


function parse(str:String):Array {
var arr:Array = str.split("|");
for (var i:Number = 0; i<arr.length; i++) {
var array:Array = arr[i].split(",");
arr[i] = array;
}
return arr;
}

realist
12.01.2012, 18:16
PS. То есть строка 4 0 4 1 5 6 7 8 рассматривается так - x и y первого игрока - это 4 и 0, второго - 4 и 1 и т.д. Так?
А зачем несколько строк? В чем игровой смысл?

Именно так. 1 игрок в начале игры стоит в координате 4х0, второй игрок в 4х1 и т.д.
А вторая строка - это как раз положение этих игроков после какого-то действия (пас, удар).
То есть по-сути каждая строка массива это положение игроков в новый момент. и так все 90 минут.
Вот мне и нужно плавненько двигать игрока от одной его координаты к другой. И так все действия пройти.
Забивая координаты жёстко в код (просто её задавая в двумерном массиве) у меня всё получилось. А вот на моменте, когда надо грузить данных из вне я завис.