Connect4 - ゲーム左上のボックス (最初のボックス) のチップ配置に問題があります。これは、チップを配置するためのコードです。
$('canvas').click(function(){
var clicked_id = $(this).attr('id');
if (clicked_id>7&&$(this).hasClass('placeable')){
var above_id = $(this).attr('id') - 7;
var above = $('#' + above_id);
above.attr('class','placeable');
$(this).attr('class','');
create_circle(clicked_id);
} else if($(this).hasClass('placeable')){
$(this).attr('class','');
create_circle(clicked_id);
}
if (check_for_win(color, clicked_id)){
congratulate(color);
}
});
エラーは、この部分の check_for_win() 関数内で発生します。
var left_squares = [1, 8, 15, 22, 29, 36];
var in_array = jQuery.inArray(square, left_squares);
if (in_array > -1) { //IT HAPPENS IN THIS IF
if (check_horiz_win(color, square)) { //---------
return true;//-----------
}//--------
}//----
else {
while (result = jQuery.inArray(square, left_squares) == -1) {
square -= 1;
if (result = jQuery.inArray(square, left_squares) !== -1) {
if (check_horiz_win(color, square)) {
return true;
}
}
}
}
check_horiz_win() 関数:
function check_horiz_win(color, square) {
win_count = 0;
for (i = square; i < square + 7; i += 1) {
if (four_in_a_row_check()) {
return true;
}
}
}
そして four_in_a_row_check():
function four_in_a_row_check() {
if ($('#' + i).hasClass(color)) {
win_count += 1;
if (win_count == 4) { return true; }
} else {
win_count = 0;
}
}