見出し画像

【PHPソース】ランチェスターの第二法則による残存兵力算出フォーム

下記の記事で紹介した、ランチェスターの第二法則による残存兵力算出フォームのソースコードを紹介します。

コードはPHPで書いたので、拡張子を"php"にしてウェブにアップロードすれば、そのまま動作します。

引数の取得、変数の演算、IF文による比較、フォーム入力など、ごく基礎的な処理だけで書いてあり、短いコードなので、PHP初心者の学習にも適しているかもしれません。

処理の意味についても、まーまー細かめにコメントしてありますので参考にしてください。

<head>
<title>ランチェスターの第二法則による残存兵力算出</title>
<meta name="viewport" content="width=480,">
<meta http-equiv="Content-Type" content="text/html; charset=uft-8">
<meta http-equiv="Cache-Control" content="no-cache">
</head>
<body>

<?php

   echo '<b>lanche.php</b><br><br>';

   //引数を取得
   if(isset($_GET['a1'])) { 
       $a1 = $_GET['a1']; 
   }
   if(isset($_GET['a2'])) { 
       $a2 = $_GET['a2']; 
   }

   if($a1<>0 || $a2<>0){ //引数指定があるときのみ結果表示

       //戦力を求める(兵数2乗)
       $a1f=$a1*$a1;
       $a2f=$a2*$a2;
       //戦力差を求める(絶対値)
       $a3f=abs($a1f-$a2f);
       //生存数を求める(√戦力)
       if($a3f<>0){
           $a3=sqrt($a3f);
       }

       //結果表示
       echo "結果<br><br>";
       echo "・軍勢1: 兵数=$a1(戦力=$a1f)<br>";
       echo "・軍勢2: 兵数=$a2(戦力=$a2f)<br>";
       if($a1>$a2){
           $result='軍勢1の勝利';
           $a4=$a1-$a3;//死者数を得る
       }
       if($a1<$a2){
           $result='軍勢2の勝利';
           $a4=$a2-$a3;//死者数を得る
       }
       if($a1==$a2){
           $result='両軍互角';
           $a4=$a1;//死者数を得る
       }
       $a3=round($a3,2);//生存数を小数点以下2ケタに
       $a4=round($a4,2);//死者数を小数点以下2ケタに
       echo "→$result: 生存数=$a3 死者数=$a4 (戦力差=$a3f)<br><br>";
   }

   //フォーム
   echo "比較戦力を指定<br><br>";
   echo "<form action=\"lanche.php\" method=\"get\" target=\"_self\">";
   echo " 軍勢1の兵数(半角数字)<br>";
   echo " <input type=\"text\" name=\"a1\" value=\"$a1\" required minlength=\"1\" size=\"5\" /><br>";
   echo " 軍勢2の兵数(半角数字)<br>";
   echo " <input type=\"text\" name=\"a2\" value=\"$a2\" required minlength=\"1\" size=\"5\" /><br>";
   echo "<br>";
   echo " <input type=\"submit\" value=\"結果表示\" />";
   echo "</form>";

   echo "<a href=\"https://note.com/hpnm/n/n60a8f98214a2\" target=\"_blank\">計算式(ランチェスターの法則)については、こちらから。</a>"
?>

フォームの動作は下のリンクから確認できます。お試しを!


いいなと思ったら応援しよう!