كيفية تحميل وحفظ بيانات اللعبة في Corona SDK

كيفية استخدام SQLite لتخزين بيانات اللعبة والإعدادات

هناك شيء واحد مشترك في كل تطبيق ولعبة تقريبًا هو الحاجة إلى تخزين البيانات واستردادها. حتى أن اللعبة البسيطة يمكنها استخدام SQLite لحفظ رقم إصدار التطبيق ، والذي يمكن استخدامه لضمان التوافق عند إجراء ترقيات ، أو إعدادات بسيطة مثل تشغيل صوت اللعبة أو إيقاف تشغيله.

إذا لم تقم أبداً بعمل الكثير مع قواعد البيانات أو استخدمت ميزات قاعدة البيانات في Corona SDK ، فلا داعي للقلق. إنها في الواقع عملية بسيطة نسبياً بفضل قوة LUA ومحرك قاعدة بيانات SQLite المستخدم في Corona SDK. سوف يمر هذا البرنامج التعليمي خلال عملية إنشاء جدول الإعدادات وتخزين المعلومات واستردادها منها. كيفية تطوير تطبيقات iPad.

ضع في اعتبارك أيضًا أن هذه التقنية يمكن أن تتجاوز تخزين الإعدادات المستندة إلى المستخدم. على سبيل المثال ، ماذا لو كان لديك لعبة يمكن لعبها باستخدام أوضاع لعبة مختلفة مثل وضع "القصة" ووضع "الممرات". يمكن استخدام جدول الإعدادات هذا لتخزين الوضع الحالي. أو أي جزء آخر من البيانات ترغب في استمراره حتى إذا خرج المستخدم من اللعبة وأعد تشغيلها.

الخطوة الأولى: تهيئة قاعدة البيانات وإنشاء جدول الإعدادات

أول شيء يتعين علينا القيام به هو إعلان مكتبة SQLite وإخبار تطبيقنا بمكان العثور على ملف قاعدة البيانات. أفضل مكان لوضع هذا الرمز هو الصحيح في أعلى الملف main.lua جنبا إلى جنب مع عبارات أخرى تتطلب. سيتم إنشاء ملف قاعدة البيانات إذا لم يتم العثور على أي شيء ، وسوف نقوم بتخزينه في مجلد "المستندات" حتى نتمكن من قراءته والكتابة إليه.

تتطلب "sqlite3"
local data_path = system.pathForFile ("data.db"، system.DocumentsDirectory)؛
ديسيبل = sqlite3.open (data_path)؛

لاحظ كيف أن المتغير "db" غير مترجم. لقد فعلنا هذا للتأكد من أننا نستطيع الوصول إلى قاعدة البيانات في جميع أنحاء مشروعنا. يمكنك أيضًا إنشاء ملف .lua محدد لكافة وظائف قاعدة البيانات والحفاظ على قاعدة البيانات مترجمة إلى ذلك الملف.

بعد ذلك ، نحتاج إلى إنشاء جدول قاعدة البيانات الذي سيخزّن إعداداتنا:

local sql = "CREATE TABLE IF NOT EXISTS settings (name، value)؛"
ديسيبل: إكسيك (SQL)؛

هذا البيان يخلق جدول الإعدادات لدينا. لا بأس في تشغيله في كل مرة يتم فيها تحميل التطبيق لأنه إذا كان الجدول موجودًا بالفعل ، فلن تفعل هذه العبارة أي شيء. يمكنك وضع هذا البيان مباشرة تحت المكان الذي أعلنا فيه قاعدة البيانات أو في الوظيفة التي تعمل على إعداد تطبيقك للتشغيل. الشرط الرئيسي هو (1) تنفيذ هذه العبارات في كل مرة يتم فيها تشغيل التطبيق و (2) تنفيذه قبل أي مكالمات لتحميل أو حفظ الإعدادات.

الخطوة الثانية: حفظ الإعدادات إلى قاعدة البيانات

وظيفة setSetting (الاسم ، القيمة)
sql = "DELETE FROM settings WHERE name = '" .. name .. "'"؛
ديسيبل: exec (sql)

sql = "INSERT INTO settings (name، value) VALUES ('" ..name .. "'،" .. value .. ")؛"؛
ديسيبل: exec (sql)
النهاية

وظيفة setSettingString (الاسم ، القيمة)
setSetting (الاسم، "" .. قيمة .. "" ")؛
النهاية

تقوم وظيفة setSetting بحذف أي إعدادات سابقة محفوظة في الجدول وتدرج قيمتها الجديدة. ستعمل مع كل من الأعداد الصحيحة والسلاسل ، ولكن حفظ سلسلة يتطلب اقتباسًا منفردًا حول القيمة ، لذلك استخدمنا وظيفة setSettingString للقيام بهذا العمل الإضافي بالنسبة لنا.

الخطوة الثالثة: تحميل الإعدادات من قاعدة البيانات

وظيفة getSetting (الاسم)

local sql = "SELECT * FROM settings WHERE name = '" .. name .. "'"؛
القيمة المحلية = -1؛

للصف في ديسيبل: nrows (sql) القيام به
القيمة = row.value.
النهاية

قيمة الإرجاع؛
النهاية

وظيفة getSettingString (الاسم)
local sql = "SELECT * FROM settings WHERE name = '" .. name .. "'"؛
القيمة المحلية = ''؛

للصف في ديسيبل: nrows (sql) القيام به
القيمة = row.value.
النهاية

قيمة الإرجاع؛
النهاية

كما ذكرنا أعلاه ، قمنا بكسر الوظائف إلى نسختين: واحدة للأعداد الصحيحة والأخرى للسلاسل. السبب الرئيسي في أننا قمنا بذلك هو أننا نستطيع أن نهيئهم بقيم محددة في حالة عدم وجود أي إعداد في قاعدة البيانات. ستقوم الدالة getSetting بإرجاع 1 ، والذي سيعلمنا أنه لم يتم حفظ الإعداد. ستقوم getSettingString بإرجاع سلسلة فارغة.

تعد وظيفة getSettingString اختيارية تمامًا. والفرق الوحيد بينه وبين وظيفة getSetting الطبيعية هو ما يتم إرجاعه إذا لم يتم العثور على أي شيء في قاعدة البيانات.

الخطوة الرابعة: استخدام جدول الإعدادات لدينا

والآن بعد أن تم إنجاز العمل الشاق ، يمكننا بسهولة تحميل وحفظ الإعدادات إلى قاعدة بيانات محلية. على سبيل المثال ، يمكننا تجاهل الصوت باستخدام العبارة التالية:

setSetting ( 'الصوت'، كاذبة)؛

ويمكننا استخدام الإعداد في وظيفة عالمية لتشغيل الأصوات:

وظيفة playSound (soundID)
إذا (getSetting ('sound')) ثم
audio.play (soundID)
النهاية
النهاية

لإعادة تشغيل الصوت ، نقوم ببساطة بتعيين إعداد الصوت إلى true:

setSetting ( 'الصوت'، صحيح)؛

الجزء الجميل حول هذه الوظائف هو أنه يمكنك حفظ السلاسل أو الأعداد الصحيحة في جدول الإعدادات واسترجاعها بسهولة. يتيح لك ذلك القيام بأي شيء من حفظ اسم اللاعب لتوفير درجاته العالية.

Corona SDK: How to Layer Graphics، Move Graphics and Bring Graphics to Front