ファイル | 説明 |
---|---|
"jewel.gif" | 石の画像ファイル |
"jewel2.gif" | ゲーム終了の画像ファイル |
"miyama.html" | 三山くずし起動ファイル |
"miyama.js" | JavaScript プログラムファイル |
"start.mp3" | ゲームの開始するときの音声 |
"win.mp3" | コンピューターが勝った時の音声 |
"lose.mp3" | コンピューターが負けた時の音声 |
<html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1.0" /> <script src="miyama.js" type="text/javascript"></script> </head> <body> <script type="text/javascript"> Init(); Play(); </script> </body> </html> |
function Init() { P = new Array(); if (window.location.search.length<3) { // 最初の呼び出し saisei('start.mp3'); document.write("<h2>三山くずしゲーム</b></h2>"); document.write("あなたと私が交互に石を取り除きます<br>"); document.write("一つの山から幾らでも取り除くことが出来ます<br>"); document.write("最後の一個を取らされた方が負けです<br>"); document.write("取り除く石をクリックして下さい<br>"); document.write("あなたに続いて私がプレイした山が表示されます<br><br>"); document.write('<form action="miyama.html" method="get">'); document.write('<input type="hidden" name="P0" value=0>'); document.write('<input type="submit" value="開始">'); document.write('</form>'); return; } // パラメータを取得する var query = window.location.search.substring(1); var parameters = query.split('&'); for(i=0; i<parameters.length; i++) { var element = parameters[i].split('='); var paramName = decodeURIComponent(element[0]); var paramValue = decodeURIComponent(element[1]); P[i] = parseInt(paramValue); } } |
function Play() { if (P[0] == 0) { // 山に石を設定 P[0] = 1; P[1] = Math.floor(Math.random()*15)+1; P[2] = Math.floor(Math.random()*15)+1; P[3] = Math.floor(Math.random()*15)+1; } if (P[0] == 1) { // プレイヤーがプレイする(石のクリックで次のステージ) document.write("1の山("+P[1]+")<br>"); Disp(P[1],0); document.write("2の山("+P[2]+")<br>"); Disp(P[2],20); document.write("3の山("+P[3]+")<br>"); Disp(P[3],40); document.write('<br><img src="jewel2.gif"onClick=Click2()> '); } if (P[0] == -1) { // コンピュータがプレイする rc = Think(); switch(rc) { case -1: //コンピュータの勝ち saisei('win.mp3'); document.write('わたしの勝ちです\(^o^)/<br>'); document.write('<form action="miyama.html" method="get">'); document.write('<input type="hidden" name="P0" value=0><br>'); document.write('<input type="submit" value="確認">'); document.write('</form>'); break; case 1: //コンピュータの負け saisei('lose.mp3'); document.write('あなたの勝ちです(^_^;)'); document.write('<form action="miyama.html" method="get">'); document.write('<input type="hidden" name="P0" value=0><br>'); document.write('<input type="submit" value="確認">'); document.write('</form>'); break; default: //プレイの確認 document.write("1の山<br>"); Stone(P[1]); document.write("2の山<br>"); Stone(P[2]); document.write("3の山<br>"); Stone(P[3]); document.write('<form action="miyama.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],'><br>'); 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[mx]= 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) { var num= Math.floor(Math.random()*P[mx]+1); P[mx]-= num; return 0; } P[i]= n; return 0; } |
function Stone(n) { for(i=0; i<n; i++) { document.write('<img src="jewel.gif"> '); if (i%5==4) document.write("<br>"); } document.write("<br>"); } |
function Disp(n,id) { for(i=0; i<n; i++) { document.write('<img src="jewel.gif"onClick=Click(',id+i,')> '); if (i%5==4) document.write("<br>"); } document.write("<br>"); } |
function Click(id) { var y = Math.floor(id/20)+1; var n = id%20; P[y] = n; location.href = "miyama.html?P0=-1" + "&P1=" + P[1] + "&P2=" + P[2] + "&P3=" + P[3]; } |
function Click2() { location.href = "game_index.html"; } |