ドンペリ 改造

ここでは、σ(^_^)が行ってるドンペリの改造を紹介します。
意味が分からんって人は、ここの改造をしない方がいいよ(;^_^A アセアセ・・・

て、ことだったんですが、かふぇさんの許可が得られたので、書き換えたファイルを公開します。
変更点は、

です。
ダウンロード v_donperi01.lzh (10,954 Byte) 01/09/18

以前に公開したバージョン

おためし用のドンペリを設置しました。
HNはドンペリ、パスワードは、1234 です。
適当に書き込んでもらって結構です。


順位をCGI側で並べ替えさせる

ドンペリは、点数順に記入しなくてはいけないという制約があります。
ここでは、どういう順番に記入しても良いようにする方法を紹介します。



ドンペリの163行目の辺りの次の行、

if ($p1<$p2 || $p1<$p3 || $p1<$p4 || $p2<$p3 || $p2<$p4 || $p3<$p4) { &error("記入順が間違っています",'NOLOCK'); }

を以下のように変更します。

#if ($p1<$p2 || $p1<$p3 || $p1<$p4 || $p2<$p3 || $p2<$p4 || $p3<$p4) { &error("記入順が間違っています",'NOLOCK'); }
{   # 並べ替え
    my @names = ($n1, $n2, $n3, $n4);
    my @points= ($p1, $p2, $p3, $p4);
    my @SortNo = sort {
            $sort_ret = $points[$b] <=> $points[$a];
            if($sort_ret == 0){
                if($a eq $yrhn){
                    if($b eq $yrhn){$sort_ret = 0}
                    else{$sort_ret = -1}
                }
                elsif($b eq $yrhn){ $sort_ret = 1}
                else{ $sort_ret = $a cmp $b}
            }
            $sort_ret
        } (0 .. 3);
    $n1=$names[ $SortNo[0]];$n2=$names[ $SortNo[1]];$n3=$names[ $SortNo[2]];$n4=$names[ $SortNo[3]];
    $p1=$points[$SortNo[0]];$p2=$points[$SortNo[1]];$p3=$points[$SortNo[2]];$p4=$points[$SortNo[3]];
}

これで、点数順に、同点なら名前順に(ただし、自分の名前が優先的に前になる)並び替えられます。
$yrhn は、自分の名前が収められている変数であることを一応確認しといてね。


最初から自分の名前を入れておく

勝手に並べ替えれるようにしたら、最初から自分の名前を入れておくのも良いかもしれません。

ドンペリの114行目の辺りの次の行、

<tr><td><input type="text" size="12" name="N1"></td><td><input type="text" size="2" name="P1"></td></tr>

を以下のように青い部分を追加します。

<tr><td><input type="text" size="12" name="N1" value="$yrhn"></td><td><input type="text" size="2" name="P1"></td></tr>

ホームに戻る