;Переходим в графический режим 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