ວິທີການໂຫຼດແລະບັນທຶກຂໍ້ມູນເກມໃນ Corona SDK

ວິທີການໃຊ້ SQLite ເພື່ອເກັບຂໍ້ມູນເກມແລະການຕັ້ງຄ່າ

ສິ່ງຫນຶ່ງທີ່ເກືອບທັງຫມົດ app ແລະເກມມີຢູ່ທົ່ວໄປແມ່ນຄວາມຕ້ອງການທີ່ຈະເກັບຮັກສາແລະດຶງຂໍ້ມູນ. ເຖິງແມ່ນວ່າເກມງ່າຍດາຍທີ່ສຸດສາມາດນໍາໃຊ້ SQLite ເພື່ອຊ່ວຍປະຢັດຈໍານວນສະບັບຂອງແອັບຯທີ່ສາມາດນໍາໃຊ້ເພື່ອຮັບປະກັນຄວາມເຂົ້າກັນໄດ້ໃນເວລາທີ່ປະຕິບັດການຍົກລະດັບຫລືການຕັ້ງຄ່າງ່າຍໆເຊັ່ນເປີດຫລືປິດສຽງຂອງເກມ.

ຖ້າທ່ານບໍ່ເຄີຍເຮັດວຽກຫຼາຍກັບຖານຂໍ້ມູນຫຼືໃຊ້ຄຸນສົມບັດຖານຂໍ້ມູນໃນ Corona SDK , ຢ່າກັງວົນ. ມັນຕົວຈິງແລ້ວແມ່ນຂະບວນການທີ່ຄ່ອນຂ້າງກົງໄປກົງມາຍ້ອນພະລັງງານຂອງ LUA ແລະເຄື່ອງຈັກຖານຂໍ້ມູນ SQLite ທີ່ໃຊ້ໃນ Corona SDK. tutorial ນີ້ຈະຍ່າງຜ່ານຂັ້ນຕອນຂອງການສ້າງຕາຕະລາງການຕັ້ງຄ່າແລະການເກັບຮັກສາແລະລວບລວມຂໍ້ມູນຈາກມັນ. ວິທີການພັດທະນາແອັບຯ iPad.

ຍັງຈື່ວ່າເຕັກນິກນີ້ສາມາດຜ່ານການຈັດເກັບການຕັ້ງຄ່າຂອງຜູ້ໃຊ້. ຕົວຢ່າງ, ຖ້າວ່າທ່ານມີເກມທີ່ສາມາດຫຼິ້ນໄດ້ໂດຍໃຊ້ຮູບແບບເກມທີ່ແຕກຕ່າງກັນເຊັ່ນໂຫມດ "story" ແລະໂຫມດ "arcade". ຕາຕະລາງການຕັ້ງຄ່ານີ້ສາມາດຖືກນໍາໃຊ້ເພື່ອຈັດເກັບໂຫມດປະຈຸບັນ. ຫຼືຂໍ້ມູນອື່ນໃດທີ່ທ່ານຕ້ອງການທີ່ຈະຮັກສາເຖິງແມ່ນວ່າຜູ້ໃຊ້ຈະເຊົາອອກຈາກເກມແລະ relaunches ມັນ.

ຂັ້ນຕອນທີຫນຶ່ງ: ການເລີ່ມຕົ້ນຖານຂໍ້ມູນແລະການສ້າງຕາຕະລາງການຕັ້ງຄ່າ

ສິ່ງທໍາອິດທີ່ພວກເຮົາຕ້ອງເຮັດແມ່ນປະກາດຫ້ອງສະຫມຸດ SQLite ແລະບອກ app ຂອງພວກເຮົາທີ່ຈະຊອກຫາໄຟລ໌ຖານຂໍ້ມູນ. ສະຖານທີ່ທີ່ດີທີ່ສຸດເພື່ອເຮັດໃຫ້ລະຫັດນີ້ຖືກຕ້ອງຢູ່ເທິງສຸດຂອງໄຟລ໌ main.lua ພ້ອມກັບຂໍ້ຄວາມອື່ນໆທີ່ຕ້ອງການຄໍາສັ່ງ. ໄຟລ໌ຖານຂໍ້ມູນຈະຖືກສ້າງຂຶ້ນຖ້າພົບບໍ່ມີ, ແລະພວກເຮົາຈະເກັບມັນໄວ້ໃນໂຟນເດີເອກະສານດັ່ງນັ້ນພວກເຮົາສາມາດອ່ານມັນແລະຂຽນເຂົ້າມັນໄດ້.

