Si të ngarkoni dhe ruani të dhënat e lojës në SDK Corona

Si të përdorni SQLite për të ruajtur të dhënat e të dhënave dhe cilësimet

Një gjë që pothuajse çdo aplikacion dhe lojë ka të përbashkët është nevoja për të ruajtur dhe rifituar të dhënat. Edhe loja më e thjeshtë mund të përdorë SQLite për të ruajtur numrin e versionit të aplikacionit, i cili mund të përdoret për të siguruar përputhshmërinë kur kryen përmirësime ose cilësime të thjeshta të tilla si ndezja ose fikja e zërit të lojës.

Nëse nuk keni bërë shumë punë me bazat e të dhënave ose keni përdorur karakteristikat e bazës së të dhënave në SDK Corona , mos u shqetësoni. Është në të vërtetë një proces relativisht i drejtpërdrejtë falë fuqisë së LUA dhe motorit të bazës së të dhënave SQLite të përdorur në SDK Corona. Ky tutorial do të ecë gjatë procesit të krijimit të një tabele të cilësimeve dhe si ruajtjen dhe marrjen e informacionit prej saj. Si të zhvilloni aplikacionet iPad.

Gjithashtu mbani në mend se kjo teknikë mund të shkojë përtej ruajtjes së cilësimeve të përdoruesit. Për shembull, çfarë nëse keni një lojë që mund të luhet duke përdorur mënyra të ndryshme të lojës si modaliteti "histori" dhe modaliteti "arcade". Kjo tabelë e cilësimeve mund të përdoret për të ruajtur mënyrën e tanishme. Ose ndonjë pjesë tjetër e të dhënave që dëshironi të mbeteni këmbëngulës edhe nëse përdoruesi largohet nga loja dhe e rifillon atë.

Hapi i parë: Fillimi i bazës së të dhënave dhe krijimi i tabelës së cilësimeve

Gjëja e parë që duhet të bëjmë është të deklarojmë bibliotekën SQLite dhe të tregojmë aplikacionin tonë për të gjetur skedarin e bazës së të dhënave. Vendi më i mirë për të vënë këtë kod është e drejtë në krye të skedarit main.lua së bashku me të tjera kërkojnë deklarata. Dosja e bazës së të dhënave do të krijohet nëse nuk gjendet asnjë, dhe ne do ta ruajmë atë në dosjen e Dokumenteve në mënyrë që ne të mund të lexojmë prej tij dhe t'i shkruajmë.

kërkojnë "sqlite3"
vendore data_path = system.pathForFile ("data.db", system.DocumentsDirectory);
db = sqlite3.open (data_path);

Vini re se ndryshuesi "db" nuk është i lokalizuar. Ne e kemi bërë këtë për të siguruar që ne mund të hyjmë në bazën e të dhënave gjatë gjithë projektit tonë. Ju gjithashtu mund të krijoni një skedar të veçantë .lua për të gjitha funksionet e bazës së të dhënave dhe mbani bazën e të dhënave të lokalizuar në atë skedar.

Tjetra, ne duhet të krijojmë tabelën e bazës së të dhënave që do të ruajë cilësimet tona:

sql lokale = "CREATE TABLE NUK ESHTE ekzistuar settings (name, value);"
db: exec (sql);

Kjo deklaratë krijon tabelën e cilësimeve tona. Është në rregull që ta ekzekutosh sa herë që aplikohet ngarkesa, sepse nëse tabela tashmë ekziston, kjo deklaratë nuk do të bëjë asgjë. Ju mund ta vendosni këtë deklaratë nën të cilën kemi deklaruar bazën e të dhënave ose në funksionin që vendos aplikacionin tënd për të kandiduar. Kërkesa kryesore është (1) për të ekzekutuar ato deklarata sa herë që aplikacioni është nisur dhe (2) ta ekzekutojë atë përpara çdo thirrjeje për të ngarkuar ose ruajtur cilësimet.

Hapi i dytë: Ruajtja e cilësimeve në bazën e të dhënave

funksioni i vendosjes (emri, vlera)
sql = "DELETE FROM settings ku emri = '" .. emri .. "'";
db: exec (sql)

sql = "INSERT INTO cilësimet (emri, vlera) VLERAT ('" ..name .. "'," .. vlera .. ");";
db: exec (sql)
fund

funksion setSettingString (emri, vlera)
setSetting (emri, "" ".. vlerën .." ");
fund

Funksioni SetSetting fshin cilësimet e mëparshme të ruajtura në tabelë dhe fut vlerën tonë të re. Do të punojë me të dy integers dhe vargjet, por ruajtja e një vargu kërkon citate të vetme rreth vlerës, kështu që ne kemi përdorur funksionin setSettingString për të bërë atë punë shtesë për ne.

Hapi i tretë: Vendosja e cilësimeve nga baza e të dhënave

funksioni getSet (emër)

sql lokale = "SELECT * FROM settings WHERE name = '" .. Emri .. "'";
vlera lokale = -1;

për rresht në db: nrows (sql) do
vlera = row.value;
fund

vlera e kthimit;
fund

funksioni getSettingString (emër)
sql lokale = "SELECT * FROM settings WHERE name = '" .. Emri .. "'";
vlera lokale = '';

për rresht në db: nrows (sql) do
vlera = row.value;
fund

vlera e kthimit;
fund

Si më sipër, ne kemi thyer funksionet në dy versione: një për integers dhe një për vargjet. Arsyeja kryesore që kemi bërë është që ne të mund t'i inicizojmë ato me vlera të caktuara nëse nuk ekziston një mjedis në bazën e të dhënave. Funksioni getSetting do të kthejë një -1, i cili do të na njoftojë se vendosja nuk është ruajtur. GetSettingString do të kthejë një varg bosh.

Funksioni getSettingString është plotësisht opcional. Dallimi i vetëm në mes të tij dhe funksionit normal getSetting është ajo që kthehet nëse asgjë nuk gjendet në bazën e të dhënave.

Hapi i katërt: Përdorimi i tabelës së cilësimeve tona

Tani që kemi bërë punën e vështirë, mund të ngarkojmë lehtë dhe ruajmë cilësimet në një bazë të dhënash të lokalizuar. Për shembull, mund ta zmadhonim zërin me deklaratën e mëposhtme:

setSetting ( 'shëndoshë', false);

Dhe ne mund të përdorim vendosjen në një funksion global për të luajtur tingujt:

funksioni playSound (soundID)
nëse (getSetting ('zë')) atëherë
audio.play (soundID)
fund
fund

Për ta kthyer përsëri zërin, thjesht vendosim vendosjen e zërit në të vërtetë:

setSetting ( 'shëndoshë', i vërtetë);

Pjesa e bukur për këto funksione është që ju mund të ruani vargjet ose numrat e plotë në tabelën e cilësimeve dhe t'i merrni lehtë. Kjo ju lejon të bëni asgjë nga ruajtja e emrit të një lojtari për të kursyer rezultatin e tyre të lartë.

Corona SDK: Si të Layer Graphics, Leviz Grafika dhe të sjellë Grafika në Front