スクラッチ scratch

スクラッチでセーブする方法を考えてみる〜基本的な考え方〜

子供向け無料プログラミング寺子屋『CoderDojo熊本』にて参加されたニンジャからご質問をいただきました。

ニンジャ
ゲームの中でセーブするのと復活の呪文がわかりません。教えて下さい。
アオキ
せ、セーブですか・・考えた事なかった・・

確かに、RPGなり恋愛ゲームなり、少し長めのゲームを作ったとしたら、

毎回毎回最初からスタートだとしんどいですもんね。

アオキ
またレベル1からスタート?!

なんてことになっちゃいますからね。

うまくセーブする方法がないか、調べてみました。

Sponsored link

スクラッチでセーブする方法・・基本編

「スクラッチ セーブ」

などのキーワードでいくつかググってみて、

なかなか分かりやすいものがなかったのでつくってみました。

ざっくり解説すると、

セーブデータ用の変数の箱をつくっておいて、

ゲームの進み具合によって、変数の値を変えていくと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ですね。

Sponsored link

スクラッチでセーブする方法・応用編

さきほどの作り方でセーブ・ロードはできるのですが、

欠点としては、パスワードが推測されやすいという事かなと思います。

例えば先ほどのRPGの例だと、9999 と入力したら4つのパラメータとも9になってしまいます。

それではNGとなれば、

もっと推測されづらいパスワードを作る必要がでてきます。

例えば下記のスクラッチのコードでは、
リストをつくった後にそれぞれの数字を16進数に変えたりしています。

16進数は、0〜9と、A〜F まで使って表現する方法で、
例えば先ほどの『2586』だと、16進数だと『A1A』になったりします。

それでも勘のいい人ならパスワードが推測できるとも思います。

実際のゲームでは、

ゲームの進み具合によって変数やリストを変更しつつ、

独自の変換技術を使ってパスワードが推測できないようにしていたりします。

この辺りはどんどんややこしい話になっていくのでここまでにしますが、

セーブ機能1つつくるだけでも、結構いろんな事を考える必要がでてくるなぁと改めて思わされました。

最後に

ニンジャ
スクラッチでセーブしたい

という質問が出てきてくれたおかげで、

僕もその方法を調べることになり、知ることができました。

こうやってどんどん教えあいができてくるとどんどんつくるのが面白くなるでしょうし、

結果的に頭の体操にもなるんだろうなぁと思います。

子供向け無料プログラミング寺子屋『CoderDojo熊本』を始めてよかったなぁと思った瞬間でした。

created by Rinker
¥2,376 (2019/02/19 12:32:45時点 Amazon調べ-詳細)

『スクラッチ』ではこんな記事も読まれています。

1. 【スクラッチ】ジャンプをする方法〜3ステップでジャンプできるようになる〜

2. スクラッチでセーブする方法を考えてみる〜基本的な考え方〜

3. スクラッチプログラミングでマリオ風の横スクロールアクションゲームを参考にいいとこ取りしてみる

4. スクラッチ(scratch)とマインクラフト(minecraft)を連携させて子ども向けプログラミングのネタを増やしてみた

5. スクラッチプログラミング入門〜子供と大人のはじめのいっぽ

6. 【スクラッチ】時間が経つと敵が増えて難しくしたい、というリクエストを叶えるために

Sponsored link

関連記事

  1. スクラッチ scratch

    【とにかくオススメ】子どものプログラム練習にマインクラフトがオススメな4つの理由

    子ども向け無料プログラミング道場『CoderDojo熊本』を立ち上げて…

  2. スクラッチ scratch

    スクラッチプログラミング入門〜子供と大人のはじめのいっぽ

    無料で遊べるパズルのようなプログラミング言語、スクラッチ(Scratc…

  3. スクラッチ scratch

    micro:bit(マイクロビット)とスクラッチをつなげてHelloとやってみた

    ここ数年、子供向けプログラミング教材の種類が世界的に増えてきています。…

  4. スクラッチ scratch

    【スクラッチ】ジャンプをする方法〜3ステップでジャンプできるようになる〜

    子ども向け無料プログラミング寺子屋『CoderDojo熊本』開催中…

Sponsored link

最近の記事

アーカイブ

Sponsored link
  1. Nuxt.js

    【Nuxt】入門 Vuexの状態管理を【図解】してみた【初心者向け】
  2. Laravel

    【PHP】【図解】クラスと抽象クラスとインターフェースとトレイトとDIをまとめて…
  3. Laravel

    【Laravel5.5】Webアプリケーションを作るためのゆるめの環境構築編【N…
  4. docker初心者向けdocker-composeからやったほうがいいかもよ

    Docker

    【Docker】初心者はdocker-composeから始めた方がいいかもしれな…
  5. PHP

    【PHP】配列や連想配列が覚えづらかったので学校に例えてみた【初心者向け】
PAGE TOP