ຕ້ອງການ "sqlite3"
local data_path = system.pathForFile ("datadb", systemDocumentsDirectory)
db = sqlite3open (data_path)

ສັງເກດເບິ່ງວິທີການ "db" ຕົວແປບໍ່ໄດ້ຖືກແປເປັນ. ພວກເຮົາໄດ້ເຮັດແບບນີ້ເພື່ອໃຫ້ແນ່ໃຈວ່າພວກເຮົາສາມາດເຂົ້າເຖິງຖານຂໍ້ມູນໄດ້ຕະຫຼອດໂຄງການຂອງພວກເຮົາ. ນອກນັ້ນທ່ານຍັງສາມາດສ້າງໄຟລ໌ສະເພາະໃດຫນຶ່ງ. ສໍາລັບພາລະບົດບາດຖານຂໍ້ມູນທັງຫມົດແລະຮັກສາຖານຂໍ້ມູນຢູ່ໃນແຟ້ມນັ້ນ.

ຕໍ່ໄປ, ພວກເຮົາຕ້ອງສ້າງຕາຕະລາງຖານຂໍ້ມູນທີ່ຈະເກັບຮັກສາການຕັ້ງຄ່າຂອງພວກເຮົາ:

local sql = "CREATE TABLE IF NOT EXISTS settings (name, value);"
db: exec (sql)

ຄໍາສັ່ງນີ້ສ້າງຕາຕະລາງການຕັ້ງຄ່າຂອງພວກເຮົາ. ມັນເປັນການດີທີ່ຈະໃຊ້ມັນທຸກໆຄັ້ງທີ່ app loads ເພາະວ່າຖ້າຕາຕະລາງມີຢູ່ແລ້ວ, ຄໍາສັ່ງນີ້ຈະບໍ່ເຮັດຫຍັງເລີຍ. ທ່ານສາມາດເຮັດໃຫ້ຄໍາເວົ້ານີ້ຖືກຕ້ອງພາຍໃຕ້ບ່ອນທີ່ພວກເຮົາໄດ້ປະກາດຖານຂໍ້ມູນຫລືໃນຫນ້າທີ່ກໍານົດການໃຊ້ງານຂອງທ່ານໃນການດໍາເນີນການ. ຄວາມຕ້ອງການຕົ້ນຕໍແມ່ນ (1) ຕ້ອງປະຕິບັດຄໍາເວົ້າເຫລົ່ານີ້ທຸກຄັ້ງທີ່ແອັບຯເປີດໃຊ້ແລະ (2) ດໍາເນີນການກ່ອນທີ່ຈະເອີ້ນການໂທຫຼືບັນທຶກການຕັ້ງຄ່າ.

ຂັ້ນຕອນທີສອງ: ການບັນທຶກການຕັ້ງຄ່າຖານຂໍ້ມູນ

function setSetting (ຊື່, ມູນຄ່າ)
sql = "DELETE FROM settings WHERE name = '" .. name "'";
db: exec (sql)

sql = "INSERT INTO settings (name, value) VALUES ('" name "'," value ")"
db: exec (sql)
ສິ້ນສຸດ

function setSettingString (ຊື່, ມູນຄ່າ)
setSetting (ຊື່, "'". ມູນຄ່າ .. ' ');
ສິ້ນສຸດ

ຟັງຊັ່ນ setSetting ລົບການຕັ້ງຄ່າກ່ອນຫນ້າໃດໆທີ່ບັນທຶກໄວ້ໃນຕາຕະລາງແລະໃສ່ຄ່າໃຫມ່ຂອງພວກເຮົາ. ມັນຈະເຮັດວຽກຮ່ວມກັບຈໍານວນເຕັມແລະຊ່ອຍແນ່, ແຕ່ການບັນທຶກຂໍ້ຄວາມຕ້ອງໃຊ້ວົງຢືມດຽວກັນປະມານມູນຄ່າ, ດັ່ງນັ້ນພວກເຮົາໄດ້ນໍາໃຊ້ຄໍາສັ່ງ setSettingString ເພື່ອເຮັດວຽກນ້ອຍໆຂອງພວກເຮົາ.

ຂັ້ນຕອນທີສາມ: ກໍາລັງໂຫລດການຕັ້ງຄ່າຈາກຖານຂໍ້ມູນ

function getSetting (name)

local sql = "SELECT * FROM settings WHERE name = '" .. name .. "'";
ມູນຄ່າທ້ອງຖິ່ນ = -1

