Файлы

В более продвинутых играх, Вы, вероятно, захотите, чтобы данные читались из файла, который будете поставлять с игрой. Например, Вы могли бы сделать файл, который описывает определённые моменты, которые должны случиться. Также, Вы, вероятно, захотите сохранить информацию для следующего запуска игры (например, состояние текущей комнаты). Следующие функции существует, чтобы читать и записывать данные в текстовые файлы:

file_text_open_read(fname) Открывает файл с указанным именем для чтения. Функция возвращает id файла, что должно быть использовано в других функциях. Вы можете открыть много файлов в то же самое время (32 максимум). Не забывайте закрывать их, когда они завершат свои действия.
file_text_open_write(fname) Открывает указанный файл для записи и создаёт файл, если он не существует. Функция возвращает id файла, что должно быть использовано в других функциях.
file_text_open_append(fname) Открывает указанный файл для добавления данных при завершении, создаёт их, если они не существует. Функция возвращает id файла, что должно быть использовано в других функциях.
file_text_close(fileid) Закрывает файл с заданным id.
file_text_write_string(fileid,str) Записывает строку в файл с заданным id.
file_text_write_real(fileid,x) Записывает реальную величину в файл с заданным id.
file_text_writeln(fileid) Записывает символ новой строки в файл.
file_text_read_string(fileid) Читает строку из файла с заданным id и возвращает эту строку. Строка заканчивается в конце линии.
file_text_read_real(fileid) Читает реальную величину из файла и возвращает эту величину.
file_text_readln(fileid) Пропускает остальную часть линии в файл и начинает в начале следующей строки.
file_text_eof(fileid) Возвращает, если достигнуто окончание файла.

Чтобы манипулировать файлами в Вашей файловой системе, Вы можете использовать следующие функции:

file_exists(fname) Возвращает, когда файл с заданным именем существует (истина) или не существует (ложь).
file_delete(fname) Удаляет файл с заданным именем.
file_rename(oldname,newname) Переименовывает файл с именем oldname в newname.
file_copy(fname,newname) Копирует файл fname в newname.
directory_exists(dname) Возвращает, если существует указанная директория. Имя должно содержать полный путь, а не относительный.
directory_create(dname) Создаёт директорию с заданным именем (включая путь к ней), если она не существует. Имя должно содержать полный путь, а не относительный.
file_find_first(mask,attr) Возвращает имя первого файла, который подходил маске и атрибутам. Если такой файл не существует, возвращается пустая строка. Маска может содержать путь и может содержать специальные символы, например 'C:\temp\*.doc. Атрибуты предоставляют дополнительные файлы, которые Вы хотите видеть. (Так что нормальные файлы всегда возвращаются, когда они подходят маске.) Вы можете добавить следующие константы, чтобы увидеть тип файлов:
fa_readonly файлы только для чтения
fa_hidden скрытые файлы
fa_sysfile системные файлы
fa_volumeid файлы тома-идентификатора
fa_directory директории
fa_archive архивные файлы
file_find_next() Возвращает имя следующего файла, который подходит заданной маске и атрибутам. Если такой файл не существует, то возвращается пустая строка.
file_find_close() Должно быть вызвано после обработки всех файлов, чтобы освободить память.
file_attributes(fname,attr) Возвращает, если файл имеет все атрибуты в attr. Используйте комбинацию вышеуказанных констант.

Следующие функции могут быть использованы для изменения имени файла. Отметьте, что эти функции не работают в фактических файлах, они взаимодействуют только со строками.

filename_name(fname) Возвращает часть имени указанного файлового имени с расширением, но без пути.
filename_path(fname) Возвращает часть пути указанного файлового имени, включая обратную косую черту.
filename_dir(fname) Возвращает часть директории указанного файлового имени, это нормально, так же как и полный путь, но за исключением обратной косой черты.
filename_drive(fname) Возвращает информацию устройства filename.
filename_ext(fname) Возвращает часть расширения указанного файлового имени, включая подачу точки.
filename_change_ext(fname,newext) Возвращает указанное файловое имя, с расширением (включая точку) изменённое в новое расширение. Используйте пустую строку как новое расширение. Вы также можете удалить расширение.

Иногда Вам может понадобиться чтение данных из двоичных файлов. Следующие подпрограммы "низкого уровня" существуют именно для этого:

file_bin_open(fname,mod) Открывает файл с указанным именем. Режим указывает, что может подходить файлу: 0 = чтение, 1 = запись, 2 = как чтение, так и запись. Функция возвращает id файла, что должно быть использовано в других функциях. Вы можете открыть многочисленные файлы в то же самое время (32 максимум). Не забывайте закрывать их, как только они завершат свои действия.
file_bin_rewrite(fileid) Перезаписывает файл с заданным id, то есть, очищает его и начинает записывать в начале.
file_bin_close(fileid) Закрывает файл с заданным id.
file_bin_size(fileid) Возвращает размер (в байтах) файла с заданным id.
file_bin_position(fileid) Возвращает текущую позицию (в байтах; 0 - первая позиция) файла с заданным id.
file_bin_seek(fileid,pos) Перемещает текущую позицию файла на указанную позицию. Чтобы добавить позицию перемещения файла по размеру с перезаписываемым файлом.
file_bin_write_byte(fileid,byte) Записывает байт данных в файл с заданным id.
file_bin_read_byte(fileid) Читает байты данных из файла и возвращает его.

Если пользователь выбрал бы безопасный режим в предпочтениях, то для множества таких программ, Вы не смогли бы определить путь - а только файлы, находящиеся в папке приложения могут быть, например, записаны.

Если Вы включали файлы в выполняемую игру и автоматически не экспортировали их в начале игры, то для этого Вы можете использовать следующие функции:

export_include_file(fname) Экспорт включенного файла с именем fname. Имя должно быть строковой переменной, так что не забудьте кавычки.
export_include_file_location(fname,location) Экспорт включенного файла с именем fname в определенную директорию. Директория должна содержать путь и имя файла.
discard_include_file(fname) Отказ от включенного файла с именем fname, используется для освобождения памяти. Имя должно быть строковой переменной, так что не забудьте кавычки.

Следующие четыре переменные предназначенные "только для чтения" могут быть полезны:

game_id* Уникальный идентификатор для игры. Вы можете использовать его, если Вам нужны уникальные имена файлов.
working_directory* Прокладывает директорию для игры. (Не включая обратную косую черту.)
program_directory* Директория, в которой сохранена игровая информация (не ставя в конце обратную черту). Вы запускаете автономную игру обычно из рабочей директории. Обратите внимание, что при тестировании игры Вы создаете программу, и рабочая директория будет другая. В том случае рабочая директория - место, где сохранена доступная для редактирования версия игры, в то время как каталог программы - временный каталог для тестирования.
temp_directory* Создаёт временную директорию для игры. Вы можете загрузить временные файлы в эту папку. Они будут удалены в конце игры.

В определённых ситуациях, Вы могли бы захотеть предоставить возможность играющим вносить командные аргументы строк в игру, которые будут выполнены (например, чтобы создавать чит-коды или специальные режимы). Чтобы получить такие аргументы, Вы можете использовать две следующие подпрограммы.

parameter_count() Возвращает число параметров командной строки. Фактические параметры могут быть найдены со следующей функции. parameter_string(n) Возвращает параметры командной строки n. Первый параметр имеет индекс 1. Последний - parameter_count(). Индекс 0 - специальный. Это имя файла выполнимой игры (включая путь).

Вы можете прочитать величину переменной среды, используя следующую функцию:

environment_get_variable(name) Возвращает величину (строки) переменной среды с заданным именем.