三山ゲーム-2

コンピュータが一個取り除きます。


【Source Code】
<script src="miyama2.js" type="text/javascript"></script>
</head>

<body>
<h1>三山ゲーム-2</h1>
コンピュータが一個取り除きます。<br><br>

<script type="text/javascript">
Init();
Check();
Play();
</script>

三山ゲーム-2では src="miyama2.js" を組み込みます。
miyama2.js では、コンピュータのプレイ(一番多い山から1個取り除く)が設定されています。
<script src="miyama2.js" type="text/javascript"></script>

<body> のコードは「三山ゲーム-1」と同じです。
表示されるパラメータの値は、このページが呼ばれたとき(プレイの前)です。
<script type="text/javascript">
Init();
Check();
Play();
</script>

"miyama2.js" の説明です。

コンピューターの手番で石を表示する関数です。
Disp() 関数は onClick が設定されていますが Stone() は石を表示するだけです。
// 石を表示
function Stone(n)
{
    for(i=0; i<n; i++)
    {
        document.write('<img src="img/jewel.gif">');
        if (i%5==4)    document.write(" ");
    }
    document.write("<br>");
}

山がクリックされたときに呼ばれる Click() 関数です。
コンピュータの手番に設定して miyama2.html を呼び出します。
三山ゲーム-1では P0=1 でしたが、今回は P0=-1 に設定します。
// マウスクリック
function Click(id)
{
    //window.alert(id);
    var y = Math.floor(id/20)+1;
    var n = id%20;
    P[y] = n;
    location.href = "miyama2.html?P0=-1" + "&P1=" + P[1] + "&P2=" + P[2] + "&P3=" + P[3];
}

プレイヤーとコンピュータが交互にプレイする Play() 関数です。
P[0]==0 でプレイを制御します。
P[0]の値 説明
P[0]==0 山に石を設定する
P[0]==1 プレイヤーの手番
P[0]==-1 コンピュータの手番
P[0]==0 の処理(山に石を設定)と P[0]==1 の処理(プレイヤーのプレイ)は 三山ゲーム-1 を参照して下さい。
コンピュータのプレイでは Think() 関数で P[1] ~ P[3] に山の石を設定します。
そしてプレイヤーに対して実行の確認を求めます。
// プレイ関数
function Play()
{
    ・・・

    if (P[0] == -1)
    {   // コンピュータがプレイする
        rc = Think();
        Stone(P[1]);
        Stone(P[2]);
        Stone(P[3]);
        document.write('<form action="miyama2.html" method="get">');
        document.write('<input type="hidden" name="P0" value=1>');
        document.write('<input type="hidden" name="P1" value=',P[1],'>');
        document.write('<input type="hidden" name="P2" value=',P[2],'>');
        document.write('<input type="hidden" name="P3" value=',P[3],'>');
        document.write('<input type="submit" value="私のプレイを確認">');
        document.write('</form>');
    }
}

コンピュータ側が山の石を設定する Think() 関数です。
今回は一番多い山から1個取り除くだけです。
// コンピュータが考える
function Think()
{
    var     n1;         //石が残っている山の数
    var     n2;         //石が一個だけの山の数
    var     mx;         //石が一番多い山の番号
    n1 = 0;
    n2 = 0;
    mx = 0;
    for(i=1; i<4; i++)
    {   if (P[i]>0)
        {   n1++;
            if (P[i]==1)    n2++;
            if (P[i]>P[mx]) mx= i;
        }
    }
    P[mx]--;
}

[Next Chapter ↓] 三山ゲーム-3
[Previous Chapter ↑] 三山ゲーム-1

前田稔の超初心者のプログラム入門
超初心者のプログラム入門(JavaScript)