ゲームを作って公開してみたのですが、そこでこんなリクエストが…。

プレイヤー名と効果音のボリュームをそのつど設定するのは面倒なので保存できないか?

そこで今回はcookieに設定を保存する方法を考えます。

cookieに値を保存するには?

JavaScriptでcookieに値を保存するには、document.cookieを使用します。ここへ任意の名前と値をセットすることで設定が保存されます。デフォルトではセットした名前と値はブラウザを終了した時点で消去されます。

document.cookie = “任意の名前=任意の値”;

これだとセットした名前と値はブラウザを終了した時点で消去されてしまうので、次回アクセスしたときに使えるようにするには以下のようにします。

それからcookieはブラウザの設定で使用不可にできるため、まずcookieが使用できるか確認する必要があります。またcookieには”=”、”;”などの記号や日本語文字を保存することができません。そこでこれらの文字列がある可能性があるのであればencodeURIComponentを使ってエンコードした値をセットします。エンコードした値はdecodeURIComponentで元に戻すことができます。

cookieに値を保存したり読み取るコード

これはcookieに値を保存してそれを表示させるコードです。保存する名前と値のなかにエスケープが必要な文字列はないのですが、'<‘ と ‘>’ をエスケープする処理を入れています。

設定を保存するコードを示します。名前を保存をクリックするとテキストボックス内の文字列をcookieに保存します。そして次回アクセスしたときに保存した文字列がテキストボックス内に表示されます。

ボリュームコントロールの表示と設定の保存・読み出し

最初の課題であるプレイヤー名と効果音のボリュームを保存するコードを示します。

それからこんなゲームもあるのでよろしければ是非遊んでみてください。

1980年、任天堂のシューティングゲーム・レーダースコープを模してつくったゲームです。疑似3Dシューティングゲームのような、当時としては斬新なグラフィックで人気となりました。敵は時折、機雷を投下して攻撃する。自機の下方は味方の基地になっており、機雷を撃ちもらすとダメージを受けてしまいます。自機だけでなく下方の基地も守らなければならない点や近くまで接近してきた敵が斜めに弾丸を発射するなど緊張感があるゲームです。