ディレクターがコードを書く

webディレクターのネトゲ廃人がコード書きたくなってはじめたブログ。

お遊び//レベルアップポイントを計算する

モチベーションアップ回

そもそもperlを勉強をしようと思ったネトゲのシミュレータを。 合間合間に作りながらやっていこう。と思う。

何のシミュレータか。

パラメータのシミュレータである。

無料オンラインゲーム テイルズウィーバー公式サイト

レベルアップするとポイントがもらえ、自分で割り振る。。。 という形式はオンラインゲームではなくてもよくみると思う。

ただクセがあり、ランダムで一定確率で上がったり、そもそもLv1≠1point。ステータスの振り具合によって必要ポイントが違ったりと、まあ複雑な仕様になっているのでそれを再現したい。

幸いにもhttp://oresim.visithp.jp/先人が仕様については分析しているので実装は見ず、思考錯誤しながらなぞるように実装できればいいなー。と思っている次第。

まずはレベルアップとポイント

レベルアップでもらえるポイントか下記の内容らしい。

LvUp // POINT上昇値

Lv
1 - 6     -> 2
7 - 22    -> 3
23 -48    -> 4
49 - 80   -> 5
81 - 129  -> 6
130 - 175 -> 7
176 - 235 -> 8
236 - 255 -> 9

レベルの上限が255と8bitかよと突っ込みたくなるレベル上限である(今は解放されたがとりあえず255で)

サンプル例題

今ある知識で遊べる程度にコードを書いて遊んでみる。

  • レベルアップでポイントを加算し、その内容を表示せよ
  • POINT上昇値はレベルに応じて変動せよ

かな。

コード内容

my  $level = 1;
my  $point = 0;
my    $totalpoint;

for my $level(1..255){
    if( $level < 6){
        $totalpoint = $totalpoint + 2;
            print "Level:"."$level\n"."Point:"."$totalpoint\n"."\n";
    }
    elsif( $ level < 22){
        $totalpoint = $totalpoint + 3;
            print "Level:"."$level\n"."Point:"."$totalpoint\n"."\n";
    }
    elsif( $ level < 48){
        $totalpoint = $totalpoint + 4;
            print "Level:"."$level\n"."Point:"."$totalpoint\n"."\n";
    }
    elsif( $ level < 80){
        $totalpoint = $totalpoint + 5;
            print "Level:"."$level\n"."Point:"."$totalpoint\n"."\n";
    }
    elsif( $ level < 129){
        $totalpoint = $totalpoint + 6;
            print "Level:"."$level\n"."Point:"."$totalpoint\n"."\n";
    }
    elsif( $ level < 175){
        $totalpoint = $totalpoint + 7;
            print "Level:"."$level\n"."Point:"."$totalpoint\n"."\n";
    }
    elsif( $ level < 235){
        $totalpoint = $totalpoint + 8;
            print "Level:"."$level\n"."Point:"."$totalpoint\n"."\n";
    }
    elsif( $ level < 256){
        $totalpoint = $totalpoint + 9;
            print "Level:"."$level\n"."Point:"."$totalpoint\n"."\n";
    }
#    print "$totalpoint\n";
}

解説

for my $level(1..255){

forでレベルアップをLv1~255まで処理をループさせる。

    if( $level < 6){
        $totalpoint = $totalpoint + 2;

    elsif( $ level < 22){
        $totalpoint = $totalpoint + 3;

    elsif( $ level < 48){
        $totalpoint = $totalpoint + 4;

    elsif( $ level < 80){
        $totalpoint = $totalpoint + 5;

    elsif( $ level < 129){
        $totalpoint = $totalpoint + 6;

    elsif( $ level < 175){
        $totalpoint = $totalpoint + 7;

    elsif( $ level < 235){
        $totalpoint = $totalpoint + 8;

    elsif( $ level < 256){
        $totalpoint = $totalpoint + 9;

それぞれ $levelの内容に応じてtotalpointを加算し、レベルに応じたポイントを付与(加算)する。

結果:

f:id:kwsmD:20131226215716p:plain

見切れる(爆)

でもまぁ正常通り動いていそう。

Lv255時に所持するポイントは1607ポイントでした!