|
Wasteland Ghost
Маленькое Злое Привидение
Откуда: Россия, Самара Регистрация: Дек. 2002
Всего: 2251 сообщение
|
АБель говорит истинную правду :). Это именно битовая маска. Единственное замечание: frm тайла карты мира имеет размер 350 x 300 = 10500, а файл msk - 352 x 300 = 105600. Это связано, как понимаете, с "добиванием" строки до целого числа байт.
|
Отправлено: 10:31 - 4 Апр., 2005
|
|
Perceptron
Модератор
Откуда: Ivanovo Регистрация: Май 2003
Всего: 502 сообщения
|
Ммм... строка... целое... Я, конечно, программист, но чевой-то не врубаюсь. А можно для глупых?
|
Отправлено: 0:28 - 5 Апр., 2005
|
|
Ray
Модератор
Откуда: Донецк,Украина Регистрация: Янв. 2004
Всего: 746 сообщений
|
Да и я, вообще-то, тоже будующий программер, но и до меня слабо доходит. Разве в файле нельзя записать данные разных типов? Да и вообще есть ли смысл подгонять под целое число байт, что делать с теми, за счет которых подганялось. Просто пустые? И ещё. Если 01 - непроходимо, 00 - проходимо (или наоборот), то что означают значения FC, F8, FE, E0. Если всё остальное обнулить, все равно есть непроходимые зоны.
----- Не бывает невозможных задач – бывает мало времени.
|
Отправлено: 0:50 - 5 Апр., 2005
|
|
Wasteland Ghost
Маленькое Злое Привидение
Откуда: Россия, Самара Регистрация: Дек. 2002
Всего: 2251 сообщение
|
Каждому пикселю тайла карты мира ставится в соответствие один бит из файла msk. Если этот бит равен нулю, то по этому пикселю можно пройти, если единице - то нельзя. Теперь о хранении данных. На пальцах :). В памяти данные хранятся в переменных (ячейках, регистрах, whatever :), размер которых кратен 1 байту. Если мы 350 поделим на 8 это будет 43,75 байта. Т.е. 43 байта и ещё 6 бит. Логично эти два бита добить нулями. Это гораздо проще, чем пытаться сэкономить на спичках и сразу тут же писать следующую строку. Работать с такой записью будет очень неудобно. Стало быть, итог такой: каждая строка тайла, а это 350 бит, хранится в 44 байтах. Два последних бита добиваются нулями.
|
Отправлено: 13:45 - 5 Апр., 2005
|
|
|
|