forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   FAQ (http://forum.boolean.name/forumdisplay.php?f=15)
-   -   Примитивное чтение файла (http://forum.boolean.name/showthread.php?t=8481)

Mhyhr 15.06.2009 21:21

Примитивное чтение файла
 
Вложений: 2
Вот один из ответов на вопрос(ред.):
Цитата:

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

1111111111
1 1
1333333331
1231231231
1234567891
1000000001
2131313132
1001010101

чтоб каждая цифра имела свою переменую.
Мой подробный код(для среднего уровня пользователей)
Код:

;Переходим в графический режим 3D...
Graphics3D 800,400,32,2
; Применим двойную буферизацию
SetBuffer BackBuffer()


;Создаем тип кубиков с параметрами X и Y, для удобства их размножения в дальнейшем.
Type Cube
Field X
Field Y
Field model
End Type

;Создаём 2х мерный массив для координат X-Y cо значениями.
Dim Map(10,10)

;Открываем файл для считывания.
mapfile = ReadFile("qwerty.txt")

;Считываем строки из файла с помощью цикла, до конца файла.
For Y=1 To 10

;Читаем одну строку из файла за цикл.
CurLi$ = ReadLine$(mapfile)
;Хитрой командой добавляем пробелов чтоб было 10 символов в строке по любому
CurrentLine$=LSet$(CurLi$,10)

;Создаем цикл, который будет обрабатывать каждый символ на строке
;и в соответсвии с условиями что либо делать...
For X=1 To 10

;Создаем переменную в которой будет храниться символ который мы обрабатываем.
CurrentSymbol$=Mid$(CurrentLine$,X,1)


;==========================================================================================
;Далее идут условия...
;(если данный символ такой-то, то пишем его в масив под нужным номером и рисуем по координатам квадрат)
;Используем для этого структуру условия Select-Case
;==========================================================================================
Select CurrentSymbol$
;Если символ <1> то рисуем зелёный квадратик и пихаем его в координаты X-Y
Case "1"
        ;Выбираем цвет кубика для данного условия.
        Color 0,255,0
        ;Рисуем квадрат со стороной 20 пикселей
        Rect X*20,Y*20,20,20,1
        ;Пишем в массив, что на данных координатах такой то цвет.
        Map(X,Y)=1

;Это условие аналогично по структуре первому
;Пусть 2 это красный цвет
Case "2"
        Color 255,0,0
        Rect X*20,Y*20,20,20,1
        Map(X,Y)=2

;Это условие аналогично по структуре первому
;Пусть 3 это серый цвет
Case "3"
        Color 128,128,128
        Rect X*20,Y*20,20,20,1
        Map(X,Y)=3
       
;Пусть по умолчанию, если другие знаки или пробелы ставится ноль(пустота), и ничего не рисуется
Default
        Map(X,Y)=0
       
;Конец выбору...
End Select
Color 0,0,0
Next
Next
;Выводим картинку на экран из буфера.
Flip
;Закрываем файл
CloseFile( mapfile )

;==========================================================================================
;Далее для наглядности мы построим так называемую карту из кубиков по координатам X-Y которые
;мы забили в массив
;==========================================================================================
;Создадим-ка камеру
Camera=CreateCamera()
;Создадим-ка cсвет
Light=CreateLight()
;Сделаем так чтобы она давала изображение на пол окна справа...
CameraViewport Camera, 400,0,400,400
;отодвигаем камеру
PositionEntity Camera,10,2,-15
RotateEntity Camera,-25,0,0

;Теперь прогоним массив в тип и по координатам наделаем цветных кубиков.
For Y=1 To 10
For X=1 To 10
;Читаем цвет кубика
ColorCube=Map(X,Y)
;Если не пустота то действуем...
If Not ColorCube=0 Then
Select ColorCube
        Case 1
;Создаем новый кубик, в как-бы комнате(коллекции). вот тут то и пригодились типы.
                room.Cube = New Cube
                room\X=X
                room\Y=Y
                room\model=CreateCube()
 ;Задаём цвет кубу
                EntityColor room\model,0,255,0
 ;Задаём позицию кубу
                PositionEntity room\model,X*2,Y*2,0
        Case 2
;Создаем новый кубик, в как-бы комнате(коллекции). вот тут то и пригодились типы.
                room.Cube = New Cube
                room\X=X
                room\Y=Y
                room\model=CreateCube()
 ;Задаём цвет кубу
                EntityColor room\model,255,0,0
 ;Задаём позицию кубу
                PositionEntity room\model,X*2,Y*2,0

        Case 3
;Создаем новый кубик, в как-бы комнате(коллекции). вот тут то и пригодились типы.
                room.Cube = New Cube
                room\X=X
                room\Y=Y
                room\model=CreateCube()
 ;Задаём цвет кубу
                EntityColor room\model,155,155,155
 ;Задаём позицию кубу
                PositionEntity room\model,X*2,Y*2,0

                End Select
                End If
Next
Next


;Рисуем в картинку с камеры
While Not KeyDown(1)
UpdateWorld
RenderWorld
Flip
Wend


Mhyhr 15.06.2009 21:25

Ответ: Примитивное чтение файла
 
Код кривой и но смысл думаю понятен при таком обилии моих коментариев, опечатки могут быть)
. И не спрашивайте почему изображение на камере перевернутое;)


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

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