クイズゲームとタワーディフェンスにランキングを入れてみました。
ただ、DB使わずに、アペンドモードでファイルに書き出してるだけなので、
レスポンス悪い&壊れるかもw
クイズゲーム
Unity Web Player | UnitychanQuiz
タワーディフェンス
Unity Web Player | td
タワーディフェンスはミッション完了間際に砲台を壊して資源回収しないと
資源量的に厳しいかも(^_^;)
クイズゲームは、UnityGameUploader様に登録してみました。
あと、うに部屋にも登録してみました。
タワーディフェンスはもうちょっと作り込みます。
UnityGameUploader | Unityのゲームをアップロードしよう
ランキング作成と新しいスコアの追加処理
ランキング作成はログを読み込んでソートして上位10個表示のみ(読み込みONLY)
新規追加は、追加書き込みでログを追加して、全体をソートして自分の順位を返す。
書き込みで一応ロックを入れてみました。
壊れるときは壊れるでしょうw
本来は一週間でクリアしたいところ(賑わってるならデイリーでもいい)
ランキングが固定化されると意味無いですから。
大事なのは短期ランキング
if($act eq "ranking") { open (FH, $filename); while(<FH>) { # print $_."<br>\n"; push @list,$_; } close(FH); @list = sort {(split(/<>/,$b))[0] <=>(split(/<>/,$a))[0] } @list; for(my $i=0;$i<=9;$i++) { my ($score,$datetime) = split(/<>/,$list[$i]); if( $score eq "") { last; } print $i+1; print "位 ".$score." (".$datetime.")\n"; } } if($act eq "add") { open (FH, ">> $filename"); flock(FH, 2); seek(FH, 0, 2); print FH $score."<>".$datetime."<>\n"; close(FH); open (FH, $filename); while(<FH>) { push @list,$_; } close(FH); @list = sort {(split(/<>/,$b))[0] <=>(split(/<>/,$a))[0] } @list; for(my $i=0;$i<@list;$i++) { my ($score2,$datetime2) = split(/<>/,$list[$i]); if($score eq $score2) { print "あなたは"; print $i+1; print "位です\n"; last; } } }