Ответ: id клетки
Для карты нужно)
Local stream:TStream = WriteStream("map.n") Local LevMap:Int[] =[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, .. 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, .. 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, .. 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, .. 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, .. 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, .. 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, .. 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, .. 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, .. 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] Local mwidth = 10 stream.WriteInt(mheight) stream.WriteInt(mwidth) For y = 0 To mwidth - 1 For x=0 to mheight-1 stream.WriteByte(levmap[x, y]) Next Next К сожалению не работает( |
Ответ: id клетки
Конечно не будет работать, я псевдо код написал.. :lol:
Исходя из вопроса, а теперь более убеждённый ответом, рекомендую, ознакомиться с базовыми знаниями самого языка, а затем отдельно, с функциями по работе с файлами (и потоками). |
Ответ: id клетки
хД я базовые знаю)
тьфу мне и не понятно как записать не в строчку а в столбик) и так у меня есть массив 10 на 10 он заполнен никими цифрами мне надо записать чтоб было на каждой строчке по 10 цифр из массива кажется понял пока сообщение писал) |
Ответ: id клетки
На самом деле просто, на расшифровывать будет не просто.
Записывается функцией WriteLine, но строку, нужно сделать как стринг. При чтении, тебе придётся этот стринг разбивать, и переносить в числа, впихивая в массив. Поэтому я предложил нормальный вариант выше. |
Ответ: id клетки
П.с похоже базовые не знаю(
смотря что под ними понимать? |
Ответ: id клетки
Работа с файлами - это база :)
Относительно типов данных, и как они хранятся в файлах, и что из себя представляют. Что такое строка в файле на самом деле. И как строки реализованы в самих языках программирования. Процессор не умеет хранить строк ;) Строка - это массив, содержащий набор char (символ по ASCII, номер символа от 0 до 256). В файле, в котором записана строка, идёт вроде подобного: сперва записывается длина строки (int число), затем считываются int'ы несколько раз (исходя из длины строки), и вводятся в массив, по очерёдности, далее, функции работы со строками, и вообще как таковой строка, в BlitzMax, очень удобно реализована. Поэтому если узнать суть того как она работает, и как хранятся данные в файлах, ты избавишься от идеи, хранить строками. Это удобно если нужен доступ к файлу, из блокнота, но не практично, ни по скорости загрузки, ни по сохранности данных, т.к. блокнотом можно будет менять всё. А если записывать не строками, тогда всё будет каракулями в блокноте, и информация будет более сохранна, а скорость загрузки и удобства тоже вырастут многозначно. Попробуй с простой задачки: создай массив int'ов длинной в 10, запиши в файл, длину массива, и затем запиши все значения, по порядку. Далее, напиши загрузчик, который прочтёт файл, вычтет длину предполагаемого массива, и создаст его, заполнив данными вычтенными из файла. И естественно на проверку - в дебаглог выведи всё, чтобы убедиться если всё правильно. :) Реализовав это, уже многое будет понятно, как с файлами работать. |
Ответ: id клетки
Может кому понадобятся)
Function readmap(file_in$) Local file = ReadFile(file_in) Local dim:Int[] Local dlin = ReadInt(file) Print dlin For i = 0 To dlin - 1 dim[i] = ReadInt(file) Print dim[i] Next For b:Int = EachIn dim Print b Next CloseFile(file) End Function Function writemap(file_out$,dlina:int,array:int[]) Local dim:Int[] =array Local file = WriteFile(file_out$) Local dlin = dlina WriteInt(file, dlin) For i = 0 To dlin - 1 WriteInt(file, dim[i]) Next CloseFile(file) End Function что-то не понимаю как можно эти ф-ии,которые я написал приминить к карте( |
Ответ: id клетки
Код:
Function readmap(file_in$) Код:
Function writemap(file_out$,width%,height%,array:int[]) Вот 2д массив тебе сохраняется, и загружается. |
Ответ: id клетки
Спасибо!Но странно у меня не работает может я не правильно массив создаю.
|
Ответ: id клетки
Global LevMap:Int[] =[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ..
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, .. 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, .. 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, .. 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, .. 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, .. 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, .. 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, .. 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, .. 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] writemap("d.ng", 10, 10, LevMap) readmap("d.ng") Error:Incorect array dimension Я так понимаю ,что я не указал второе измерение ,но не пойму где? получается что Levmap 1d массив. как его преобразовать в 2d? |
Ответ: id клетки
Код:
Global LevMap:Int[10,10] |
Ответ: id клетки
Мне не надо делать карту автоматом
levmap надо записать) |
Ответ: id клетки
Для этого делается редактор :)
Можно использовать DefData, чтобы "записывать" карту. |
Ответ: id клетки
Ясно,спасибо!
П,С все вопросы выше касались редактора,жаль сразу про defdata не сказал |
Ответ: id клетки
а есть какое нибудь другое решение?(если не Defdata)
|
Часовой пояс GMT +4, время: 04:52. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot