<script src="miyama3.js" type="text/javascript"></script> |
<script type="text/javascript"> Init(); //Check(); Play(); </script> |
// マウスクリック function Click(id) { //window.alert(id); var y = Math.floor(id/20)+1; var n = id%20; P[y] = n; location.href = "miyama3.html?P0=-1" + "&P1=" + P[1] + "&P2=" + P[2] + "&P3=" + P[3]; } |
P[0]の値 | 説明 |
---|---|
P[0]==0 | 山に石を設定する |
P[0]==1 | プレイヤーの手番 |
P[0]==-1 | コンピュータの手番 |
// プレイ関数 function Play() { ・・・ if (P[0] == -1) { // コンピュータがプレイする rc = Think(); switch(rc) { case -1: //コンピュータの勝ち document.write('私の勝ちです\(^o^)/<br>'); document.write('<form action="miyama3.html" method="get">'); document.write('<input type="hidden" name="P0" value=0>'); document.write('<input type="submit" value="確認">'); document.write('</form>'); break; case 1: //コンピュータの負け document.write('私の負けです(^_^;)'); document.write('<form action="miyama3.html" method="get">'); document.write('<input type="hidden" name="P0" value=0>'); document.write('<input type="submit" value="確認">'); document.write('</form>'); break; default: //プレイの確認 Stone(P[1]); Stone(P[2]); Stone(P[3]); document.write('<form action="miyama3.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>'); break; } } } |
// コンピュータが考える function Think() { var n1; //石が残っている山の数 var n2; //石が一個だけの山の数 var mx; //石が一番多い山の番号 var flag; //設定済みフラグ n1 = 0; n2 = 0; mx = 0; flag = 0; for(i=1; i<4; i++) { if (P[i]>0) { n1++; if (P[i]==1) n2++; if (P[i]>P[mx]) mx= i; } } switch(n1) { case 0: //三個の山が空(コンピュータの勝ち) return -1; case 1: //石が残っている山は一個 if (n2==1) return 1; //最後の石(コンピュータの負け) P[mx]= 1; //一個を残して全て取り除く flag = 1; break; case 2: //石が残っている山は二個 if (n2==1) { P[w]= 0; //最後の一個を残す flag = 1; } break; case 3: //石が残っている山は三個 if (n2==2) { P[mx]= 1; //1,1,1 に設定 flag = 1; } break; } if (flag == 1) return 0; var w = P[1]^P[2]^P[3]; for(i=1; i<4; i++) { n= P[i]^w; if (n<P[i]) break; } if (i>3 || Math.random()<0.1) //1割の確率でミスをする { P[mx]--; return 0; } P[i]= n; return 0; } |