نحوه بارگیری و ذخیره اطلاعات بازی در SDK Corona

نحوه استفاده از SQLite برای ذخیره داده ها و تنظیمات بازی

یک چیز تقریبا در هر برنامه و بازی مشترک است که نیاز به ذخیره و بازیابی داده ها است. حتی ساده ترین بازی می تواند SQLite را برای صرفه جویی در شماره نسخه برنامه، که می تواند برای اطمینان از سازگاری در هنگام ارتقاء، و یا تنظیمات ساده مانند چرخش صدا در بازی یا خاموش استفاده از SQLite استفاده کنید.

اگر هرگز با پایگاه های داده ای کار نکرده اید یا از ویژگی های پایگاه داده Corona SDK استفاده نکنید، نگران نباشید. این واقعا یک فرآیند نسبتا ساده است به لطف قدرت LUA و موتور پایگاه داده SQLite که در Corona SDK مورد استفاده قرار می گیرد. این آموزش در فرآیند ایجاد یک جدول تنظیم و هر دو ذخیره و بازیابی اطلاعات از آن پیاده می شود. چگونه برنامه های اپل را توسعه دهیم.

همچنین در نظر داشته باشید که این روش می تواند فراتر از ذخیره سازی تنظیمات مبتنی بر کاربر باشد. به عنوان مثال، اگر شما یک بازی داشته باشید که می تواند با استفاده از حالت های مختلف بازی مانند حالت "داستان" و "بازی" بازی کند. این جدول تنظیمات می تواند برای ذخیره حالت فعلی مورد استفاده قرار گیرد. یا هر بخش دیگری از اطلاعاتی که می خواهید باقی بمانید حتی اگر کاربر از بازی خارج شود و آن را مجددا راه اندازی کند.

مرحله اول: ابتدایی پایگاه داده و ایجاد جدول تنظیمات

اولین چیزی که باید انجام دهیم این است که بایگانی SQLite را اعلام کنیم و برنامه ما را در کجا پیدا کنیم تا فایل پایگاه داده را پیدا کنیم. بهترین مکان برای قرار دادن این کد درست در بالای فایل main.lua همراه با دیگر دستورات نیاز است. فایل پایگاه داده ایجاد خواهد شد در صورتی که هیچ کدام یافت نشود و ما آن را در پوشه اسناد ذخیره خواهیم کرد تا بتوانیم آن را بخوانیم و به آن بنویسیم.

نیاز به "sqlite3"
data_path = system.pathForFile محلی ("data.db"، system.DocumentsDirectory)؛
db = sqlite3.open (data_path)؛

توجه کنید که متغیر "db" محلی نیست. ما این کار را انجام دادیم تا مطمئن شویم که می توانیم در تمام پروژه هایمان دسترسی به پایگاه داده داشته باشیم. شما همچنین می توانید یک فایل خاص .lua برای تمام توابع پایگاه داده ایجاد کنید و پایگاه داده را به آن فایل نگه دارید.

بعد، ما نیاز به ایجاد جدول پایگاه داده ای داریم که تنظیمات ما را ذخیره می کند:

sql محلی = "ایجاد جدول در صورتی که تنظیمات وجود ندارد (نام، ارزش)؛"
db: exec (sql)؛

این بیانیه جدول تنظیمات ما را ایجاد می کند. هر بار که برنامه بارگذاری می شود، آن را به درستی اجرا می کند، زیرا اگر جدول در حال حاضر وجود داشته باشد، این بیانیه هیچ کاری انجام نمی دهد. شما می توانید این بیانیه را درست زیر جایی که پایگاه داده را اعلام کرده اید و یا در عملکردی که برنامه شما را اجرا می کند را اجرا کنید. ضروری اصلی این است که (1) این اظهارات را هر بار که برنامه راه اندازی می شود اجرا کنید و (2) آن را قبل از هر گونه تماس برای بارگذاری یا ذخیره تنظیمات اجرا کنید.

مرحله دوم: صرفه جویی در تنظیمات به پایگاه داده

function setSetting (نام، ارزش)
sql = "حذف از تنظیمات WHERE name = '" .. نام .. ""'؛
db: exec (sql)

sql = "INSERT INTO تنظیمات (نام، ارزش) VALUES (" "..name .." "،" .. ارزش .. ")؛"؛
db: exec (sql)
پایان

function setSettingString (نام، ارزش)
setSetting (نام، "" ".. ارزش .." "')؛
پایان

تابع setSetting هر تنظیم قبلی را که در جدول ذخیره شده است حذف می کند و مقدار جدیدی را وارد می کند. این کار با هر دو عدد صحیح و رشته کار می کند، اما صرفه جویی در یک رشته نیاز به یک نقل قول در اطراف ارزش، بنابراین ما از عملکرد setSettingString برای انجام این کار اضافی برای ما استفاده می شود.

مرحله سوم: بارگیری تنظیمات از پایگاه داده

function getSetting (نام)

sql محلی = "SELECT * FROM تنظیمات WHERE name =" ".. نام .." "'؛
مقدار محلی = -1؛

برای ردیف در db: nrows (sql) انجام دهید
value = row.value؛
پایان

مقدار بازگشتی؛
پایان

function getSettingString (نام)
sql محلی = "SELECT * FROM تنظیمات WHERE name =" ".. نام .." "'؛
مقدار محلی = ''؛

برای ردیف در db: nrows (sql) انجام دهید
value = row.value؛
پایان

مقدار بازگشتی؛
پایان

همانطور که قبلا ذکر شد، توابع را به دو نسخه تقسیم کردیم: یکی برای عدد صحیح و دیگری برای رشته ها. دلیل اصلی این کار این است که ما می توانیم آنها را با مقادیر خاصی مقداردهی کنیم اگر هیچ تنظیماتی در پایگاه داده وجود ندارد. تابع getSetting یک -1 را نشان می دهد که به ما اطلاع خواهد داد که تنظیمات ذخیره نشده است. getSettingString یک رشته خالی را بازگرداند.

عملکرد getSettingString کاملا اختیاری است. تنها تفاوت بین آن و عملکرد normal getSetting چیزی است که اگر چیزی در پایگاه داده یافت نشد بازگردانده شود.

مرحله چهارم: با استفاده از جدول تنظیمات ما

اکنون که کار سختی انجام می شود، ما می توانیم به راحتی تنظیمات را به یک پایگاه داده محلی بارگیری و ذخیره کنیم. به عنوان مثال، ما می توانیم صدا را با عبارت زیر خاموش کنیم:

setSetting ('صدا'، نادرست)؛

و ما می توانیم از تنظیمات در یک تابع جهانی برای پخش صدا استفاده کنیم:

تابع playSound (soundID)
اگر (getSetting ('صدا')) سپس
audio.play (soundID)
پایان
پایان

برای روشن کردن صدا، ما به سادگی تنظیم صدا را به درستی تنظیم می کنیم:

setSetting ('صدا'، درست)؛

بخش خوبی در مورد این توابع می توانید رشته ها یا عدد صحیح را به جدول تنظیمات ذخیره کنید و آنها را به راحتی بازیابی کنید. این اجازه می دهد تا شما را از صرفه جویی در یک نام بازیکن به صرفه جویی در نمره بالا خود را انجام دهید.

Corona SDK: چگونه به لایه گرافیکی، انتقال گرافیک و گرافیک به جلو بروید