အဆိုပါ Corona SDK ကိုအတွက် Load နှင့်ကြော်ငြာကို Save လုပ်ရန်ဂိမ်းဒေတာများဖို့ကိုဘယ်လို

ဂိမ်းဒေတာနှင့်ချိန်ညှိချက်များကိုသိမ်းထားဖို့ SQLite အသုံးပြုနည်းကိုဘယ်လို

နီးပါးတိုင်း app နဲ့ဂိမ်းဘုံထဲမှာရှိပါတယ်အရာတစ်ခုမှာ data တွေကိုသိုလှောင်သိမ်းဆည်းခြင်းနှင့်ပြန်လည်ရယူရန်လိုအပ်ကြောင်းဖြစ်ပါတယ်။ တောင်မှအများဆုံးရိုးရှင်းသောဂိမ်း app ကိုဗားရှင်းအဆင့်မြှင့်ဖျော်ဖြေတဲ့အခါမှာ Compatibility ကိုသေချာစေရန်အသုံးပြုရနိုင်သည့်အရေအတွက်, သို့မဟုတ်ထိုကဲ့သို့သောသို့မဟုတ်ပိတ်ဂိမ်းရဲ့အသံကိုလှည့်အဖြစ်ရိုးရှင်းတဲ့အပြင်အဆင်များကိုသိမ်းဆည်းရန် SQLite အသုံးချနိုင်ပါတယ်။

သင်အတွက် databases ကိုသို့မဟုတ်အသုံးပြုတဲ့ဒေတာဘေ့စ features တွေနှင့်အတူအများကြီးလုပ်စရာတွေဘယ်တော့မှမဖွင့်ဆိုပါက Corona SDK ကို , စိုးရိမ်ပူပန်ကြပါဘူး။ ဒါဟာအမှန်တကယ် LUA ၏တန်ခိုးနှင့် Corona SDK ကိုအသုံးပြုသွားမည်အဆိုပါ SQLite database ကိုအင်ဂျင်တစ်ခုအတော်လေးရိုးရှင်းတဲ့လုပ်ငန်းစဉ်ကျေးဇူးတင်စကားပါပဲ။ ဒီသင်ခန်းစာတစ်ခု setting များကိုစားပွဲနှင့်နှစ်ဦးစလုံးသိမ်းဆည်းသောဖန်တီးခြင်းနှင့်ကနေအချက်အလက်များကိုပြန်ထုတ်ယူ၏လုပ်ငန်းစဉ်မှတဆင့်လမ်းလျှောက်ပါလိမ့်မယ်။ အိုင်ပက် apps များဖွံ့ဖြိုးတိုးတက်ဖို့ဘယ်လို။

ဒါ့အပြင်ဒီ technique ကိုအသုံးပြုသူ-based setting များကိုသိုလှောင်ကျော်လွန်သွားနိုင်ပါတယ်ဆိုတာကိုသတိရ။ ဥပမာအားဖြင့်, သင်သည်ထိုသို့သော "ပုံပြင်" mode ကိုနှင့် "Arcade" mode ကိုအဖြစ်ကွဲပြားခြားနားသောဂိမ်း Modes သာသုံးပြီးကစားနိုင်မယ့်ဂိမ်းဘယ်အရာကိုရှိပါက။ ဤဇယားကိုလက်ရှိ mode ကိုသိုလှောင်ဖို့အသုံးပြုနိုင်ပါတယ် settings ။ သငျသညျအသုံးပြုသူဂိမ်းထဲကမလျော့ဘူးလို့ပြောထားတယ်ကြောင့် relaunches လျှင်ပင်မြဲရှိနေဆဲချင်သောအချက်အလက်များ၏သို့မဟုတ်အခြားအပိုင်းအစ။

အဆင့်တစ်: အဆိုပါဒေတာဘေ့စစတင်လုပ်ကိုင်ခြင်းနှင့် setting များကိုစားပွဲကို

ကျနော်တို့လုပ်ဖို့လိုအပ်ပါတယ်ပထမဦးဆုံးအရာ SQLite စာကြည့်တိုက်ကြေညာခြင်းနှင့်ရှိရာဒေတာဘေ့စ file ကိုရှာတွေ့မှကျွန်တော်တို့ရဲ့ app ကိုပြောပြသည်။ ဒီ code ကိုထည့်သွင်းဖို့အကောင်းဆုံးနေရာညာဘက်အခြားထုတ်ပြန်ချက်များလိုအပ်နှင့်အတူ main.lua ဖိုင်ရဲ့ထိပ်မှာဖြစ်ပါတယ်။ အဘယ်သူမျှမတွေ့ရှိခဲ့လျှင်အဆိုပါဒေတာဘေ့စဖိုင်ကိုဖန်တီးပါလိမ့်မည်, ကြှနျုပျတို့ကနေဖတ်ပါနှင့်စာရေးနိုင်အောင်ကျနော်တို့က Documents ဖိုင်တွဲထဲမှာသိုလှောင်သိမ်းဆည်းပါလိမ့်မယ်။

