Presque toutes les applications et tous les jeux ont en commun le besoin de stocker et de récupérer des données. Même le jeu le plus simple peut utiliser SQLite pour enregistrer le numéro de version de l'application, qui peut être utilisé pour assurer la compatibilité lors des mises à niveau ou pour effectuer des réglages simples comme activer ou désactiver le son du jeu.
Si vous n'avez jamais beaucoup travaillé avec des bases de données ou utilisé les fonctionnalités de base de données dans le SDK Corona, ne vous inquiétez pas. Il s'agit en fait d'un processus relativement simple grâce à la puissance de LUA et du moteur de base de données SQLite utilisé dans le SDK Corona. Ce didacticiel vous expliquera comment créer un tableau de paramètres, ainsi que stocker et récupérer des informations.
Gardez à l'esprit que cette technique peut aller au-delà du stockage de paramètres basés sur l'utilisateur. Par exemple, si vous avez un jeu qui peut être joué en utilisant différents modes de jeu tels que le mode "histoire" et le mode "arcade". Ce tableau de paramètres peut être utilisé pour stocker le mode actuel. Toute autre donnée que vous voulez conserver, même si l’utilisateur quitte le jeu et la relance.
Initialisation de la base de données et création du tableau de paramètres.
La première chose à faire est de déclarer la bibliothèque SQLite et d'indiquer à notre application où trouver le fichier de base de données. Le meilleur endroit pour mettre ce code est juste en haut du fichier main.lua avec les autres instructions require. Le fichier de base de données sera créé si aucun n'est trouvé, et nous le stockerons dans le dossier Documents afin que nous puissions le lire et l'écrire.
require "sqlite3" local data_path = system.pathForFile ("data.db", system.DocumentsDirectory); db = sqlite3.open (data_path);
Notez que la variable "db" n'est pas localisée. Nous l'avons fait pour pouvoir accéder à la base de données tout au long de notre projet. Vous pouvez également créer un fichier .lua spécifique pour toutes les fonctions de base de données et conserver la base de données localisée dans ce fichier.
Ensuite, nous devons créer la table de base de données qui stockera nos paramètres:
local sql = "CREATE TABLE IF NOT EXISTS paramètres (nom, valeur);" db: exec (sql);
Cette instruction crée notre tableau de paramètres. Vous pouvez l'exécuter à chaque chargement de l'application, car si la table existe déjà, cette instruction ne fera rien. Vous pouvez placer cette déclaration directement sous l'endroit où nous avons déclaré la base de données ou dans la fonction qui configure l'exécution de votre application. La principale exigence est (1) d'exécuter ces instructions à chaque lancement de l'application et (2) de les exécuter avant tout appel de chargement ou d'enregistrement de paramètres.
Enregistrement des paramètres dans la base de données.
function setSetting (nom, valeur) sql = "SUPPRIMER DE paramètres WHERE nom = '" .. nom .. "" "; db: exec (sql) sql = "INSERT INTO paramètres (nom, valeur) VALEURS ('" ..nom .. "'," .. valeur .. ");"; db: exec (sql) end
fonction setSettingString (nom, valeur) setSetting (nom, "'" .. valeur .. "'"); fin
La fonction de réglage supprime tous les paramètres précédents enregistrés dans la table et insère notre nouvelle valeur. Cela fonctionnera avec les entiers et les chaînes, mais l'enregistrement d'une chaîne nécessite des guillemets autour de la valeur. Nous avons donc utilisé la fonction setSettingString pour effectuer ce petit travail supplémentaire pour nous.
Chargement des paramètres de la base de données.
fonction getSetting (nom)
local sql = "SELECT * FROM paramètres WHERE name = '" .. name .. "'"; valeur locale = -1;
pour row in db: nrows (sql) do value = row.value; fin
valeur de retour; fin
function getSettingString (name) local sql = "SELECT * FROM paramètres WHERE name = '" .. name .. "'"; valeur locale = '';
pour row in db: nrows (sql) do value = row.value; fin
valeur de retour; fin
Comme ci-dessus, nous avons divisé les fonctions en deux versions: une pour les entiers et une pour les chaînes. La raison principale est que nous pouvons les initialiser avec des valeurs spécifiques si aucun paramètre n'existe dans la base de données. La fonction getSetting renvoie -1, ce qui nous permet de savoir que le paramètre n'a pas été enregistré. GetSettingString retournera une chaîne vide.
La fonction getSettingString est complètement optionnelle. La seule différence entre cela et la fonction getSetting normale est ce qui est renvoyé si rien n'est trouvé dans la base de données.
Utilisation de notre tableau de paramètres.
Maintenant que nous avons fait le travail, nous pouvons facilement charger et enregistrer les paramètres dans une base de données localisée. Par exemple, nous pourrions couper le son avec l'énoncé suivant:
setSetting ('son', faux);
Et nous pourrions utiliser le réglage dans une fonction globale pour jouer des sons:
function playSound (soundID) si (getSetting ('sound')), puis audio.play (soundID) se termine
Pour réactiver le son, nous définissons simplement le paramètre de son sur true:
setSetting ('son', vrai);
La bonne chose à propos de ces fonctions est que vous pouvez enregistrer des chaînes ou des entiers dans la table de paramètres et les récupérer facilement. Cela vous permet de tout faire, de la sauvegarde du nom d'un joueur à la sauvegarde de son meilleur score.