データの保存について

83 views
Skip to first unread message

T IMUTA

unread,
Dec 27, 2013, 2:05:34 PM12/27/13
to coro...@googlegroups.com
はじめまして!初心者です!

基本的なことなのかもしれませんがデータの保存方法がよくわかりません。
本やサイトを見てもできませんでした。

ファイルの操作方法などはよく載っていいるのですが
テキストファイルには最初どのように書いておけばいいのか、特定の値を取り出すにはどうすればいいか
がわかりません。

例えば、RPGを作るとして

まず、初期の「レベル」「攻撃力」「防御力」はどこにどのように書いておき、それぞれ値を取り出すか

レベルと攻撃力と防御力を上げて、その都度保存する場合、どのようにしてその値を保存するか

を、教えていただきたいです!お願いします!

naoya yamamoto

unread,
Dec 27, 2013, 9:09:28 PM12/27/13
to 日本コロナの会
こんにちは、このモジュールを使うのはどうでしょう。


2013年12月28日 4:05 T IMUTA <clo....@gmail.com>:
--
--
このメールは次の Google グループの参加者に送られています: 日本コロナの会
このグループにメールで投稿: coro...@googlegroups.com
このグループから退会する: coronaja+u...@googlegroups.com
その他のオプションについては、次の URL からグループにアクセスしてくださ
い。 http://groups.google.co.jp/group/coronaja?hl=ja
--------------------------------------------------------------------------
http://twitter.com/JapanCoronaGrp
 
---
このメールは Google グループのグループ「日本コロナの会」の登録者に送られています。
このグループから退会し、メールの受信を停止するには、coronaja+u...@googlegroups.com にメールを送信します。
その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。

T IMUTA

unread,
Dec 28, 2013, 11:13:55 AM12/28/13
to coro...@googlegroups.com
回答ありがとうございます!


このモジュールを使うとすると、初期値はどのように書き込めばいいですか?
最初にゲームを始めた時には初期値を取得でき、
ゲーム中にその値が変わりその値を送り、

ゲームを一度やめて、また再開するときには
初期値ではなく送った値を取得したいです、
そうするときのコードの書き方がわかりません。どのようにしたらいいですか?

naoya yamamoto

unread,
Dec 28, 2013, 9:38:44 PM12/28/13
to 日本コロナの会
初期値は、ファイルに書いておいてもよいでしょうし、ソースコードに書いておいてもよいでしょう。
モジュールのサンプルにあるように、保存して、ゲーム再開したら、読めこめばよいのでは。

SDKのサンプルのStorageのFileDemo、SaveTale, SQLiteあたりでも同じようなことをやっているでしょう。

山本


2013年12月29日 1:13 T IMUTA <clo....@gmail.com>:

C.C.

unread,
Dec 28, 2013, 11:45:16 PM12/28/13
to coro...@googlegroups.com, coro...@googlegroups.com
CyberCatfish です IMUTA さんこんにちは。

もしかしたらロジックが知りたいんでしょうか?
例えば先に出ているライブラリで、ゲーム開始カウントを書き込んむようにしておくとか。
もし、この値が読めなかったりゼロ以下なら、初回起動として初期値を使うようにすれば…

で、解決されませんか? (^_^;)

T IMUTA

unread,
Dec 29, 2013, 1:31:39 AM12/29/13
to coro...@googlegroups.com
おふた方回答ありがとうございまず。
すいません、全くの初心者なもんでよくわかりません。

申し訳ないのですが、例えとして先ほどのモジュールを利用して次のコードを書きました
ボタンを押すと所持金が増え、表示されるようにしたのですが、多分このままだと
ゲームを再開した時に初期値を取得してしまうと思うのですがどうしたら良いですか?
(※ちなみにこのボタンを押したとき、所持金表示が重なってしまいました。これもどうしたら良いですか?)


--main.lua

local _W = display.contentWidth
local _H = display.contentHeight

--データ保存
local loadsave = require("loadsave")
myTable = {}
myTable.money = 1000
loadsave.saveTable(myTable, "myTable.json")
myTable = loadsave.loadTable("myTable.json")