"sqlite3" လိုအပ်
ဒေသခံ data_path = system.pathForFile ( "data.db" system.DocumentsDirectory);
DB = sqlite3.open (data_path);

သည် "DB" variable ကိုဒေသခံစံနှုန်းကိုက်ညီသည်မဟုတ်ဘယ်လောက်သတိပြုပါ။ ကျွန်ုပ်တို့၏စီမံကိန်းကိုတစ်လျှောက်လုံးအတွက်ဒေတာဘေ့စ access လုပ်နိုင်သေချာစေရန်ဤအမှုကိုပြုသောပါတယ်။ သင်တို့သည်လည်းအားလုံးဒေတာဘေ့စလုပ်ဆောင်ချက်များကိုဘို့တိကျတဲ့ .lua ဖိုင်ကိုဖန်တီးကြောင့်ဖိုင်ဒေသခံစံနှုန်းကိုက်ညီသည့်ဒေတာဘေ့စထိန်းသိမ်းထားနိုင်သည်။

ထို့နောက်ကျွန်ုပ်တို့ setting များကိုသိုလှောင်သိမ်းဆည်းမည်ဟူသောဒေတာဘေ့စစားပွဲပေါ်မှာဖန်တီးရန်လိုအပ်:

ဒေသခံ SQL = "မဆက်တင်များ (အမည်, တန်ဖိုး) ရှိမရှိ TABLE CREATE;"
DB: အမှုဆောင်အရာရှိ (SQL);

ဒါကကြေညာချက်ကျွန်တော်တို့ရဲ့ settings ကိုစားပွဲပေါ်မှာဖန်တီးပေးပါတယ်။ စားပွဲတစ်ခုရှိထားပြီးသားပါလျှင်, ဒီကြေညာချက်ဘာမှလုပ်ပေးမည်မဟုတ်ဘာဖြစ်လို့လဲဆိုတော့ဒါဟာအခါတိုင်း app ကိုဝန်က run ဖို့အဆင်ပြေပါတယ်။ သင်မှန်ကျနော်တို့ကဒေတာဘေ့စကြေငြာသို့မဟုတ် run ရန်သင့် app ကိုဖွင့်သတ်မှတ်သော function ကိုအတွက်င့်ဘယ်မှာအောက်မှာဒီကြေညာချက်ထည့်ထားနိုင်ပါတယ်။ အဓိကလိုအပ်ချက် (1) သူတို့အားထုတ်ပြန်ချက်များ app ကိုဖြန့်ချိခြင်းနှင့် (2) setting များကို load သို့မဟုတ်ကယ်ဖို့မဆိုဖုန်းခေါ်ဆိုမှုရှေ့မှာ execute ဖြစ်ပါတယ်အခါတိုင်း execute ရန်ဖြစ်ပါသည်။

အဆင့်နှစ်: အဆိုပါဒေတာဘေ့စဖို့ settings ကိုသိမ်းဆည်းနေ

function ကို setSetting (အမည်, တန်ဖိုး)
SQL = "နေရာအမည်ဖြင့် = setting များကိုအဖြစ်မှဖယ်ရှာ '" .. နာမကိုအမှီ .. "' '";
DB: အမှုဆောင်အရာရှိ (SQL)

SQL = "ဆက်တင်များ (အမည်, တနျဖိုး) Value ထဲသို့ထည့် ( '' ..name .. '", " .. တန်ဖိုးကို .. "); ";
DB: အမှုဆောင်အရာရှိ (SQL)
အဆုံး

