お遊び//レベルアップポイントを計算する
モチベーションアップ回
そもそも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を加算し、レベルに応じたポイントを付与(加算)する。
結果:
見切れる(爆)
でもまぁ正常通り動いていそう。
Lv255時に所持するポイントは1607ポイントでした!