forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Считывание из файла (http://forum.boolean.name/showthread.php?t=3174)

nJunk 16.04.2007 15:50

Считывание из файла
 
идея такая: создается файл, а в нем прописывается поле 17х17 (тоесть 17 сиволов в 17 строках), состоящее из символов. (типа:
0010000001001
1001101100110 и т.д.)
Затем функция должна открыть этот файл, и на основании увиденного воспроизвести тоже самое, только в 3-Д (символу в файле задается аналог 3-д тела).
Сделал с помощью побайтной считки:

; Открыли файлик
filein = ReadFile("level.dat")
;---Считываем символы первой строки
baza_simple_X=-18 ;это для сдвига первого кубика влево от 0,0,0 на 18

;собственно цикл: считал байт, если "1" -> создал кубик и т.д. (49-это код единички)
For i=1 To 17
Symbol$=Symbol$+1
Symbol$=ReadByte( filein )
baza_simple_X=baza_simple_X+2
If Symbol$=49 Then
baza_simple = CreateCube()
PositionEntity baza_simple,baza_simple_X,0,0
End If
Next
;---Закрываем файл
CloseFile( filein )

И вот появляются вопросы:
1. Как перевести "считку" на следующую строку?
2. Если нельзя перевести "каретку" на следующйю строку, то можно сначала считать строку$, но как тогда считать символ из строки в формате string$ ??? Команда ReadByte не хочет из "строки" читать. (надеюсь понятно объяснил?)

3. Не очень в тему, но очень для меня актуален (а то всю работу тормозит:))))
Как спрятать тело в newton? Аналог HideEntity? А то прям незнаю что с этими телами делать, пока приходится делать ентити на размер больше тела:(((((

johnk 16.04.2007 15:57

Re: Считывание из файла
 
А могу ошибаться, но пример реализации загрузки, а в последствии и замены на объект,
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 20 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.

nJunk 16.04.2007 16:00

Re: Считывание из файла
 
Ой спасибо, конечно, за ссылку. Но у меня проблема - 14 мегов это оооочень много, время сейчас такое:)
Мнеб просто команду какую, врдруг я че упустил (хотя хелп до дыр затер)

johnk 16.04.2007 16:05

Re: Считывание из файла
 
Стукни в асю ;)

ZanoZa 16.04.2007 18:13

Re: Считывание из файла
 
мог ошибиться
Код:

filein = ReadFile("level.dat")
;---Считываем символы первой строки
baza_simple_X=-18 ;это для сдвига первого кубика влево от 0,0,0 на 18

;собственно цикл: считал байт, если "1" -> создал кубик и т.д. (49-это код единички)
For y=1 To 17
        Symbol$=ReadLine( filein )
        For x=1 To 17
                ;Symbol$=Symbol$+1
                w$=Mid$(Symbol$,x,1)
                baza_simple_X=baza_simple_X+2
                baza_simple_Y=y;тут ещё можешь домножить на коефицент какой-нужно
        If w$=1 Then
                baza_simple = CreateCube()
                PositionEntity baza_simple,baza_simple_X,baza_simple_Y,0
        End If
Next
;---Закрываем файл
CloseFile( filein )


alcoSHoLiK 16.04.2007 19:11

Re: Считывание из файла
 
Ну изврат)
Используй двоичную запись в файл. http://www.boolean.name/showthread.php?t=3 - пример в 4-м посте должен помочь.

HolyDel 16.04.2007 20:19

Re: Считывание из файла
 
зачем?
можно считываь и побайтно,
10 - конец строки
13 - перевод коретки
asc("0") - 0
asc("1") - 1
т.е. как встречаеш байт 10, его и следующий игнорируеш, т.е. считываеш впустую.

alcoSHoLiK 16.04.2007 21:48

Re: Считывание из файла
 
HolyDel
Нафига?

HolyDel 17.04.2007 01:29

Re: Считывание из файла
 
ну если очень хочецца ReadByte.

nJunk 17.04.2007 10:32

Re: Считывание из файла
 
Всем спасибо, буду работать с предложенными вариантами.

to holydel
а есть возможность (разговор про "побайтно"), принудительно после 17 байта перевести каретку на след. строку? Если да, то как это выглядит?
Непонял я.

HolyDel 18.04.2007 02:32

Re: Считывание из файла
 
низя переводить коретку при побайтном чтении. ето даже как-то не звучит.
у тебя я так понимаю карта 17*Х ?
тогда так можно.
Код:

e=readfile("imaginity.dat")
while not eof(e) ; пока не конец файла
for i=1 to 17 ;считываем 17 байт
b=readbyte(e)
;делаем с Б чо хотим.
next
;тут возможны два случая (1 - в файле ровно по 17 символов в строке)
readbyte(e):readbyte(e) ; читаем два байта в холостую (если не покатит сделай так, чтобы эти функции возвращенное значение присваивали какой-нибудь переменной)
;2 - в файле дофига символов в строке (но больше 17), однако считывая первые 17 символов мы "переводим каретку"
Retturn(e) ;переводим каретку (листинг функции дальше)
end while

и процедрка "перевода картеки"
Код:

function Retturn(e)
if eof(e) ; если файл закнончился то и переводить некуда
retrun 0
else
ch=0
while (eof(e)=0) and (ch<>13) ; пока не конец файла и не встречен символ перевода каретки
ch=readbyte(e) ; читаем символ
end while
endif
end function

ПС. ето все писалось в браузере, поетому не знаю будет ли все ето работать, по идее должно.

ViNT 19.04.2007 15:37

Re: Считывание из файла
 
Цитата:

function Retturn(e)
if eof(e) ; если файл закнончился то и переводить некуда
retrun 0
else
ch=0
while (eof(e)=0) and (ch<>13) ; пока не конец файла и не встречен символ перевода каретки
ch=readbyte(e) ; читаем символ
end while
endif
end function
Ето на каком языке, бесик чтоли?

johnk 19.04.2007 15:44

Re: Считывание из файла
 
Более того, Блиц Бейсик.


Часовой пояс GMT +4, время: 03:20.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot