ですが問題点があり、それが何故起こってしまうのかがわからないので、教えていただきたく掲示板を立てさせていただきました。
どうかよろしくお願いします。
問題点1.
htmlのコード97行目にてonclickでpassの関数を使用するようにしているのですが、押しても全く反応がありません。pass関数最初の数行の、turnの入れ替えさえ行えません。
問題点2.
基本は大丈夫なのですが、ゲームが進んでくると空きマスを押したときになぜかフリーズします。いつも決まった場所ではないと思います。
フリーズの際に読み込んでいる行は
68,98,130,165,200,235,269,303,340,370,402,436,471,505,539,573
といった、for文の行です。
どの行で止まるかはまちまちです。
分かる方よろしくお願いします。
htmlのコード↓(行数を表示させるためC++のコードとして貼り付けます。)
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<script src="game2.js"></script>
<link rel="stylesheet" href="components/loader.css">
<script>
// Set virtual screen width size to 640 pixels
monaca.viewport({width: 640});
</script>
<style>
table{
margin:auto;
}
</style>
</head>
<body>
<table>
<tr>
<td><img id="a1" src="image/blank.png" width="100%" height="100%" onclick="main(0)"></td>
<td><img id="b1" src="image/blank.png" width="100%" height="100%" onclick="main(1)"></td>
<td><img id="c1" src="image/blank.png" width="100%" height="100%" onclick="main(2)"></td>
<td><img id="d1" src="image/blank.png" width="100%" height="100%" onclick="main(3)"></td>
<td><img id="e1" src="image/blank.png" width="100%" height="100%" onclick="main(4)"></td>
<td><img id="f1" src="image/blank.png" width="100%" height="100%" onclick="main(5)"></td>
<td><img id="g1" src="image/blank.png" width="100%" height="100%" onclick="main(6)"></td>
<td><img id="h1" src="image/blank.png" width="100%" height="100%" onclick="main(7)"></td>
</tr>
<td><img id="a2" src="image/blank.png" width="100%" height="100%" onclick="main(8)"></td>
<td><img id="b2" src="image/blank.png" width="100%" height="100%" onclick="main(9)"></td>
<td><img id="c2" src="image/blank.png" width="100%" height="100%" onclick="main(10)"></td>
<td><img id="d2" src="image/blank.png" width="100%" height="100%" onclick="main(11)"></td>
<td><img id="e2" src="image/blank.png" width="100%" height="100%" onclick="main(12)"></td>
<td><img id="f2" src="image/blank.png" width="100%" height="100%" onclick="main(13)"></td>
<td><img id="g2" src="image/blank.png" width="100%" height="100%" onclick="main(14)"></td>
<td><img id="h2" src="image/blank.png" width="100%" height="100%" onclick="main(15)"></td>
<tr>
<td><img id="a3" src="image/blank.png" width="100%" height="100%" onclick="main(16)"></td>
<td><img id="b3" src="image/blank.png" width="100%" height="100%" onclick="main(17)"></td>
<td><img id="c3" src="image/blank.png" width="100%" height="100%" onclick="main(18)"></td>
<td><img id="d3" src="image/blank.png" width="100%" height="100%" onclick="main(19)"></td>
<td><img id="e3" src="image/blank.png" width="100%" height="100%" onclick="main(20)"></td>
<td><img id="f3" src="image/blank.png" width="100%" height="100%" onclick="main(21)"></td>
<td><img id="g3" src="image/blank.png" width="100%" height="100%" onclick="main(22)"></td>
<td><img id="h3" src="image/blank.png" width="100%" height="100%" onclick="main(23)"></td>
</tr>
<td><img id="a4" src="image/blank.png" width="100%" height="100%" onclick="main(24)"></td>
<td><img id="b4" src="image/blank.png" width="100%" height="100%" onclick="main(25)"></td>
<td><img id="c4" src="image/blank.png" width="100%" height="100%" onclick="main(26)"></td>
<td><img id="d4" src="image/siro.png" width="100%" height="100%" onclick="main(27)"></td>
<td><img id="e4" src="image/kuro.png" width="100%" height="100%" onclick="main(28)"></td>
<td><img id="f4" src="image/blank.png" width="100%" height="100%" onclick="main(29)"></td>
<td><img id="g4" src="image/blank.png" width="100%" height="100%" onclick="main(30)"></td>
<td><img id="h4" src="image/blank.png" width="100%" height="100%" onclick="main(31)"></td>
<tr>
<td><img id="a5" src="image/blank.png" width="100%" height="100%" onclick="main(32)"></td>
<td><img id="b5" src="image/blank.png" width="100%" height="100%" onclick="main(33)"></td>
<td><img id="c5" src="image/blank.png" width="100%" height="100%" onclick="main(34)"></td>
<td><img id="d5" src="image/kuro.png" width="100%" height="100%" onclick="main(35)"></td>
<td><img id="e5" src="image/siro.png" width="100%" height="100%" onclick="main(36)"></td>
<td><img id="f5" src="image/blank.png" width="100%" height="100%" onclick="main(37)"></td>
<td><img id="g5" src="image/blank.png" width="100%" height="100%" onclick="main(38)"></td>
<td><img id="h5" src="image/blank.png" width="100%" height="100%" onclick="main(39)"></td>
</tr>
<tr>
<td><img id="a6" src="image/blank.png" width="100%" height="100%" onclick="main(40)"></td>
<td><img id="b6" src="image/blank.png" width="100%" height="100%" onclick="main(41)"></td>
<td><img id="c6" src="image/blank.png" width="100%" height="100%" onclick="main(42)"></td>
<td><img id="d6" src="image/blank.png" width="100%" height="100%" onclick="main(43)"></td>
<td><img id="e6" src="image/blank.png" width="100%" height="100%" onclick="main(44)"></td>
<td><img id="f6" src="image/blank.png" width="100%" height="100%" onclick="main(45)"></td>
<td><img id="g6" src="image/blank.png" width="100%" height="100%" onclick="main(46)"></td>
<td><img id="h6" src="image/blank.png" width="100%" height="100%" onclick="main(47)"></td>
</tr>
<tr>
<td><img id="a7" src="image/blank.png" width="100%" height="100%" onclick="main(48)"></td>
<td><img id="b7" src="image/blank.png" width="100%" height="100%" onclick="main(49)"></td>
<td><img id="c7" src="image/blank.png" width="100%" height="100%" onclick="main(50)"></td>
<td><img id="d7" src="image/blank.png" width="100%" height="100%" onclick="main(51)"></td>
<td><img id="e7" src="image/blank.png" width="100%" height="100%" onclick="main(52)"></td>
<td><img id="f7" src="image/blank.png" width="100%" height="100%" onclick="main(53)"></td>
<td><img id="g7" src="image/blank.png" width="100%" height="100%" onclick="main(54)"></td>
<td><img id="h7" src="image/blank.png" width="100%" height="100%" onclick="main(55)"></td>
</tr>
<tr>
<td><img id="a8" src="image/blank.png" width="100%" height="100%" onclick="main(56)"></td>
<td><img id="b8" src="image/blank.png" width="100%" height="100%" onclick="main(57)"></td>
<td><img id="c8" src="image/blank.png" width="100%" height="100%" onclick="main(58)"></td>
<td><img id="d8" src="image/blank.png" width="100%" height="100%" onclick="main(59)"></td>
<td><img id="e8" src="image/blank.png" width="100%" height="100%" onclick="main(60)"></td>
<td><img id="f8" src="image/blank.png" width="100%" height="100%" onclick="main(61)"></td>
<td><img id="g8" src="image/blank.png" width="100%" height="100%" onclick="main(62)"></td>
<td><img id="h8" src="image/blank.png" width="100%" height="100%" onclick="main(63)"></td>
</tr>
</table>
<img id="pass" src="image/pass.png" width="100%" height="100%" onclick="pass(0)">
</body>
</html>
// This is a JavaScript file
// 0:blank, 1:black, 2:white
// 0:black turn, 1:white turn
var putok; //put判定
var passnum = 0; //pass回数判別
var turn = 0; //
var board = [0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,2,1,0,0,0,
0,0,0,1,2,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0];
var id = ["a1","b1","c1","d1","e1","f1","g1","h1",
"a2","b2","c2","d2","e2","f2","g2","h2",
"a3","b3","c3","d3","e3","f3","g3","h3",
"a4","b4","c4","d4","e4","f4","g4","h4",
"a5","b5","c5","d5","e5","f5","g5","h5",
"a6","b6","c6","d6","e6","f6","g6","h6",
"a7","b7","c7","d7","e7","f7","g7","h7",
"a8","b8","c8","d8","e8","f8","g8","h8"];
//元の関数
function main(arg) {
if(board[arg] == 0)
check(arg);
if(putok == 0)
turn = 1;
else if(putok == 1)
turn = 0;
searchblank(arg);
}
//チェック関数
function check(arg) {
var r = 1; //右
var l = -1; //左
var u = 8; //下
var o = -8; //上
var or = -7; // 右上
var ol = -9; //左上
var ur = 9; //右下
var ul = 7; //左下
var j;
var end;
//黒のターン
if(turn == 0) {
//右を調べる
if(arg % 8 != 7) { //右端ならば終了
if(board[arg+r] == 0 || board[arg+r] == 1) {} //右が黒 or 空き
else if (board[arg+r] == 2) { //右が白
for(r = 2, end = 0; end == 0; r++) { //右の方を調べる
if((arg+r) % 8 != 7) {
if(board[arg+r] == 0) //右の方が空き
end = 1;
else if (board[arg+r] == 1) { //右の方が黒
for(j = 0; j < r; j++)
putok = put(arg+j);
break;
}
else
end = 0; //白ならば何もしないでループが続く
}
else
end = 1;
}
}
}
//左を調べる
if(arg % 8 != 0 || arg == 0) {//左端ならば終了
if(board[arg+l] == 0 || board[arg+l] == 1){} //左が黒 or 空き
else if (board[arg+l] == 2) { //左が白
for(l = -2, end = 0; end == 0; l--) { //左の方を調べる
if(arg % 8 != 0 || arg == 0) {
if(board[arg+l] == 0) //左の方が空き
end = 1;
else if (board[arg+l] == 1) { //左の方が黒
for(j = 0; j > l; j--)
putok = put(arg+j);
break;
}
else
end = 0; //白ならば何もしないでループが続く
}
else
end = 1;
}
}
}
//下を調べる
if(arg != 56 && arg != 57 && arg != 58 &&
arg != 59 && arg != 60 && arg != 61 &&
arg != 62 && arg != 63 ) {
if(board[arg+u] == 0 || board[arg+u] == 1) {}//下が黒 or 空き
else if (board[arg+u] == 2) { //下が白
for(u = 16, end = 0; end == 0; u += 8) { //下の方を調べる
if(arg != 56 && arg != 57 && arg != 58 &&
arg != 59 && arg != 60 && arg != 61 &&
arg != 62 && arg != 63 ) {
if(board[arg+u] == 0) //下の方が空き
end = 1;
else if (board[arg+u] == 1) { //下の方が黒
for(j = 0; j < u; j += 8)
putok = put(arg+j);
break;
}
else
end = 0; //白ならば何もしないでループが続く
}
else
end = 1;
}
}
}
//上を調べる
if(arg != 0 && arg != 1 && arg != 2 &&
arg != 3 && arg != 4 && arg != 5 &&
arg != 6 && arg != 7 ) {
if(board[arg+o] == 0 || board[arg+o] == 1) {} //上が黒 or 空
else if (board[arg+o] == 2) { //上が白
for(o = -16, end = 0; end == 0; o -= 8) { //上の方を調べる
if(arg != 0 && arg != 1 && arg != 2 &&
arg != 3 && arg != 4 && arg != 5 &&
arg != 6 && arg != 7 ) {
if(board[arg+o] == 0) //上の方が空き
end = 1;
else if (board[arg+o] == 1) { //上の方が黒
for(j = 0; j > o; j -= 8)
putok = put(arg+j);
break;
}
else
end = 0; //白ならば何もしないでループが続く
}
else
end = 1;
}
}
}
//右上を調べる
if(arg != 0 && arg != 1 && arg != 2 &&
arg != 3 && arg != 4 && arg != 5 &&
arg != 6 && arg != 7 && arg % 8 != 7) {
if(board[arg+or] == 0 || board[arg+or] == 1) {} //右上が黒 or 空き
else if (board[arg+or] == 2) { //右上が白
for(or = -14, end = 0; end == 0; or -= 7) { //右上の方を調べる
if(arg != 0 && arg != 1 && arg != 2 &&
arg != 3 && arg != 4 && arg != 5 &&
arg != 6 && arg != 7 && arg % 8 != 7) {
if(board[arg+or] == 0) //右上の方が空き
end = 1;
else if (board[arg+or] == 1) { //右上の方が黒
for(j = 0; j > or; j -= 7)
putok = put(arg+j);
break;
}
else
end = 0; //白ならば何もしないでループが続く
}
else
end = 1;
}
}
}
//左上を調べる
if(arg != 0 && arg != 1 && arg != 2 &&
arg != 3 && arg != 4 && arg != 5 &&
arg != 6 && arg != 7 &&
(arg % 8 != 0 || arg == 0)) {
if(board[arg+ol] == 0 || board[arg+ol] == 1) {} //左上が黒 or 空き
else if (board[arg+ol] == 2) { //左上が白
for(ol = -9, end = 0; end == 0; ol -= 9) { //左上の方を調べる
if(arg != 0 && arg != 1 && arg != 2 &&
arg != 3 && arg != 4 && arg != 5 &&
arg != 6 && arg != 7 &&
(arg % 8 != 0 || arg == 0)) {
if(board[arg+ol] == 0) //左上の方が空き
end = 1;
else if (board[arg+ol] == 1) { //左上の方が黒
for(j = 0; j > ol; j -= 9)
putok = put(arg+j);
break;
}
else
end = 0; //白ならば何もしないでループが続く
}
else
end = 1;
}
}
}
//右下を調べる
if(arg != 56 && arg != 57 && arg != 58 &&
arg != 59 && arg != 60 && arg != 61 &&
arg != 62 && arg != 63 && arg % 8 != 7) {
if(board[arg+ur] == 0 || board[arg+ur] == 1) {}//右下が黒 or 空き
else if (board[arg+ur] == 2) { //右下が白
for(ur = 9, end = 0; end == 0; ur += 9) { //右下の方を調べる
if(arg != 56 && arg != 57 && arg != 58 &&
arg != 59 && arg != 60 && arg != 61 &&
arg != 62 && arg != 63 && arg % 8 != 7) {
if(board[arg+ur] == 0) //右下の方が空き
end = 1;
else if (board[arg+ur] == 1) { //右下の方が黒
for(j = 0; j < ur; j += 9)
putok = put(arg+j);
break;
}
else
end = 0; //白ならば何もしないでループが続く
}
else
end = 1;
}
}
}
//左下を調べる
if(arg != 56 && arg != 57 && arg != 58 &&
arg != 59 && arg != 60 && arg != 61 &&
arg != 62 && arg != 63 &&
(arg % 8 != 0 || arg == 0)) {
if(board[arg+ul] == 0 || board[arg+ul] == 1) {}//左下が黒 or 空き
else if (board[arg+ul] == 2) { //左下が白
for(ul = 7, end = 0; end == 0; ul += 7) { //左下の方を調べる
if(arg != 56 && arg != 57 && arg != 58 &&
arg != 59 && arg != 60 && arg != 61 &&
arg != 62 && arg != 63 &&
(arg % 8 != 0 || arg == 0)) {
if(board[arg+ul] == 0) //左下の方が空き
end = 1;
else if (board[arg+ul] == 1) { //左下の方が黒
for(j = 0; j < ul; j += 7)
putok = put(arg+j);
break;
}
else
end = 0; //白ならば何もしないでループが続く
}
else
end = 1;
}
}
}
}
//白のターン
else if(turn == 1) {
//右を調べる
if(arg % 8 != 7) {//右端ならば終了
if(board[arg+r] == 0 || board[arg+r] == 2) {}//右が白 or 空き
else if (board[arg+r] == 1) { //右が黒
for(r = 2, end = 0; end == 0; r++ ) { //右の方を調べる
if((arg+r) % 8 != 7) {
if(board[arg+r] == 0) //右の方が空き
end = 1;
else if (board[arg+r] == 2) { //右の方が白
for(j = 0; j < r; j++)
putok = put(arg+j);
break;
}
else
end = 0; //黒ならば何もしない
}
else
end = 1;
}
}
}
//左を調べる
if(arg % 8 != 0 || arg == 0) { //左端ならば終了
if(board[arg+l] == 0 || board[arg+l] == 2) {} //左が白 or
else if (board[arg+l] == 1) { //左が黒
for(l = -2, end = 0; end == 0; l--) { //左の方を調べる
if(arg % 8 != 0 || arg == 0) {
if(board[arg+l] == 0) //左の方が空き
end = 1;
else if (board[arg+l] == 2) { //左の方が白
for(j = 0; j > l; j--)
putok = put(arg+j);
break;
}
else
end = 0; //黒ならば何もしない
}
else
end = 1;
}
}
}
//下を調べる
if(arg != 56 && arg != 57 && arg != 58 &&
arg != 59 && arg != 60 && arg != 61 &&
arg != 62 && arg != 63 ) {
if(board[arg+u] == 0 || board[arg+u] == 2) {} //下が白 or 空き
else if (board[arg+u] == 1) { //下が黒
for(u = 16, end = 0; end == 0; u += 8) { //下の方を調べる
if(arg != 56 && arg != 57 && arg != 58 &&
arg != 59 && arg != 60 && arg != 61 &&
arg != 62 && arg != 63 ) {
if(board[arg+u] == 0) //下の方が空き
end = 1;
else if (board[arg+u] == 2) { //下の方が白
for(j = 0; j < u; j += 8)
putok = put(arg+j);
break;
}
else
end = 0; //黒ならば何もしない
}
else
end = 1;
}
}
}
//上を調べる
if(arg != 0 && arg != 1 && arg != 2 &&
arg != 3 && arg != 4 && arg != 5 &&
arg != 6 && arg != 7 ) {
if(board[arg+o] == 0 || board[arg+o] == 2) {} //上が白 or 空
else if (board[arg+o] == 1) { //上が黒
for(o = -16, end = 0; end == 0; o -= 8) { //上の方を調べる
if(arg != 0 && arg != 1 && arg != 2 &&
arg != 3 && arg != 4 && arg != 5 &&
arg != 6 && arg != 7 ) {
if(board[arg+o] == 0) //上の方が空き
end = 1;
else if (board[arg+o] == 2) { //上の方が白
for(j = 0; j > o; j -= 8)
putok = put(arg+j);
break;
}
else
end = 0; //黒ならば何もしないでループが続く
}
else
end = 1;
}
}
}
//右上を調べる
if(arg != 0 && arg != 1 && arg != 2 &&
arg != 3 && arg != 4 && arg != 5 &&
arg != 6 && arg != 7 && arg % 8 != 7) {
if(board[arg+or] == 0 || board[arg+or] == 2) {}//右上が白 or 空き
else if (board[arg+or] == 1) { //右上が黒
for(or = -14, end = 0; end == 0; l -= 7) { //右上の方を調べる
if(arg != 0 && arg != 1 && arg != 2 &&
arg != 3 && arg != 4 && arg != 5 &&
arg != 6 && arg != 7 && arg % 8 != 7) {
if(board[arg+or] == 0) //右上の方が空き
end = 1;
else if (board[arg+or] == 2) { //右上の方が白
for(j = 0; j > or; j -= 7)
putok = put(arg+j);
break;
}
else
end = 0; //黒ならば何もしない
}
else
end = 1;
}
}
}
//左上を調べる
if(arg != 0 && arg != 1 && arg != 2 &&
arg != 3 && arg != 4 && arg != 5 &&
arg != 6 && arg != 7 &&
(arg % 8 != 0 || arg == 0)) {
if(board[arg+ol] == 0 || board[arg+ol] == 2) {}//左上が白 or 空き
else if (board[arg+ol] == 1) { //左上が黒
for(ol = -9, end = 0; end == 0; ol -= 9) { //左上の方を調べる
if(arg != 0 && arg != 1 && arg != 2 &&
arg != 3 && arg != 4 && arg != 5 &&
arg != 6 && arg != 7 &&
(arg % 8 != 0 || arg == 0)) {
if(board[arg+ol] == 0) //左上の方が空き
end = 1;
else if (board[arg+ol] == 2) { //左上の方が白
for(j = 0; j > ol; j -= 9)
putok = put(arg+j);
break;
}
else
end = 0; //黒ならば何もしない
}
else
end = 1;
}
}
}
//右下を調べる
if(arg != 56 && arg != 57 && arg != 58 &&
arg != 59 && arg != 60 && arg != 61 &&
arg != 62 && arg != 63 && arg % 8 != 7) {
if(board[arg+ur] == 0 || board[arg+ur] == 2) {}//右下が白 or 空き
else if (board[arg+ur] == 1) { //右下が黒
for(ur = 9, end = 0; end == 0; ur += 9) { //右下の方を調べる
if(arg != 56 && arg != 57 && arg != 58 &&
arg != 59 && arg != 60 && arg != 61 &&
arg != 62 && arg != 63 && arg % 8 != 7) {
if(board[arg+ur] == 0) //右下の方が空き
end = 1;
else if (board[arg+ur] == 2) { //右下の方が白
for(j = 0; j < ur; j += 9)
putok = put(arg+j);
break;
}
else
end = 0; //黒ならば何もしない
}
else
end =1;
}
}
}
//左下を調べる
if(arg != 56 && arg != 57 && arg != 58 &&
arg != 59 && arg != 60 && arg != 61 &&
arg != 62 && arg != 63 &&
(arg % 8 != 0 || arg == 0)) {
if(board[arg+ul] == 0 || board[arg+ul] == 2) {}//左下が白 or 空き
else if (board[arg+ul] == 1) { //左下が黒
for(ul = 7, end = 0; end == 0; ul += 7 ) { //左下の方を調べる
if(arg != 56 && arg != 57 && arg != 58 &&
arg != 59 && arg != 60 && arg != 61 &&
arg != 62 && arg != 63 &&
(arg % 8 != 0 || arg == 0)) {
if(board[arg+ul] == 0) //左下の方が空き
end = 1;
else if (board[arg+ul] == 2) { //左下の方が白
for(j = 0; j < ul; j += 7)
putok = put(arg+j);
break;
}
else
end = 0; //黒ならば何もしない
}
else
end = 1;
}
}
}
}
}
//空白を探す関数
function searchblank(arg) {
for(j = 0; j < 64; j++)
if(board[j] == 0)
return;
judge(arg);
}
//置く関数
function put(arg) {
var t = id[arg];
var elem = document.getElementById(t);
if(turn == 0) {
board[arg] = 1;
elem.src = "image/kuro.png";
passnum = 0;
return(0);
}
else if(turn == 1) {
board[arg] = 2;
elem.src = "image/siro.png";
passnum = 0;
return(1);
}
}
//パス数え用
function pass(arg) {
if (turn == 0)
turn = 1;
else if(turn == 1)
turn = 0;
passnum++;
if (passnum == 2)
judge(0);
}
//ジャッジ関数
function judge(arg) {
var j;
var black = 0;
var white = 0;
for(j = 0; j < 64; j++) {
if(board[j] == 1)
black++;
else if(board[j] == 2)
white++;
}
if(black > white)
alert("黒の勝利です");
else if (black < white)
alert("白の勝利です");
else
alert("引き分けです");
}
[/code]