local dbot = display.newImage("dbot.png",10,_H-100,150,45)--ボタン
local moneytx = display.newText("所持金 "..myTable.money.." 円",20,70,nil,20)--所持金表示

--ボタン操作
function dbot:tap(event)
 myTable.money=myTable.money+1
 loadsave.saveTable(myTable, "myTable.json")
 myTable = loadsave.loadTable("myTable.json")
 local moneytx = display.newText("所持金 "..myTable.money.." 円",20,70,nil,20)
 return true
end

dbot:addEventListener("tap",dbot)


naoya yamamoto

unread,
Dec 29, 2013, 3:12:14 AM12/29/13
to 日本コロナの会
プログラミングには、条件節 if 文があるので、それを使ってみたらどうでしょう。

山本


2013年12月29日 15:31 T IMUTA <clo....@gmail.com>:

T IMUTA

unread,
Dec 29, 2013, 3:39:18 AM12/29/13
to coro...@googlegroups.com
このようにしたら出来たような感じになりました

ただ文字の表示が重なってしまいますが(笑)
ありがとうございました!!



-- よく使う変数集

local _W = display.contentWidth
local _H = display.contentHeight


--データ保存
local loadsave = require("loadsave")
myTable = {}

myTable = loadsave.loadTable("myTable.json")

if myTable.count==nil then


 myTable.money = 1000
 loadsave.saveTable(myTable, "myTable.json")
 myTable = loadsave.loadTable("myTable.json")

 myTable.count=1
end

T IMUTA

unread,
Jan 13, 2014, 11:41:51 AM1/13/14
to coro...@googlegroups.com
以前は回答ありがとうございます。

前回データ保存の仕方を教えてもらったとき、上記のようにしたら出来たのですが
また新しく作り直してみるとどうもエラーが出て、うまくいきません。

上記にあるコードをコピペしてもエラーが出てしまいました。
再度下記のように他に簡略化して作ってみたのですがうまくいきません。エラーが出てしまいました。

どこが良くなかったのか指摘してもらえるとありがたいです。


-- main.lua

--データ保存
local loadsave = require("loadsave")
myTable = {}
myTable = loadsave.loadTable("myTable.json")
if myTable.count==nil then
 myTable.money = 1000
 myTable.count=1

 loadsave.saveTable(myTable, "myTable.json")
 myTable = loadsave.loadTable("myTable.json")
end

TakuroFUKAMIZU

unread,
Jan 25, 2014, 5:41:28 PM1/25/14
to coro...@googlegroups.com
IMUTAさんこんにちは。深水です。

-----------
myTable = loadsave.loadTable("myTable.json")
if myTable.count==nil then
 myTable.money = 1000
-----------

ここがまずいです。
loadsave.loadTableは指定されたjsonファイルが無ければnil(からっぽの意)を返します。
からっぽなのでcountというプロパティは無いので、if文の所で無いプロパティを見ようとしてエラーになっているのでは?
前回データが読み込めたかどうかを判断したいのであれば、myTable == nilかどうかを見て、
前回データが無い場合はmyTableをnilではなく、空のテーブル(myTable={})にしておく必要があります。

あと、エラー原因が不明でお悩みの場合は、エラーメッセージで指摘されている行を中心に見直すと良いです。
また、質問する際もエラーメッセージの内容があると、より的確なアドバイスが可能です。

2014年1月14日火曜日 1時41分51秒 UTC+9 T IMUTA:

T IMUTA

unread,
Jan 26, 2014, 1:47:24 PM1/26/14
to coro...@googlegroups.com
アドバイスありがとうございます!!

もう分からなくてアプリ作成を諦めかけていたので
ほんと助かりました!

『エラー原因が不明でお悩みの場合は、エラーメッセージで指摘されている行を中心に見直すと良いです。
質問する際もエラーメッセージの内容があると、より的確なアドバイスが可能です。』
というアドバイスも初心者にはとても助かりました!

ありがとうございます!!
Reply all
Reply to author
Forward
0 new messages