File

L’uso di file esterni nei giochi è molto utile.
Per esempio, potresti creare un file che descrive in quale momento devono succedere certe cose.
Oppure vuoi probabilmente salvare informazioni per la prossima volta che il gioco sarà eseguito (per esempio, il livello attuale).

Esistono le funzioni seguenti per leggere e scrivere dati su file di testo:

file_text_open_read() fname Apre in lettura il file indicato.
La funzione restituisce l’id del file che dovrà essere utilizzato in altre funzioni.
Si possono aprire più file contemporaneamente (al massimo 32).
Non bisogna dimenticarsi di chiuderli quando si è finito con essi.
file_text_open_write() fname Apre in scrittura il file indicato, creandolo se non esiste.
La funzione restituisce l’id del file che dovrà essere utilizzato in altre funzioni.
file_text_open_append() fname Apre in append (per aggiungere dati alla fine) il file indicato, creandolo se non esiste.
La funzione restituisce l’id del file che dovrà essere utilizzato in altre funzioni.
file_text_close() fileid Chiude il file con l’id dato.
file_text_write_string() fileid
str
Scrive la stringa nel file con l’id dato.
file_text_write_real() fileid
x
Scrive il valore reale nel file con l’id dato.
file_text_writeln() fileid Scrive un carattere newline nel file.
file_text_read_string() fileid Legge una stringa dal file con l’id dato e restituisce questa stringa. Una stringa termina alla fine della linea.
file_text_read_real() fileid Legge un valore reale dal file e restituisce questo valore.
file_text_readln() fileid Salta il resto della linea nel file e si posiziona all’inizio della prossima linea.
file_text_eof() fileid Restituisce se è stata raggiunta la fine del file.

Per manipolare i file nel file system si possono usare le funzioni seguenti:

file_exists() fname Restituisce se il file con il nome dato esiste (true) o no (false).
file_delete() fname Elimina il file con il nome dato.
file_rename() oldname
newname
Rinomina il file con il nome oldname, in newname.
file_copy() fname
newname
Copia il file fname in newname.
directory_exists() dname Restituisce se la cartella indicata esiste.
Il nome deve includere il percorso completo, non un percorso relativo.
directory_create() dname Crea una cartella con il nome dato (compreso il percorso in avanti) se non esiste.
Il nome deve includere il percorso completo, non un percorso relativo.
file_find_first() mask
attr
Restituisce il nome del primo file che soddisfa la maschera mask e gli attributi attr. Se tale file non esiste, restituisce una stringa vuota.
La maschera può contenere un percorso e può contenere carattery jolly, per esempio'C:\temp\*.doc'.
Gli attributi danno i file aggiuntivi che si vogliono vedere.
(Perchè i file normali sono sempre restituiti quando soddisfano la maschera.)
Si possono aggiungere le seguenti costanti per cedere i file del tipo desiderato: fa_readonly fa_hidden fa_sysfile fa_volumeid fa_directory fa_archive.
file_find_next() Restituisce il nome del prossimo file che soddisfa la maschera e gli attributi dati precedentemente.
Se tale file non esiste, restituisce una stringa vuota.
file_find_close() Deve essere chiamata dopo aver gestito tutti i file per liberare memoria.
file_attributes() fname
attr
Restituisce se il file ha tutti gli attributi dati con attr.
Utilizza una combinazione delle costanti specificate prima.

Le funzioni seguenti possono essere usate per cambiare i nomi dei file.
Da notare che queste funzioni non intervengono sui file attuali, si occupano solo delle stringhe.

filename_name() fname Restituisce il nome del nome di file specificato, con l’estensione ma senza percorso.
filename_path() fname Restituisce il percorso del nome di file specificato, compreso il backslash alla fine.
filename_dir() fname Restituisce la cartella del nome di file specificato, che normalmente corrisponde al percorso escluso il carattere backslash finale.
filename_drive() fname Restituisce l’unità logica, drive, del nome di file specificato.
filename_ext() fname Restituisce l’estensione del nome di file specificato, compreso il punto iniziale.
filename_change_ext() fname
newext
Restituisce il nome, del nome di file specificato, con l’estensione modificata alla nuova estensione newext.
Utilizzando una stringa vuota come nuova estensione si elimina l’estensione attuale.

In rare situations you might need to read data from binary files.
The following low-level routines exist for this:

file_bin_open() fname
mod
Opens the file with the indicated name.
The mode indicates what can be done with the file: 0 = reading, 1 = writing, 2 = both reading and writing).
When the file does not exist it is created.
The function returns the id of the file that must be used in the other functions.
You can open multiple files at the same time (32 max).
Don’t forget to close them once you are finished with them.
file_bin_rewrite() fileid Rewrites the file with the given file id, that is, clears it and starts writing at the start.
file_bin_close() fileid Closes the file with the given file id.
file_bin_size() fileid Returns the size (in bytes) of the file with the given file id.
file_bin_position() fileid Returns the current position (in bytes; 0 is the first position) of the file with the given file id.
file_bin_seek() fileid
pos
Moves the current position of the file to the indicated position.
To append to a file move the position to the size of the file before writing.
file_bin_write_byte() fileid
byte
Writes a byte of data to the file with the given file id.
file_bin_read_byte() fileid Reads a byte of data from the file and returns this.

If the player has checked secure mode in his preferences, for a number of these routines, you are not allowed to specify a path, and only files in the application folder can e.g. be written.

If you included files in the game executable and did not automatically export them at the start of the game, you can use the following functions to do this.

export_include_file() fname Exports the included file with the name fname.
This must be a string variable, so don’t forget the quotes.
export_include_file_location() fname
location
Exports the included file with the name fname to the given location.
Location must contain the path and the filename.
discard_include_file() fname Discard the included file with the name fname, freeing the memory used.
This must be a string variable, so don’t forget the quotes.

The following four read-only variables can be useful:

game_id Unique identifier for the game.
You can use this if you need a unique file name.
working_directory Working directory for the game.
(Not including the final backslash.)
program_directory Directory in which the game executable is stored.
(Not including the final backslash.)
When you run a standalone game this is normally the same as the working directory unless the game e.g. opens a file using the file selector.
Note that when testing a game you are creating the program and working directory will be different.
In that case the working directory is the place where the editable version is stored while the program directory is a temporary directory for testing.
temp_directory Temporary directory created for the game.
(Not including the final backslash.)
You can store temporary files here.
They will be removed at the end of the game.

In certain situations you might want to give players the possibility of providing command line arguments to the game they are running (for example to create cheats or special modes).
To get these arguments you can use the following two routines

parameter_count() Returns the number of command-line parameters.
The actual parameters can be retrieved with the following function.
parameter_string(n) Returns command-line parameters n.
The first parameter has index 1.
The last one has index parameter_count().
Index 0 is a special one.
It is the filename of the game executable (including the path).

You can read the value of environment variables using the following function:

environment_get_variable() name Returns the value (a string) of the environment variable with the given name.

Finally, if you are interested in the size of the disk and the free space, you can use the following functions:

disk_size() drive Returns the size of the indicated drive in bytes.
drive must be a capital letter, e.g. ‘C’.
If you do not provide the drive, the drive of the current working directory is used.
disk_free() drive Returns the amount of free space on the indicated drive in bytes.
drive must be a capital letter, e.g. ‘C’.
If you do not provide the drive, the drive of the current working directory is used.

Lascia un commento