単純戦闘ダイスロール
ttps://www.youtube.com/watch?v=weCHe_J5eAc
$array= array();
//最大HPの取得
$array['ply_max_hp'] = $ply['stats']['max_hp'];
$array['emy_max_hp'] = $emy['stats']['max_hp'];
for($i=1; $i <=10; $i++){
// 先制判定
$array['turn'.$i]['ini'] = ini_role($ply,$emy);
// プレイヤーの攻撃値
$array['turn'.$i]['ply_atk'] = dice_role($ply['stats']['atk_dice'],$ply['stats']['atk_range'],$ply['stats']['atk_bonus']);
// プレイヤーの防御値
$array['turn'.$i]['ply_def'] = dice_role($ply['stats']['def_dice'],$ply['stats']['def_range'],$ply['stats']['def_bonus']);
// エネミーの攻撃値
$array['turn'.$i]['emy_atk'] = dice_role($emy['stats']['atk_dice'],$emy['stats']['atk_range'],$emy['stats']['atk_bonus']);
// エネミーの防御値
$array['turn'.$i]['emy_def'] = dice_role($emy['stats']['def_dice'],$emy['stats']['def_range'],$emy['stats']['def_bonus']);
//1ターン目以外は以前のターンの現在HPを取得
if($i==1){
$ply_now_hp = $array['ply_max_hp'];
$emy_now_hp = $array['emy_max_hp'];
}else{
$ply_now_hp = $array['turn'.($i-1)]['ply_now_hp'];
$emy_now_hp = $array['turn'.($i-1)]['emy_now_hp'];
}
// ダメージ計算
//プレイヤーのダメージがエネミーの防御値を超えているかどうか
if($array['turn'.$i]['ply_atk']['total'] > $array['turn'.$i]['emy_def']['total']){
//超えていた場合ダメージ判定
$emy_end_hp = $emy_now_hp - ($array['turn'.$i]['ply_atk']['total'] - $array['turn'.$i]['emy_def']['total']);
$array['turn'.$i]['ply_atk_hit'] = 1; //hit
}else{
//超えていない場合
$emy_end_hp = $emy_now_hp;
$array['turn'.$i]['ply_atk_hit'] = 0; //miss
}
// エネミーターン
if($array['turn'.$i]['emy_atk']['total'] > $array['turn'.$i]['ply_def']['total']){
//超えていた場合ダメージ判定
$ply_end_hp = $ply_now_hp - ($array['turn'.$i]['emy_atk']['total'] - $array['turn'.$i]['ply_def']['total']);
$array['turn'.$i]['emy_atk_hit'] = 1; //hit
}else{
//超えていない場合
$ply_end_hp = $ply_now_hp;
$array['turn'.$i]['emy_atk_hit'] = 0; //miss
}
// 現在HP
$array['turn'.$i]['ply_now_hp'] = $ply_end_hp;
$array['turn'.$i]['emy_now_hp'] = $emy_end_hp;
//戦闘終了判定
if($emy_end_hp <= 0){
$array['victory_flag'] = 1;
break;
}elseif($ply_end_hp<=0){
$array['victory_flag'] = 0;
break;
}
}
print_r($array);