ສໍາລັບແຖວໃນ db: nrows (sql) ເຮັດ
value = rovalvalue
ສິ້ນສຸດ

return value
ສິ້ນສຸດ

function getSettingString (name)
local sql = "SELECT * FROM settings WHERE name = '" .. name .. "'";
ມູນຄ່າທ້ອງຖິ່ນ = '';

ສໍາລັບແຖວໃນ db: nrows (sql) ເຮັດ
value = rovalvalue
ສິ້ນສຸດ

return value
ສິ້ນສຸດ

ດັ່ງທີ່ກ່າວມາຂ້າງເທິງ, ພວກເຮົາໄດ້ທໍາລາຍຫນ້າທີ່ເປັນສອງລຸ່ມ: ຫນຶ່ງສໍາລັບເລກແລະຫນຶ່ງສໍາລັບສາຍ. ເຫດຜົນຕົ້ນຕໍທີ່ພວກເຮົາໄດ້ເຮັດນີ້ແມ່ນເພື່ອວ່າພວກເຮົາສາມາດເລີ່ມຕົ້ນໃຫ້ພວກເຂົາມີຄຸນຄ່າເສພາະຖ້າບໍ່ມີການຕັ້ງຄ່າຢູ່ໃນຖານຂໍ້ມູນ. ຟັງຊັນ getSetting ຈະຄືນ -1, ເຊິ່ງຈະແຈ້ງໃຫ້ພວກເຮົາຮູ້ວ່າການຕັ້ງຄ່າຍັງບໍ່ໄດ້ຖືກບັນທຶກໄວ້. getSettingString ຈະກັບຄືນໄປບ່ອນສະຕິງຫວ່າງ.

ຟັງຊັນ getSettingString ແມ່ນເລືອກທັງຫມົດ. ຄວາມແຕກຕ່າງພຽງແຕ່ລະຫວ່າງມັນແລະຟັງຊັນ getSetting ປົກກະຕິແມ່ນສິ່ງທີ່ຖືກສົ່ງກັບຖ້າບໍ່ມີຂໍ້ມູນຢູ່ໃນຖານຂໍ້ມູນ.

ຂັ້ນຕອນສີ່: ການນໍາໃຊ້ຕາຕະລາງການປັບຄ່າຂອງພວກເຮົາ

ໃນປັດຈຸບັນທີ່ພວກເຮົາໄດ້ເຮັດວຽກຫນັກ, ພວກເຮົາສາມາດໂຫລດໄດ້ງ່າຍແລະບັນທຶກການຕັ້ງຄ່າກັບຖານຂໍ້ມູນທີ່ມີຢູ່ໃນທ້ອງຖິ່ນ. ຕົວຢ່າງ: ພວກເຮົາສາມາດປິດສຽງດ້ວຍຄໍາສັ່ງຕໍ່ໄປນີ້:

setSetting ('ສຽງ', ບໍ່ຖືກຕ້ອງ);

ແລະພວກເຮົາສາມາດນໍາໃຊ້ການຕັ້ງຄ່າໃນຫນ້າທີ່ຂອງໂລກສໍາລັບການຫຼີ້ນສຽງ:

function playSound (soundID)
ຖ້າ (getSetting ('ສຽງ')) ແລ້ວ
audioplay (soundID)
ສິ້ນສຸດ
ສິ້ນສຸດ

ເພື່ອເຮັດໃຫ້ສຽງກັບຄືນໄປບ່ອນ, ພວກເຮົາພຽງແຕ່ຕັ້ງຄ່າການຕັ້ງຄ່າສຽງທີ່ເປັນຄວາມຈິງ:

setSetting ('ສຽງ', ຄວາມຈິງ);

ສ່ວນທີ່ດີກ່ຽວກັບຫນ້າທີ່ເຫຼົ່ານີ້ແມ່ນທ່ານສາມາດປະຢັດສາຍຫຼື integers ກັບຕາຕະລາງການຕັ້ງຄ່າແລະດຶງພວກມັນໄດ້ຢ່າງງ່າຍດາຍ. ນີ້ອະນຸຍາດໃຫ້ທ່ານເຮັດຫຍັງຈາກການບັນທຶກຊື່ຜູ້ນເພື່ອບັນທຶກຄະແນນສູງສຸດຂອງເຂົາເຈົ້າ.

Corona SDK: ວິທີການຊັ້ນກາຟິກ, ຍ້າຍ Graphics ແລະນໍາ Graphics ໄປຫນ້າ