|
23.01.2010, 16:44
|
#16
|
Разработчик
Регистрация: 28.02.2009
Сообщений: 434
Написано 44 полезных сообщений (для 96 пользователей)
|
Ответ: 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
К сожалению не работает(
|
(Offline)
|
|
23.01.2010, 17:06
|
#17
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: id клетки
Конечно не будет работать, я псевдо код написал..
Исходя из вопроса, а теперь более убеждённый ответом, рекомендую, ознакомиться с базовыми знаниями самого языка, а затем отдельно, с функциями по работе с файлами (и потоками).
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
23.01.2010, 17:10
|
#18
|
Разработчик
Регистрация: 28.02.2009
Сообщений: 434
Написано 44 полезных сообщений (для 96 пользователей)
|
Ответ: id клетки
хД я базовые знаю)
тьфу мне и не понятно как записать не в строчку а в столбик)
и так у меня есть массив 10 на 10
он заполнен никими цифрами
мне надо записать чтоб было
на каждой строчке по 10 цифр из массива
кажется понял пока сообщение писал)
|
(Offline)
|
|
23.01.2010, 17:14
|
#19
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: id клетки
На самом деле просто, на расшифровывать будет не просто.
Записывается функцией WriteLine, но строку, нужно сделать как стринг.
При чтении, тебе придётся этот стринг разбивать, и переносить в числа, впихивая в массив.
Поэтому я предложил нормальный вариант выше.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
23.01.2010, 17:20
|
#20
|
Разработчик
Регистрация: 28.02.2009
Сообщений: 434
Написано 44 полезных сообщений (для 96 пользователей)
|
Ответ: id клетки
П.с похоже базовые не знаю(
смотря что под ними понимать?
|
(Offline)
|
|
23.01.2010, 17:48
|
#21
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: id клетки
Работа с файлами - это база
Относительно типов данных, и как они хранятся в файлах, и что из себя представляют. Что такое строка в файле на самом деле. И как строки реализованы в самих языках программирования. Процессор не умеет хранить строк
Строка - это массив, содержащий набор char (символ по ASCII, номер символа от 0 до 256). В файле, в котором записана строка, идёт вроде подобного: сперва записывается длина строки (int число), затем считываются int'ы несколько раз (исходя из длины строки), и вводятся в массив, по очерёдности, далее, функции работы со строками, и вообще как таковой строка, в BlitzMax, очень удобно реализована. Поэтому если узнать суть того как она работает, и как хранятся данные в файлах, ты избавишься от идеи, хранить строками. Это удобно если нужен доступ к файлу, из блокнота, но не практично, ни по скорости загрузки, ни по сохранности данных, т.к. блокнотом можно будет менять всё.
А если записывать не строками, тогда всё будет каракулями в блокноте, и информация будет более сохранна, а скорость загрузки и удобства тоже вырастут многозначно.
Попробуй с простой задачки: создай массив int'ов длинной в 10, запиши в файл, длину массива, и затем запиши все значения, по порядку.
Далее, напиши загрузчик, который прочтёт файл, вычтет длину предполагаемого массива, и создаст его, заполнив данными вычтенными из файла. И естественно на проверку - в дебаглог выведи всё, чтобы убедиться если всё правильно. Реализовав это, уже многое будет понятно, как с файлами работать.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
23.01.2010, 18:11
|
#22
|
Разработчик
Регистрация: 28.02.2009
Сообщений: 434
Написано 44 полезных сообщений (для 96 пользователей)
|
Ответ: 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
что-то не понимаю как можно эти ф-ии,которые я написал приминить к карте(
|
(Offline)
|
|
23.01.2010, 18:39
|
#23
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: id клетки
Function readmap(file_in$)
Local file = ReadFile(file_in)
Local width = ReadInt(file)
Local height = ReadInt(file)
Print width+","+height
Local dim:Int[width,height]
For y = 0 To height - 1
For x = 0 To width - 1
dim[x,y] = ReadInt(file)
Print dim[x,y]
Next
Next
For b:Int = EachIn dim
Print b
Next
CloseFile(file)
End Function
Function writemap(file_out$,width%,height%,array:int[])
Local file = WriteFile(file_out$)
WriteInt(file, width)
WriteInt(file, height)
For y = 0 To height - 1
For x = 0 To width - 1
WriteInt(file, array[x,y])
Next
Next
CloseFile(file)
End Function
Редактировал в броузере, поэтому може где ошибка есть, но не должно быть.
Вот 2д массив тебе сохраняется, и загружается.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
23.01.2010, 18:41
|
#24
|
Разработчик
Регистрация: 28.02.2009
Сообщений: 434
Написано 44 полезных сообщений (для 96 пользователей)
|
Ответ: id клетки
Спасибо!Но странно у меня не работает может я не правильно массив создаю.
|
(Offline)
|
|
24.01.2010, 16:30
|
#25
|
Разработчик
Регистрация: 28.02.2009
Сообщений: 434
Написано 44 полезных сообщений (для 96 пользователей)
|
Ответ: 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?
|
(Offline)
|
|
24.01.2010, 16:48
|
#26
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: id клетки
Global LevMap:Int[10,10]
For Local y%=0 to 9
For Local x%=0 to 9
If x=0 or x=9 or y=0 or y=9
If x<>9 and y<>1
LevMap[x,y]=1
EndIf
EndIf
Next
Next
Этот цикл, сделает такую же карту, как ты описал.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
24.01.2010, 17:29
|
#27
|
Разработчик
Регистрация: 28.02.2009
Сообщений: 434
Написано 44 полезных сообщений (для 96 пользователей)
|
Ответ: id клетки
Мне не надо делать карту автоматом
levmap надо записать)
|
(Offline)
|
|
24.01.2010, 18:15
|
#28
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: id клетки
Для этого делается редактор
Можно использовать DefData, чтобы "записывать" карту.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
24.01.2010, 20:35
|
#29
|
Разработчик
Регистрация: 28.02.2009
Сообщений: 434
Написано 44 полезных сообщений (для 96 пользователей)
|
Ответ: id клетки
Ясно,спасибо!
П,С все вопросы выше касались редактора,жаль сразу про defdata не сказал
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
25.01.2010, 17:29
|
#30
|
Разработчик
Регистрация: 28.02.2009
Сообщений: 434
Написано 44 полезных сообщений (для 96 пользователей)
|
Ответ: id клетки
а есть какое нибудь другое решение?(если не Defdata)
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 07:18.
|