
|
Файлы, системный реестр и выполняемые программы |
В более продвинутых играх ты вероятно захочешь читать данные из файла, который
находится в каталоге с игрой. Например, ты создал файл, с описанием некоторых
игровых моментов. Также ты вероятно захочешь сохранить информацию до следующего
запуска игры (например, текущий уровень). Для этого существуют следующие
функции:
file_exists(fname) - Возвращает если существует файл с данным названием (истинно) или нет (ложно).
file_delete(fname) - Удаляет файл с данным названием.
file_rename(oldname,newname) - Переименовывает файл с именем oldname в newname.
file_copy(fname,newname) - Копирует файл fname в newname.
file_open_read(fname) - Открывает указанный файл для чтения.
file_open_write(fname) - Открывает указанный файл для записи, создает его, если тот не существует.
file_close() - Закрывает текущий файл (не забудь вызвать его!).
file_write_string(str) - Записывает строку в открытый в данный момент файл.
file_write_real(x) - Записывает реальное значение в открытый в данный момент файл.
file_writeln() - Записывают newline символ в файл.
file_read_string() - Читает строку из файла и возвращает эту строку. Конец строки в конце линии.
file_read_real() - Читает реальное значение из файла и возвращает это значение.
file_readln() - Пропускает оставшуюся часть строки в файле и запускается в начале следующей строки.
file_eof() - Возвращение, если мы достигли конца файла.
directory_exists(dname) - Возвращение, если указанный существует каталог.
directory_create(dname) - Создает каталог с указанным названием (включая путь к нему) если он не существует.
Если игрок включил безопасный режим в предпочтениях, для множества вышеуказанных
подпрограмм, тебе не позволят определять путь и как следствие файлы могут быть
записаны только в каталоге данного приложения.
Так же могут быть полезны следующий три read-only переменных:
game_id* - Уникальный идентификатор для игры. Ты можешь использовать его, если нуждаешся в уникальном имени файла.
working_directory* - Рабочий каталог игры. (Не включая конечный бэкслэш).
temp_directory* - Временный каталог, созданный для игры. Ты можешь сохранять в нем временные файлы. В конце игры они будут удалены.
Если ты хочешь сохранить некоторую информацию между запусами игры - для этого
имеется более простой механизм чем использование файла. Ты можешь использовать
системный реестр. Системный реестр - большая база данных, которую использует
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_read_string_ext(key,name) - Возвращает строку, которая имеет данное название находящееся в обозначенной ключе. (Название должно существовать. Иначе возвращается пустая строка).
registry_read_real_ext(key,name) - Возвращает реальное значение, которое имеет данное название находящееся в обозначенном ключе. (Название должно существовать. Иначе возвращается номер 0).
registry_exists_ext(key,name) - Возвращение, если существует данное название в данном ключе.
Game Maker также может запускать внешние программы. Существует две функции,
предназначенные именно для этого: execute_program и execute_shell. Функция
execute_program запускает программу, возможно использование с параметрами. Она
может приостонавить программу, для окончания (пауза в игре) или продолжить игру.
Функция execute_shell открывает файл. Это может быть любой файл, для которого
определена некоторая зависимость, например html-файл, файл word, и т.д. Или это
может быть программа. Она не будет дожидаться завершения, так что игра
продолжится.
execute_program(prog,arg,wait) - Выполнение программы prog с параметром arg. wait указывает, дождаться окончания.
execute_shell(prog,arg) - Выполняет программу (или файл) в оболочке.
Обе эти функции не будут работать, если игрок устанавливает (выбирает) безопасный
режим в предпочтениях. Ты можешь проверять их использовав переменные read-only:
secure_mode* - Игра выполняется в безопасном режиме.
© 2001 Simple Life & World
|