function ကို setSettingString (အမည်, တန်ဖိုး)
setSetting (အမည်, "" ' .. တန်ဖိုးကို .. "");
အဆုံး

အဆိုပါ setSetting function ကိုစားပွဲပေါ်မှာသိမ်းဆည်းမည်သည့်ယခင် setting များကိုဖျက်နှင့်ကျွန်ုပ်တို့၏တန်ဖိုးအသစ်ည့။ ဒါဟာကိန်းနှငျ့ကွိုးနှစ်ဦးစလုံးနှင့်အတူအလုပ်လုပ်ပေမယ့်တစ်ဦး string ကိုချွေတာတန်ဖိုးကိုန်းကျင်တစ်ခုတည်းကိုးကားရန်လိုအပ်သည်, ဒါငါတို့အဘို့အအလုပ်၏အပိုနည်းနည်းလုပ်ဖို့ setSettingString function ကိုအသုံးပြုခဲ့ပြီးပြီပါလိမ့်မယ်။

အဆင့်သုံး: အဆိုပါဒေတာဘေ့စကနေ Loading settings ကို

function ကို getSetting (အမည်)

ဒေသခံ SQL = "နေရာအမည်ဖြင့် = setting များကို FROM မှ * SELECT" .. နာမကိုအမှီ .. " ''";
ဒေသခံတနျဖိုး = -1;

DB ထဲမှာအတန်းများအတွက်: nrows (SQL) ပြုပါ
တနျဖိုး = row.value;
အဆုံး

ပြန်လာတန်ဖိုး,
အဆုံး

function ကို getSettingString (အမည်)
ဒေသခံ SQL = "နေရာအမည်ဖြင့် = setting များကို FROM မှ * SELECT" .. နာမကိုအမှီ .. " ''";
ဒေသခံတနျဖိုး = '';

DB ထဲမှာအတန်းများအတွက်: nrows (SQL) ပြုပါ
တနျဖိုး = row.value;
အဆုံး

ပြန်လာတန်ဖိုး,
အဆုံး

ကိန်းဘို့တနှငျ့ကွိုးဘို့တ: အထက်တွင်အဖြစ်ကျနော်တို့နှစ်ဦးကိုဗားရှင်းသို့ functions တွေကျိုးပဲ့ပါတယ်။ အဘယ်သူမျှမ setting ကို database တွင်တည်ရှိနေလျှင်ကျွန်တော်တိကျတဲ့တန်ဖိုးများသူတို့နှင့်အတူစတငျနိုငျအောငျကြှနျုပျတို့သညျဤအမှုကိုပြုပါတယ်အဓိကအကြောင်းရင်းဖြစ်ပါတယ်။ အဆိုပါ getSetting function ကိုကို setting ကိုမသိမ်းဆည်းရသေးတော်မူကြောင်းကိုသိစေပါလိမ့်မယ်တဲ့ -1, ပြန်လာပါလိမ့်မယ်။ အဆိုပါ getSettingString တစ်ဦးအလွတ် string ကိုပြန်လာပါလိမ့်မယ်။

အဆိုပါ getSettingString function ကိုလုံးဝ optional ကိုဖြစ်ပါတယ်။ ဒါဟာနှင့်ပုံမှန် getSetting function ကိုအကြားရှိတစ်ခုတည်းသောခြားနားချက်ဘာမျှ database တွင်တွေ့ရှိခဲ့လျှင်ပြန်ရောက်နေသည်အရာဖြစ်တယ်။

အဆင့်လေး: ကျွန်တော်တို့ရဲ့ settings ကိုစားပွဲပေါ်မှာအသုံးပြုခြင်း

အခုဆိုရင်ကျနော်တို့ကခဲယဉ်းအလုပ်ကိုယ်ပြုမိသောကျနော်တို့အလွယ်တကူ load နှင့်ဒေသတွင်းဒေတာဘေ့စဖို့ setting များကိုကယ်တင်နိုင်ပါ။ ဥပမာအားဖြင့်ကျနော်တို့ကအောက်ပါကြေညာချက်နှင့်အတူအသံအသံပိတ်နိုင်:

setSetting ( 'သံကို' အယူမှား);

ငါတို့သည်အသံကစားများအတွက်ကမ္ဘာလုံးဆိုင်ရာ function ကိုအတွက် setting ကိုအကျိုးရှိစွာအသုံးချနိုင်:

function ကို playSound (soundID)
(getSetting ( 'သံကို' ')) လျှင်
audio.play (soundID)
အဆုံး
အဆုံး

ကျောဘက်မှာအသံဖွင့်ဖို့ကျနော်တို့ရိုးရှင်းစွာစစ်မှန်သောမှ setting အသံ set:

setSetting ( 'သံကို' စစ်မှန်တဲ့);

ဒီလုပ်ဆောင်ချက်တွေကို ပတ်သက်. ကောင်းတဲ့အစိတ်အပိုင်းတစ်ခုသင် settings ကိုစားပွဲပေါ်မှာမှညှို့သို့မဟုတ်ကိန်းကယ်တင်နဲ့အလွယ်တကူသူတို့ကိုပြန်လည်ရယူနိုင်ပါတယ်ဖြစ်ပါတယ်။ ဒီအသင်သည်သူတို့၏မြင့်မားသောရမှတ်ချွေတာရန်ကစားသမားရဲ့နာမညျကိုချွေတာမှတစုံတခုကိုလုပ်ဖို့ခွင့်ပြုပါတယ်။

Corona SDK ကိုဘယ်လို, ဂရစ်ဖစ် Layer ဂရစ်ဖစ်ရွှေ့ခြင်းနှင့်တပ်ဦးမှဂရစ်ဖစ်ကိုယူခဲ့ဖို့