هناك شيء واحد مشترك في كل تطبيق ولعبة تقريبًا هو الحاجة إلى تخزين البيانات واستردادها. حتى أن اللعبة البسيطة يمكنها استخدام SQLite لحفظ رقم إصدار التطبيق ، والذي يمكن استخدامه لضمان التوافق عند إجراء ترقيات ، أو إعدادات بسيطة مثل تشغيل صوت اللعبة أو إيقاف تشغيله.
إذا لم تقم أبداً بعمل الكثير مع قواعد البيانات أو استخدمت ميزات قاعدة البيانات في Corona SDK ، فلا داعي للقلق. إنها في الواقع عملية بسيطة نسبياً بفضل قوة LUA ومحرك قاعدة بيانات SQLite المستخدم في Corona SDK. سوف يمر هذا البرنامج التعليمي خلال عملية إنشاء جدول الإعدادات وتخزين المعلومات واستردادها منها.
ضع في اعتبارك أن هذه التقنية يمكن أن تتجاوز تخزين الإعدادات المستندة إلى المستخدم. على سبيل المثال ، ماذا لو كان لديك لعبة يمكن لعبها باستخدام أوضاع لعبة مختلفة مثل وضع "القصة" ووضع "الممرات". يمكن استخدام جدول الإعدادات هذا لتخزين الوضع الحالي. أي جزء آخر من البيانات ترغب في استمراره حتى إذا خرج المستخدم من اللعبة وأعد تشغيلها.
تهيئة قاعدة البيانات وإنشاء جدول الإعدادات.
أول شيء يتعين علينا القيام به هو إعلان مكتبة SQLite وإخبار تطبيقنا بمكان العثور على ملف قاعدة البيانات. أفضل مكان لوضع هذا الرمز هو الصحيح في أعلى الملف main.lua جنبا إلى جنب مع عبارات أخرى تتطلب. سيتم إنشاء ملف قاعدة البيانات إذا لم يتم العثور على أي شيء ، وسوف نقوم بتخزينه في مجلد "المستندات" حتى نتمكن من قراءته والكتابة إليه.
تتطلب "sqlite3" local data_path = system.pathForFile ("data.db"، system.DocumentsDirectory)؛ db = sqlite3.open (data_path)؛
لاحظ كيف أن المتغير "db" غير مترجم. لقد فعلنا ذلك للتأكد من أنه يمكننا الوصول إلى قاعدة البيانات في جميع أنحاء مشروعنا. يمكنك أيضًا إنشاء ملف .lua محدد لكافة وظائف قاعدة البيانات والحفاظ على قاعدة البيانات مترجمة إلى ذلك الملف.
بعد ذلك ، نحتاج إلى إنشاء جدول قاعدة البيانات الذي سيخزّن إعداداتنا:
local sql = "CREATE TABLE IF NOT EXISTS settings (name، value)؛" db: exec (sql)؛
هذا البيان يخلق جدول الإعدادات لدينا. لا بأس في تشغيله في كل مرة يتم فيها تحميل التطبيق لأنه إذا كان الجدول موجودًا بالفعل ، فلن تفعل هذه العبارة أي شيء. يمكنك وضع هذا البيان مباشرة تحت المكان الذي أعلنا فيه قاعدة البيانات أو في الوظيفة التي تعمل على إعداد تطبيقك للتشغيل. الشرط الرئيسي هو (1) تنفيذ هذه العبارات في كل مرة يتم فيها تشغيل التطبيق و (2) تنفيذه قبل أي مكالمات لتحميل أو حفظ الإعدادات.
حفظ الإعدادات إلى قاعدة البيانات.
function setSetting (name، value) sql = "DELETE FROM settings WHERE name = '" .. name .. "'"؛ db: exec (sql) sql = "INSERT INTO settings (name، value) VALUES ('" ..name .. "'،" .. value .. ")؛"؛ ديسيبل: exec (sql) نهاية
الوظيفة setSettingString (الاسم ، القيمة) setSetting (الاسم ، "'" .. القيمة .. "'") ؛ النهاية
تعمل وظيفة الإعداد على حذف أي إعدادات سابقة تم حفظها في الجدول وإدراج قيمتنا الجديدة. ستعمل مع كل من الأعداد الصحيحة والسلاسل ، ولكن حفظ سلسلة يتطلب اقتباسًا منفردًا حول القيمة ، لذلك استخدمنا وظيفة setSettingString للقيام بهذا العمل الإضافي بالنسبة لنا.
تحميل الإعدادات من قاعدة البيانات.
وظيفة getSetting (الاسم)
local sql = "SELECT * FROM settings WHERE name = '" .. name .. "'"؛ القيمة المحلية = -1؛
للصف في db: nrows (sql) do قيمة = row.value؛ النهاية
قيمة العودة ؛ نهاية
function getSettingString (name) local sql = "SELECT * FROM settings WHERE name = '" .. name .. "'"؛ القيمة المحلية = ''؛
للصف في db: nrows (sql) do قيمة = row.value؛ النهاية
قيمة العودة ؛ نهاية
كما ذكرنا أعلاه ، قمنا بكسر الوظائف إلى نسختين: واحدة للأعداد الصحيحة والأخرى للسلاسل. السبب الرئيسي في أننا قمنا بذلك هو أننا نستطيع أن نهيئهم بقيم محددة في حالة عدم وجود أي إعداد في قاعدة البيانات. ستقوم الدالة getSetting بإرجاع 1 ، والذي سيعلمنا أنه لم يتم حفظ الإعداد. ستقوم getSettingString بإرجاع سلسلة فارغة.
تعد وظيفة getSettingString اختيارية تمامًا. والفرق الوحيد بينه وبين وظيفة getSetting الطبيعية هو ما يتم إرجاعه إذا لم يتم العثور على أي شيء في قاعدة البيانات.
باستخدام جدول الإعدادات لدينا.
والآن بعد أن تم إنجاز العمل الشاق ، يمكننا بسهولة تحميل وحفظ الإعدادات إلى قاعدة بيانات محلية. على سبيل المثال ، يمكننا تجاهل الصوت باستخدام العبارة التالية:
setSetting ( 'الصوت'، كاذبة)؛
ويمكننا استخدام الإعداد في وظيفة عالمية لتشغيل الأصوات:
وظيفة playSound (soundID) إذا (getSetting ('sound')) ثم audio.play (soundID) endend
لإعادة تشغيل الصوت ، نقوم ببساطة بتعيين إعداد الصوت إلى true:
setSetting ( 'الصوت'، صحيح)؛
الجزء الجميل حول هذه الوظائف هو أنه يمكنك حفظ السلاسل أو الأعداد الصحيحة في جدول الإعدادات واسترجاعها بسهولة. يتيح لك ذلك القيام بأي شيء من حفظ اسم اللاعب لتوفير درجاته العالية.