まさおランキング請合どこでも手軽にスコアランキングが設置できること請け合いです!

タグをはるだけで使える正男のスコアランキングシステムが登場!

レンタルサーバーにありがちな、phpやcgiが使えないなどのアップロード制限に関係なく使えます! 手順も簡単2ステップ!

なお、福田直人のホームページ では、PHPスコアランキングが配布(ミラー)されています (JavaScript > ぱっくちゃん の項を参照、サンプルステージのミラーサイト)。サーバにPHPファイルをアップロードできる方は、そちらの利用をお勧めします。

使い方

①下のコードをステージの設置してあるページ(htmlファイルなど)に設置してください。

<script src="https://tadz.sakura.ne.jp/masao/score.php"></script>

すると、名前入力欄とスコア表示欄が表示されるはずです。

form要素のname属性は"tadz"、表示するスコアのinput要素のname属性は"display"送信するスコアのinput要素のname属性は"score"となっています。

ので、Canvasまさおのコードはこんな感じのになります。

設定例A (ReadMeファイル 使用例8応用 基準)

new CanvasMasao.Game({
	// ステージのコード
    },
    null,
    {
	highscoreCallback: (function ()
	{
	    var score = 0;
	    window.addEventListener("load",
		function ()
		{
		    document.tadz.addEventListener("submit",
			function (e)
			{
			    e.stopImmediatePropagation();
			    document.tadz.score.value = score;
			}
		    );
		}
	    );
	    return function (s){
		score = s;
		document.tadz.display.value = s;
	    };
	})() ,

	userJSCallback: (function()
	{
	    var g, ap;
	    var init_f = true;

	    /* --------------------------------------------- */
	    // ループ始めに入る関数
	    return function(Offscreen_g, mode, x, y, Applet1)
	    {
		g = Offscreen_g;  ap = Applet1;
		if(init_f) init();

		if(mode == 1)
                {

                }
                else if(mode >= 100 && mode < 200)
                {
                    if(ap.getJSMes() >= 1)
                    {
                        ap.setJSMes(0);
                        startGame();
                        initmem_f = true;
                    }
                    else
                    {
                        game();
                    }
                }
		else if(mode == 300)
		{
			clear();
		}

            };
             
            // ゲーム開始前の初期化
            function init()
            {
                init_f = false;
            }
             
            // ゲーム開始時の初期化
            function startGame()
            {
		
            }

            // ゲーム中の1フレーム内で行う処理
            function game()
            {

	    }

	    // ゲームクリア
	    function clear()
	    {
		document.tadz.display.style.backgroundColor = "paleTurquoise";	// ついでに色も変わる演出
		document.tadz.judge.value = 1;
	    }
	})()
    }
);
設定例B (ReadMeファイル 使用例6 基準)

    JSMasao.replaceAll({
	highscoreCallback: (function ()
	{
	    var score = 0;
	    window.addEventListener("load",
		function ()
		{
		    document.tadz.addEventListener("submit",
			function (e)
			{
			    e.stopImmediatePropagation();
			    document.tadz.score.value = score;
			}
		    );
		}
	    );
	    return function (s){
		score = s;
		document.tadz.display.value = s;
	    };
	})()
    });

青い字のところを既存のコードに追加すれば、フォームの得点欄にスコアが反映されます。基本的な使い方は、この部分を足すだけで十分です。(参考: FX最新版のReadMeファイル)

黄色い字のところは、クリア人の名前・得点の色を変えたい時に使います。クリア証明のデータをあわせて送信します。
クリア証明込みでスコア送信されると、ランキング中のクリア者名を表示するtd要素class属性に"gc"が挿入されます。そこをCSSでいじってください。

設定例(CSS)

#tadz_ranking .gc ,
#tadz_ranking .gc + td {
	color: #FF9;
}

なお、↑設定例(JS)の黄色い字の部分は割と無駄があります。代わりに、MasaoJSS導入のサンプルになっています。
たとえば、game() の{ }の中に

 if (ap.getMyDirection()) ap.setMyMiss(2); 
と入れれば、どんな正男もたやすく右を向くと死んじゃう病に罹患させられます。

仕様

ランキングの表示されるtable要素のid属性は"tadz_ranking"です。
CSSで色などつけるときに参照してください。

入力できる名前の長さは32文字まで
データ送信を受け付けるのは、1ステージあたり300人分まで
最低送信可能得点は10点です。

スコア送信者がいないうちは、「誰もランクインしていません」と表示されます。

同じスコアは同じ順位として表示されるようになりました。また荒らし対策として、ランキング中に名前・スコア・IPが全て同じデータが複数ある場合、表示が1つだけになるようにしました。(2019/11/17)

その他の機能

score.php?re=1とすると、スコアが小さいほど上位となるランキングを作成できます。逆スコアアタックにお使いください。

使用上の注意

構造上、サイトのURLから表示するランキングのデータを指定しています。なので、サイト移転、htmlファイル名を変える、などでランキングがリセットされます。データ引継の際は、報告いただければその都度対処しますが、くれぐれもご留意ください。

また、登録サイト以外からのスコアデータは受け付けません。登録は連絡用フォームまたはTwitterで個別にお知らせください。

登録サイト一覧
おおかみの森
くるりんの住居
新緑の草木島
過疎村

(PHPで動作しますが、見よう見まねで組んでますので不安な点もなくはないです。予期せぬ不具合などが発生する場合も考えられますのでご注意ください。)

既知のバグ

「エラーメッセージが文字化けする」これについては script要素にcharset属性でutf-8を設定するとよいかもしれません(があまりよくわかっていません

はっきりいってコードに自信ない