Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для компьютеров > Blitz3D > FAQ

FAQ Туториалы и часто задаваемые вопросы

Ответ
 
Опции темы
Старый 15.06.2009, 17:21   #1
Mhyhr
Бывалый
 
Регистрация: 06.04.2009
Сообщений: 612
Написано 276 полезных сообщений
(для 857 пользователей)
Примитивное чтение файла

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

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
Миниатюры
Нажмите на изображение для увеличения
Название: 1121212.jpg
Просмотров: 322
Размер:	23.9 Кб
ID:	6259  
Вложения
Тип файла: zip simple_read.zip (1.8 Кб, 184 просмотров)
(Offline)
 
Ответить с цитированием
Эти 6 пользователя(ей) сказали Спасибо Mhyhr за это полезное сообщение:
ABTOMAT (15.06.2009), is.SarCasm (07.11.2009), NitE (15.06.2009), PalVitalia (21.11.2009), Petrofan (05.08.2009), Toon3D (09.12.2009)
Старый 15.06.2009, 17:25   #2
Mhyhr
Бывалый
 
Регистрация: 06.04.2009
Сообщений: 612
Написано 276 полезных сообщений
(для 857 пользователей)
Ответ: Примитивное чтение файла

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


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение файла Petrofan 2D-программирование 27 13.08.2009 08:47
чтение из файла SubZer0 Программирование 1 31.07.2007 19:21
чтение из файла прямо в f HolyDel FAQ 6 22.05.2007 16:04
Запись\чтение PAK файла в Blitz3D GetMan FAQ 2 26.03.2007 12:21
Чтение из файла Gnom 3D-программирование 2 14.03.2006 22:40


Часовой пояс GMT +1, время: 23:29.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com