Como cargar e gardar datos do xogo no SDK de Corona

Como usar SQLite para almacenar datos e configuración de xogos

Unha cousa que case todas as aplicacións e os xogos ten en común é a necesidade de almacenar e recuperar datos. Mesmo o xogo máis sinxelo pode usar SQLite para gardar o número da versión da aplicación, que se pode empregar para garantir a compatibilidade ao realizar actualizacións ou configuracións sinxelas como activar ou desactivar o son do xogo.

Se nunca fixeches moito traballo con bases de datos ou empregaches as funcións da base de datos no Corona SDK , non te preocupes. En realidade é un proceso relativamente sinxelo grazas ao poder de LUA e ao motor de base de datos SQLite utilizado no Corona SDK. Este tutorial percorrerá o proceso de creación dunha táboa de configuración e almacenará e recuperará información. Como desenvolver aplicacións para iPad.

Tamén ten en conta que esta técnica pode ir alén do almacenamento de configuracións baseadas nos usuarios. Por exemplo, e se ten un xogo que se pode xogar con diferentes modos de xogo como o modo "historia" e o modo "arcade". Esta táboa de configuración pódese empregar para almacenar o modo actual. Ou calquera outro dato que desexe manter persistente mesmo se o usuario sae do xogo e relanzao.

Primeiro paso: Inicializar a base de datos e crear a táboa de configuración

O primeiro que debemos facer é declarar a biblioteca de SQLite e dicir a nosa aplicación onde atopar o ficheiro de base de datos. O mellor lugar para poñer este código está na parte superior do arquivo main.lua xunto coas outras declaracións requiridas. O ficheiro de base de datos crearase se non se atopa ningún e almacenámoslo no cartafol de documentos para que poidamos ler e escribir nel.

requiren "sqlite3"
local data_path = system.pathForFile ("data.db", system.DocumentsDirectory);
db = sqlite3.open (ruta de datos);

Observe como a "db" non está localizada. Fixemos isto para asegurarnos de que podamos acceder á base de datos ao longo do noso proxecto. Tamén pode crear un ficheiro .lua específico para todas as funcións da base de datos e manter a base de datos localizada para ese ficheiro.

A continuación, necesitamos crear a táboa de base de datos que almacenará a nosa configuración:

local sql = "CREATE TABLE IF NOT EXISTS settings (nome, valor);"
db: exec (sql);

Esta declaración crea a nosa táboa de configuración. Está ben para executa-lo cada vez que se carga a aplicación porque se a táboa xa existe, esta afirmación non fará nada. Podes poñer esta declaración xusto debaixo onde declaramos a base de datos ou a función que configura a túa aplicación para que funcione. O principal requisito é (1) executar esas instrucións cada vez que se lanza a aplicación e (2) executa-lo antes de calquera chamada para cargar ou gardar configuracións.

Paso dous: gardar a configuración na base de datos

función setSetting (nome, valor)
sql = "DELETE FROM settings WHERE name = '" .. name .. "'";
db: exec (sql)

sql = "INSERT INTO axustes (nome, valor) VALORES ('" ..name ... "'," .. value .. ");";
db: exec (sql)
final

función setSettingString (nome, valor)
setSetting (nome, "" ".. valor ..." '");
final

A función Set Set setting elimina calquera configuración previa gardada na táboa e insire o noso novo valor. Vai funcionar con enteiros e secuencias, pero gardar unha cadea require comiñas únicas en torno ao valor, polo que utilizamos a función setSettingString para facer ese traballo extra para nós.

Paso tres: Cargando a configuración da base de datos

get setetting (nome)

local sql = "SELECCIONAR * FROM configuracións WHERE name = '" .. name .. "'";
valor local = -1;

para a fila en db: nrows (sql)
valor = valor.value;
final

valor de retorno;
final

getSettingString función (nome)
local sql = "SELECCIONAR * FROM configuracións WHERE name = '" .. name .. "'";
valor local = '';

para a fila en db: nrows (sql)
valor = valor.value;
final

valor de retorno;
final

Como anteriormente, rotas as funcións en dúas versións: unha para números enteiros e outra para as cadeas. O principal motivo polo que fixemos isto é que podemos inicializalas con valores específicos se non existe ningunha configuración na base de datos. A función getSetting devolverá un -1, que nos avisará que a configuración non se gardou. O getSettingString devolverá unha cadea en branco.

A función getSettingString é completamente opcional. A única diferenza entre el ea función getSetting normal é o que se devolve se non se atopa nada na base de datos.

Paso catro: usando a táboa de opcións

Agora que temos o traballo arduo, podemos cargar e gardar facilmente configuracións nunha base de datos localizada. Por exemplo, poderiamos silenciar o son coa seguinte declaración:

setSetting ('son', falso);

E poderiamos utilizar a configuración nunha función global para reproducir sons:

función playSound (soundID)
se (getSetting ('son')) entón
audio.play (soundID)
final
final

Para activar de novo o son, simplemente configuremos a configuración de son como verdadeira:

setSetting ('son', verdadeiro);

A boa parte destas funcións é que podes gardar cadeas ou números enteiros na táboa de configuración e recuperalos facilmente. Isto permítelle facer algo de gardar o nome dun xogador para gardar a súa puntuación alta.

Corona SDK: Como gravar gráficos, mover gráficos e traer gráficos á fronte