forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=13)
-   -   Чтение файла (http://forum.boolean.name/showthread.php?t=8478)

Petrofan 15.06.2009 17:33

Чтение файла
 
Вопрос:
Как прочитать текстовий файл с такой начинкой.

1 2 2 2 2 2 2 2 2 1
1 2 1 1 1 1 1 1 2 1
1 2 1 1 1 1 1 1 2 1
1 2 2 2 2 2 2 2 2 1

чтоб каждая цифра имела свою переменую. Зарание благодарен.

SBJoker 15.06.2009 18:16

Ответ: Чтение файла
 
Массив вам поможет

L.D.M.T. 15.06.2009 18:20

Ответ: Чтение файла
 
dim a(100)

filein = ReadFile("mydata.dat")

for i=1 to 10
a(i) = readbyte(filein)
next

ABTOMAT 15.06.2009 18:54

Ответ: Чтение файла
 
Цитата:

Сообщение от L.D.M.T. (Сообщение 107639)
dim a(100)

filein = ReadFile("mydata.dat")

for i=1 to 10
a(i) = readbyte(filein)
next

не труЪ бо всякие там переходы на другую строку тоже прочитаются

MiXaeL 15.06.2009 19:01

Ответ: Чтение файла
 
ReadLine и потом каждый нечетный символ вытаскивать)

Petrofan 15.06.2009 19:40

Ответ: Чтение файла
 
Почему чтение байта а не строки ?

Mhyhr 15.06.2009 21:22

Ответ: Чтение файла
 
Воть я тебе написал немножко =)
http://forum.boolean.name/showthread...663#post107663

Petrofan 05.08.2009 19:28

Ответ: Чтение файла
 
А как сделать чтобы считывало числа больше 9. Оно считывает числа 1234567890 а если надо считать 10,11,.....,100 как с этим быть :''(( пробовал сам но с этим пока туговато у меня.

Mhyhr 05.08.2009 19:32

Ответ: Чтение файла
 
юзай тогда чтение сразу в две цифры AB или в три цифры или больше))
А - десятки
В - единицы
А+В=Число :-D

IGR 05.08.2009 19:35

Ответ: Чтение файла
 
тогда возьми пробел за разделитель !! или другой символ !!
ищи по форуму тему: Нарезка строки по разделителю !! Товарисч Импер писал помойму !! тебе должно помочь !!

UP: http://forum.boolean.name/showthread.php?t=3713&highlight=%CD%E0%F0%E5%E7%EA %E0+%F1%F2%F0%EE%EA%E8+%EF%EE+%F0%E0%E7%E4%E5%EB%E 8%F2%E5%EB%FE

Petrofan 05.08.2009 19:55

Ответ: Чтение файла
 
mapfile = ReadFile("Level\Level_1.lvl")
For YY=1 To 8
CurLi$ = ReadLine$(mapfile)
CurrentLine$=LSet$(CurLi$,8)
;Ten=
For XX=1 To 8
CurrentSymbol$=Mid$(CurrentLine$,XX,1)
Select CurrentSymbol$
Case "1"
Map(XX,YY)=1
Case "2"
Map(XX,YY)=2
Case "3"
Map(XX,YY)=3
Case "4"
Map(XX,YY)=4
Case "5"
Map(XX,YY)=5
Case "6"
Map(XX,YY)=6
Case "7"
Map(XX,YY)=7
Case "8"
Map(XX,YY)=8
Case "9"
Map(XX,YY)=9
End Select
Next
Next
Вот я взял этот код из этой ссилки http://forum.boolean.name/showthread...663#post107663
Чувствую что сдесь решит проблему одна или две строски

Mhyhr 05.08.2009 20:03

Ответ: Чтение файла
 
Petrofan а какая разница, как называется переменная, Х или ХХ, осознаёте?

Даю подсказку...
For X=1 To 8 step 2
CurrentSymbol$=Mid$(CurrentLine$,X,2)

Petrofan 05.08.2009 20:21

Ответ: Чтение файла
 
Если делать step 2 тогда берет 10...19 числа но пропускает 1...9

Mhyhr 05.08.2009 20:29

Ответ: Чтение файла
 
Хм... должно работать, вы тестировали?,думаю стоит писать новый файл загрузки с нулями или пробелами, также возможно потребуется обработчик.
01 02 03 04 05 06 07 08 09


Может для ваших целей подойдет другое решение?
Чтение цвета пикселей с bmp картинки или сделать простенький свой формат уровня?

Petrofan 05.08.2009 20:54

Ответ: Чтение файла
 
Карта это текстовый файл с набором чисел проще формата я незнаю вот и хочу использовать. Если бы он читался 010203...101112 было бы круто

Mhyhr 05.08.2009 21:04

Ответ: Чтение файла
 
:crazy:
Цитата:

было бы круто
а если сделать это самому будет ещё круче, поверьте...)
Если будет время то допишу свой пример с Вашими потребностями...

ABTOMAT 05.08.2009 22:25

Ответ: Чтение файла
 
Вложений: 1
Вот уже много дней наблюдаю за этим топиком.
Таки решил помочь.
Работы на 10 минут, а флуда на 2 страницы.
Автор, научись уже включать мозги
FFFFFFFFFFFFFFUUUUUUUUUUUUUUUUUUUU-

Petrofan 06.08.2009 13:46

