0

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;
    }
}
4

1 に答える 1