⇒ 動作確認はこちらから

ブラウザゲームをつくって公開!アクセスもまあまああるのですが、なんか物足りない。ゲームにはハイスコアが表示されているものがあります。そのときに自分の名前も登録できるようになっていて、これをみると「なんとしても抜きたい」という気持ちになってしまいます。そこでゲームのハイスコアを表示させる機能について考えます。

やり方ですが、ゲームが終了したときにサーバーにリクエストをおくってそのときの点数が上位10以内にはいっていたら記憶させ、次回以降に表示させます。

ハイスコア表示のサンプルページ

今回は実験で以下のようなものをつくります。

ハイスコアサンプル

アクセスすると乱数が生成されます。名前の欄にハンドルネームを入力してボタンを押すと、生成された乱数が上位10位以内であれば[トップ10を見る]のリンク先のページに表示されるというものです。

最初にHTMLファイルの内容を示します。

次にsave-data.phpの内容を示します。HTMLと同じディレクトリにhighscore.csvというファイルがあるのですが、このファイルを読み込んで配列の配列をつくります。そこに送られてきたデータを追加したあとscoreが大きい順にソートします。終わったらこれを文字列に変換してファイルとして保存します。

次に上位10位を表示させる方法を考えます。リンクをクリックして表示される別のページに上位10位を表示させます。

ここではXMLHttpRequestをつかってサーバー上のcsvファイルの内容を取得してtableタグを生成して上位10位を表示させています。

high-score.html

get-data.php

3Dカーレースゲームにハイスコア表示機能を追加する

TypeScript/JavaScriptでつくる3Dカーレースゲームをつくりましたが、これもハイスコアを保存できるようにしてみました。index.htmlを一部修正して、high-score.html、save-data.php、get-data.phpをゲームをアップロードしているディレクトリと同じディレクトリにアップロードしておきます。

functions.jsのGameOver関数を以下のように修正します。mileageを小数のまま送るとうまくいかないので四捨五入して整数にしています。

上位10位を見るにはハイスコア TypeScript/JavaScriptでもつくる3Dカーレースゲームにアクセスしてください。

high-score.htmlとget-data.phpの内容はほとんど同じです。