Ответ: Чтение файла
 
И все равно как я вижу не то что нужно код читает только 1,2,3 а не 10,11,12 видемо нужно как нибуть подругому делат или учить функции чтения-записи файла. Может у кого есть инфа по этим функциям.

IGR 06.08.2009 13:52

Ответ: Чтение файла
 
Цитата:

учить функции чтения-записи файла. Может у кого есть инфа по этим функциям.
учи !! :) а инфа в достаточном объеме в справке блица !!

Chrono Syndrome 09.08.2009 22:38

Ответ: Чтение файла
 
Код:

Local LvlFile%, Num%, NFlag%, Char%, X%, Y%
LvlFile = OpenFile("*путь к файлу*")
; ...
While Not Eof(LvlFile)
Char = ReadByte(LvlFile)
Select True
Case Char >= 48 And Char <= 57 : Num = Num * 10 + (Char - 48) : NFlag = True
Case Char = 10 : X = 0 : Y = Y + 1
Default
If NFlag : LvlArray(X, Y) = Num : Num = 0 : NFlag = False : X = X + 1 : EndIf
End Select
Wend
; ...
CloseFile(LvlFile)

...Вот как-то так (если с разделителями).

MiXaeL 09.08.2009 23:51

Ответ: Чтение файла
 
Вложений: 1
Согласен с АВТОМАТом, это просто FFFFFFFFFFFUUUUUUUUUUUUUUUUU-
Ну можно хоть чуть-чуть напрячь мозг? И изменить 2 строчки в его примере?

Chrono Syndrome 10.08.2009 13:59

Ответ: Чтение файла
 
Цитата:

Ну можно хоть чуть-чуть напрячь мозг? И изменить 2 строчки в его примере?
...Да вот сдается мне, что изменений там стоит произвести чуть больше:
Код:

Function LoadLevel(levelfile$)
Local FHandle%, Word%, X%, Y%
FHandle = OpenFile(levelfile)
While Not Eof(FHandle)
Word = ReadShort(FHandle)
If Word <> $A0D Then
GameField(X, Y) = (Word And $FF - 48) * 10 + (Word - $3000) Shr 8
X = X + 1
Else : X = 0 : Y = Y + 1
EndIf
Wend
CloseFile(FHandle)
End Function


Petrofan 12.08.2009 13:45

Ответ: Чтение файла
 
Спасибо всем за помощь все работает, но есть еще вопрос. Как можна сделать проверку ячеек на соединение.Вот допустим есть поле 8х8, при щелчке мыши по ячейке она изменяет картинку, картинок 20 шт на них нарисованы проводники, лампочки,батареи, при правильном соединении должна картинка лампочки поменятся на картинку загоревшейся лампочки каким образом можна сделать проверку на правильность соединения. Я думал так: сделать загрузку уровня (неправильного конорий надо изменять) и загрузить уровень (правильный где все как надо правильно соединять) и както это все проверять. Может ктото подскажет как можна по другому сделать?

Spiderman 12.08.2009 14:10

Ответ: Чтение файла
 
Если это 2D то достаточно проверить колизию курсора и картинки (coll =RectsOverlap(t3\x,t3\y+t3\h+5,t3\w,5, t1\x,t1\y,t1\w,t1\h)). Если нажата клавиша мышки и колизия присутствует, то данную картинку заменяем новой. Если использовать типы, то сделать это раз плюнуть.

Принцип: подводим курсор к изображению, проверяем его колизию с курсором (к примеру тип t3 - это курсор, тип t1 - изображение лампочки), если нажата клавиша мыши и поле лампочки light = 0 то включаем лампочку и изменяем изображение (t1\light=1 : t1\image = LoadImage("light.jpg")). В 3-х мерке будет немного другой способ, но принцип такой же

Petrofan 12.08.2009 18:12

Ответ: Чтение файла
 
Вложений: 1
Вот что уже есть сдесь при повороте батарейки должна гаснуть лампочка попробуйте может у кого получится.

Mhyhr 12.08.2009 20:14

Ответ: Чтение файла
 
Petrofan, что за энергия заставит гореть лампочку с одним подключенным полюсом? Или там всё невидим0 заземлено?
З.Ы. Клёвая идея, орфографию подправь на сайте =)

А по делу, надо наверно юзать что-то типа модифицированного алгоритма А* чтобы проверерять замкнутость цепи.

Ну и напоследок:
Цитата:

Вот что уже есть сдесь при повороте батарейки должна гаснуть лампочка попробуйте может у кого получится.
Цитата:

Согласен с АВТОМАТом, это просто FFFFFFFFFFFUUUUUUUUUUUUUUUUU-
Ну можно хоть чуть-чуть напрячь мозг?

Chrono Syndrome 12.08.2009 21:03

Ответ: Чтение файла
 
Цитата:

А по делу, надо наверно юзать что-то типа модифицированного алгоритма А* чтобы проверерять замкнутость цепи.
Да сойдет и обычный, надо просто с умом генерировать карту проходимости.

Но не кажется ли вам, что дальнейшее обсуждение стоит вынести в отдельную тему ?

Petrofan 13.08.2009 12:47

Ответ: Чтение файла
 
Ты правильно отметил минус батарейки это масса а алгоритм что нужен так нужен полюбому. Ну а как вам мое решение проблеми что я сделал для каждого блока катринок свой поворот.


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

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