Реклама в Интернет       Все Кулички
Искусство создания игр
head

Сделать стартовой

Файлы

Реестр

INI файлы

Выполняемые программы

Файлы

 

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

    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) Читает байты данных из файла и возвращает его.

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

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

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

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

    parameter_count() Возвращает число параметров командной строки (отметьте, что само имя программы - одно из них.
    parameter_string(n) Возвращает параметры командной строки n. Первый параметр имеет индекс 0. Это - имя программы.

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

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

 

Реестр

 

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

    registry_write_string(name,str) Создаёт вход в реестр с заданной величиной имени и строки.
    registry_write_real(name,x) Создаёт вход в реестр с заданным именем и реальной величиной.
    registry_read_string(name) Возвращает строку, которое содержит заданное имя. (Имя должно существовать - в противном случае возвращается пустая строка.)
    registry_read_real(name) Возвращает реальную строку, которая содержит заданное имя. (Имя должно существовать. В противном случае возвращается число 0.)
    registry_exists(name) Возвращает существующее заданное имя.

На самом деле величины в реестре сгруппированы в ключах. Все вышеуказанные программы работают в величинах в пределах ключей, особенно те, которые создаются для Вашей игры. Ваша программа может использовать это, чтобы получить определённую информацию о системе, когда игра работает. Вы можете также прочитать величины в других ключах. Вы также можете записать их, но будьте очень осторожны. ВЫ ЛЕГКО МОЖЕТЕ УНИЧТОЖИТЬ СВОЮ СИСТЕМУ таким образом. (Запись не разрешена в безопасном режиме.) Отметьте, что ключи опять же устанавливаются в группах. Следующие программы по умолчанию работают в группе HKEY_CURRENT_USER. Но Вы можете изменить корневую группу. Так, например, если Вы хотите обнаружить текущую временную директорию, используйте

     path = registry_read_string_ext('\Environment','TEMP');

Существуют следующие функции:

    registry_write_string_ext(key,name,str) Создаёт вход в ключе реестра с заданной величиной имени и строки.
    registry_write_real_ext(key,name,x) Создаёт вход в ключ реестра с заданным именем и реальной величиной.
    registry_read_string_ext(key,name) Возвращает строку, это заданное имя в указанных ключевых хранилищах. (Имя должно существовать. В противном случае - возвращается пустая строка.)
    registry_read_real_ext(key,name) Возвращает реальный ключ с заданным именем в указанных ключевых хранилищах. (Имя должно существовать. В противном случае вовращается число 0.)
    registry_exists_ext(key,name) Возвращает существующее заданное имя в заданном ключе.
    registry_set_root(root) Устанавливает корень для других программ. Используйте следующие величины:

    0 = HKEY_CURRENT_USER
    1 = HKEY_LOCAL_MACHINE
    2 = HKEY_CLASSES_ROOT
    3 = HKEY_USERS

 

INI файлы

 

Передача определённых установочных настроек параметра в программу, является стандартным механизмом файлов INI. Файлы INI содержат секции, и каждая секция содержит множество пар имени-величины. Например, здесь представлен типичный файл INI:

    [Form]

    Top=100

    Left=100

    Caption=The best game ever

    [Game]

    MaxScore=12324

Этот файл содержит две секции: первая - Форма вызова, и вторая - название Игры. Первая секция содержит три пары. Первые две пары имеют реальную величину, пока третья имеет величину строки. Такие файлы INI легко могут создаваться и изменяться в Game Maker. Для этого существуют следующие функции:

    ini_open(name) Открывает файл INI с указанным именем. Файл ini должен быть загружен в одну папку с игрой!
    ini_close() Закрывает к настоящему времени открытый INI файл.
    ini_read_string(section,key,default) Читает величину строки указанного ключа в указанной секции. Когда ключ или секция не существует, значение возвращается по умолчанию.
    ini_read_real(section,key,default) Читает реальную величину указанного ключа в указанной секции. Когда ключ или секция не существует, значение возвращается по умолчанию.
    ini_write_string(section,key,value) Записывает величину строки для указанного ключа в указанной секции.
    ini_write_real(section,key,value) Записывает реальную величину для указанного ключа в указанной секции.
    ini_key_exists(section,key) Возвращает существующий указанный ключ в указанной секции.
    ini_section_exists(section) Возвращает существующую указанную секцию.
    ini_key_delete(section,key) Удаляет указанный ключ из указанной секции.
    ini_section_delete(section) Удаляет указанную секцию.

 

Выполняемые программы

 

Game Maker также имеет возможность запускать внешние программы. Для этого доступны две функции: execute_program и execute_shell. Функция execute_program запускает программу и, возможно, некоторые аргументы. Эта функция может ожидать завершения программы (пауза игры) или продолжения игры. Функция execute_shell открывает файл. Это может быть любой файл, для которого определена некоторая ассоциация, например html файл, текстовый файл и т.п. Или это может быть программой. Эта функция не может ожидать завершения, а продолжит игру.

    execute_program(prog,arg,wait) Выполнять программу prog с аргументами arg. wait - указывает ожидания перед завершением.
    execute_shell(prog,arg) Выполняет программу (или файл) в оболочке.

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

    secure_mode* Игра работает в Безопасном режиме.

Rambler's Top100

Requier inc. 2007