子供向け無料プログラミング寺子屋『CoderDojo熊本』にて参加されたニンジャからご質問をいただきました。
確かに、RPGなり恋愛ゲームなり、少し長めのゲームを作ったとしたら、
毎回毎回最初からスタートだとしんどいですもんね。
なんてことになっちゃいますからね。
うまくセーブする方法がないか、調べてみました。
スクラッチでセーブする方法・・基本編
「スクラッチ セーブ」
などのキーワードでいくつかググってみて、
なかなか分かりやすいものがなかったのでつくってみました。
ざっくり解説すると、
セーブデータ用の変数の箱をつくっておいて、
ゲームの進み具合によって、変数の値を変えていくとOKです。
例えばシューティングゲームで、
- 最初からの場合は 変数000
- 1面クリアしたら 変数100
- 2面クリアしたら 変数200
などとルールをつくっておいて、
改めてゲームを再開した時に、
的なメッセージを出させて、
- 100なら1面クリアした状態
- 200なら2面クリアした状態
などのように設定すれば実現できるかなと思います。
もし、もっと細かい情報を保存させようとしたら、
例えば、RPGでいうと、
- レベル
- 力
- 賢さ
- 運
みたいなパラメータがあったとしたら、
それらを保存する用の変数をつくるとOKです。
例えば4桁の数字をつくって、最初の値を0000などにしておいて、
- レベルが2なら千の位を2に設定
- 力が5なら百の位を5に設定
- 賢さが8なら十の位を8に設定
- 運が6なら一の位を6に設定
というルールを決めておいて、
パスワードとして 『2586』 と入力したら、パラメータをその状態に変更すればOKになります。
こちらのスクラッチのコードが参考になります。
こんな感じで桁ごとに意味を変えていけばOKですね。
スクラッチでセーブする方法・応用編
さきほどの作り方でセーブ・ロードはできるのですが、
欠点としては、パスワードが推測されやすいという事かなと思います。
例えば先ほどのRPGの例だと、9999 と入力したら4つのパラメータとも9になってしまいます。
それではNGとなれば、
もっと推測されづらいパスワードを作る必要がでてきます。
例えば下記のスクラッチのコードでは、
リストをつくった後にそれぞれの数字を16進数に変えたりしています。
16進数は、0〜9と、A〜F まで使って表現する方法で、
例えば先ほどの『2586』だと、16進数だと『A1A』になったりします。
それでも勘のいい人ならパスワードが推測できるとも思います。
実際のゲームでは、
ゲームの進み具合によって変数やリストを変更しつつ、
独自の変換技術を使ってパスワードが推測できないようにしていたりします。
この辺りはどんどんややこしい話になっていくのでここまでにしますが、
セーブ機能1つつくるだけでも、結構いろんな事を考える必要がでてくるなぁと改めて思わされました。
最後に
という質問が出てきてくれたおかげで、
僕もその方法を調べることになり、知ることができました。
こうやってどんどん教えあいができてくるとどんどんつくるのが面白くなるでしょうし、
結果的に頭の体操にもなるんだろうなぁと思います。
子供向け無料プログラミング寺子屋『CoderDojo熊本』を始めてよかったなぁと思った瞬間でした。
『スクラッチ』ではこんな記事も読まれています。
1. 【スクラッチ】でシューティングゲームのかんたんなつくり方2. 【スクラッチ】ジャンプをする方法〜3ステップでジャンプできるようになる〜
3. 【スクラッチ】角度や回転を使う方法【動画】【初心者向け】
4. 【スクラッチ】で花火をつくる方法【動画あり】【初心者向け】
5. 【スクラッチ】シューティングで敵の弾をつくる方法【画像たっぷり】
6. 【スクラッチ】でセーブする方法を考えてみる〜基本的な考え方〜
7. 【スクラッチ】でマリオ風の横スクロールアクションゲームを参考にいいとこ取りしてみる
8. スクラッチ(scratch)とマインクラフト(minecraft)を連携させて子ども向けプログラミングのネタを増やしてみた
9. 【スクラッチ】時間が経つと敵が増えて難しくしたい、というリクエストを叶えるために
10. 【スクラッチ】で【三角関数】の使い方をわかりやすくまとめてみた
↓↓ スクラッチのその先へ ↓↓
1. パソコンのキーボード練習の4つのステップをまとめてみた
2. プログラムで数学も身につく 一石四鳥なクリエイティブコーディング
3. 【三角関数】の使い方〜わかりやすさ重視でまとめてみた【動画あり】
アオキのツイッターアカウント。