▼スレッド
│
└◇1428:Re:戦闘時の判定部分について [moon] 12/29 01:13
└◇1429:ありがとうございます。 [矢神] 12/29 01:48
└◇1430:自己解決出来ました。お騒がせしました。 [矢神] 12/29 08:17<-last
> 度々お世話になります。スレッド一覧
>
> 戦闘時の勝利判定なのですが、現在# Sub Fight #を見てみた所
> > $uatk = $ak + $ab + $uw + $uo; $patk = $pak + $pab + $def_ab + $pw + $po;
> > $udfd = $dd + $db + $ua + $up; $pdfd = $pdd + $pdb + $pa + $pp;
> で
> > $udice = int(rand($Badice)) + $uatk - $def_dm;
> > $pdice = int(rand($Badice)) + $patk - $def_dm;
> 〜
> > $result = $udice <=> $pdice;
> となっており、どうも防御力が影響していないように見えたので、
> $uatk = ($ak + $dd)/2 + $ab + $uw + $uo; $patk = ($pak + $pdd)/2 + $pab + $def_ab + $pw + $po;
> (従来$akのみだったところを$ak+&dd÷2にしたい)
>
> という風に変えてみたのですが、今度は与える(受ける)ダメージが1.5などという様に中途半端な数字が出るようになってしまいました。
> これを解消するにはどのようにすればいいのでしょうか。
>
> #相変わらず知識無で手探りに改造しているので、根本的に何か間違っていましたら申し訳ありません…。
perlにはintという整数化ができる組み込み関数が用意されていますのでこれを利用すれば良いです。
具体的には、$a/2を切り捨てする場合はint($a/2)とします。
> $uatk = int(($ak + $dd)/2) + $ab + $uw + $uo; $patk = int(($pak + $pdd)/2) + $pab + $def_ab + $pw + $po;スレッド一覧
このような感じで書き入れてみましたが、書き方に問題は無いでしょうか。
上の処理だけだと与えるダメージも防御力込みで判定されてしまっていて今度は攻撃力の意味が薄らいでしまっていたので、スレッド一覧
元の式を名を変えて残してダメージ計算部分の変数名も置き換えることで解決する事が出来ました。
なんとか動いているようなので大丈夫なようです。お世話になりました。