Uma coisa que quase todos os aplicativos e jogos têm em comum é a necessidade de armazenar e recuperar dados. Até mesmo o jogo mais simples pode utilizar o SQLite para salvar o número da versão do aplicativo, que pode ser usado para garantir a compatibilidade ao realizar upgrades, ou configurações simples, como ativar ou desativar o som do jogo.
Se você nunca trabalhou muito com bancos de dados ou usou os recursos do banco de dados no Corona SDK, não se preocupe. Na verdade, é um processo relativamente simples, graças ao poder do LUA e do mecanismo de banco de dados SQLite utilizado no Corona SDK. Este tutorial irá percorrer o processo de criação de uma tabela de configurações, armazenando e recuperando informações dela.
Tenha em mente que essa técnica pode ir além do armazenamento de configurações baseadas no usuário. Por exemplo, e se você tiver um jogo que pode ser jogado usando diferentes modos de jogo, como o modo "história" e o modo "arcada". Essa tabela de configurações pode ser usada para armazenar o modo atual. Qualquer outro dado que você queira manter persistente mesmo se o usuário sair do jogo e o relançar.
Inicializando o banco de dados e criando a tabela de configurações.
A primeira coisa que precisamos fazer é declarar a biblioteca SQLite e informar ao nosso aplicativo onde encontrar o arquivo do banco de dados. O melhor lugar para colocar esse código está no topo do arquivo main.lua junto com as outras instruções require. O arquivo de banco de dados será criado se nenhum for encontrado, e nós o armazenaremos na pasta Documentos para que possamos ler e escrever nele.
require "sqlite3" local data_path = system.pathForFile ("data.db", system.DocumentsDirectory); db = sqlite3.open (data_path);
Observe como a variável "db" não está localizada. Fizemos isso para garantir que podemos acessar o banco de dados em todo o nosso projeto. Você também pode criar um arquivo .lua específico para todas as funções do banco de dados e manter o banco de dados localizado nesse arquivo.
Em seguida, precisamos criar a tabela de banco de dados que armazenará nossas configurações:
local sql = "CRIAR TABELA SE NÃO EXISTE as configurações (nome, valor);" db: exec (sql);
Esta declaração cria nossa tabela de configurações. Não há problema em executá-lo sempre que o aplicativo for carregado, porque se a tabela já existir, essa instrução não fará nada. Você pode colocar essa declaração diretamente abaixo de onde declaramos o banco de dados ou na função que configura seu aplicativo para ser executado. O principal requisito é (1) executar essas instruções toda vez que o aplicativo é iniciado e (2) executá-lo antes de qualquer chamada para carregar ou salvar configurações.
Salvando configurações no banco de dados.
function setSetting (nome, valor) sql = "DELETE FROM configurações WHERE name = '" .. name .. "'"; db: exec (sql) sql = "Configurações INSERT INTO (nome, valor) VALUES ('" ..name .. "'," .. valor .. ");"; db: exec (sql) end
function setSettingString (nome, valor) setSetting (nome, "'" .. valor .. "'"); end
A função de configuração apaga todas as configurações anteriores salvas na tabela e insere nosso novo valor. Ele funcionará com números inteiros e strings, mas salvar uma string requer aspas simples ao redor do valor, então usamos a função setSettingString para fazer esse trabalho extra para nós.
Carregando configurações do banco de dados.
function getSetting (nome)
local sql = "SELECT * FROM configurações WHERE name = '" .. name .. "'"; valor local = -1;
para linha no db: nrows (sql) do valor = row.value; fim
valor de retorno; fim
function getSettingString (name) local sql = "SELECT * FROM configurações WHERE nome = '" .. nome .. "'"; valor local = '';
para linha no db: nrows (sql) do valor = row.value; fim
valor de retorno; fim
Como acima, nós dividimos as funções em duas versões: uma para inteiros e outra para strings. A principal razão que fizemos isso é para que possamos inicializá-los com valores específicos se não houver nenhuma configuração no banco de dados. A função getSetting retornará -1, o que nos informará que a configuração não foi salva. O getSettingString retornará uma string em branco.
A função getSettingString é completamente opcional. A única diferença entre ele e a função normal getSetting é o que é retornado se nada for encontrado no banco de dados.
Usando nossa tabela de configurações.
Agora que temos o trabalho pesado feito, podemos facilmente carregar e salvar configurações em um banco de dados localizado. Por exemplo, podemos silenciar o som com a seguinte declaração:
setSetting ('som', falso);
E poderíamos utilizar a configuração em uma função global para reproduzir sons:
function playSound (soundID) if (getSetting ('sound')), em seguida, audio.play (soundID) endend
Para reativar o som, simplesmente definimos a configuração do som como true:
setSetting ('som', verdadeiro);
A parte interessante sobre essas funções é que você pode salvar seqüências de caracteres ou números inteiros na tabela de configurações e recuperá-los facilmente. Isso permite que você faça qualquer coisa, desde salvar o nome de um jogador até salvar sua pontuação mais alta.




