проверка двумерного массива
Ребят еще вопрос)Есть два двумерных массива как проверить каждый массив есть ли в нем атрибут chip == true?
var n = 4, m = 4,player = 2; var pl_list_1 = []; var pl_list_2 = []; var sea = {}; for (var i = 0; i < m; i++){ pl_list_1[i] = []; pl_list_2[i] = []; for (var j = 0; j < n; j++){ pl_list_1[i][j] = getSea(sea); pl_list_2[i][j] = getSea(sea); }} for (var z = 1; z <= player; z++){ do { var x = prompt(z+' Игрок\nВведите координты кораблей по X'); var y = prompt(z+' Игрок\nВведите координты кораблей по Y'); message = confirm(z +' Игрок вы продолжаете ввод?'); putship(x,y,z); } while (message ===true); } alert('Война началась!'); if (pl_list_1.chip === true){//как тут проверить весь массив в котором атрибут обьекта chip = true ? alert('Че то нашло'); } console.log(pl_list_1); function putship(x,y,pl_id){ if(pl_id == 1){ pl_list_1[x][y].chip = true; }else if(pl_id == 2) { pl_list_2[x][y].chip = true; } } function getSea() { return { chip :false, opened:false, msg:'Промазал' }; } |
for(i=0;i<m;i++){ for(i2=0;i2<n;i2++){ if (pl_list_1[i][i2].chip === true){ alert('Че то нашло'); } } } Это??? :blink: |
var n = 4, m = 4,player = 2; var pl_list_1 = []; var pl_list_2 = []; var sea = {}; for (var i = 0; i < m; i++){ pl_list_1[i] = []; pl_list_2[i] = []; for (var j = 0; j < n; j++){ pl_list_1[i][j] = getSea(sea); pl_list_2[i][j] = getSea(sea); }} for (var z = 1; z <= player; z++){ do { var x = prompt(z+' Игрок\nВведите координты кораблей по X'); var y = prompt(z+' Игрок\nВведите координты кораблей по Y'); message = confirm(z +' Игрок вы продолжаете ввод?'); putship(x,y,z); } while (message ===true); } alert('Война началась!(^(*_*)^)'); do { for (var z = 1; z <= player; z++){ var firex = prompt(z+' Игрок\nОгонь по координатам по X'); var firey = prompt(z+' Игрок\n Огонь по координатам по Y'); fire(firex,firey,z); } } while (haschip(n,m) === true); // WhoWon(); console.log(pl_list_1); console.log(pl_list_2); function putship(x,y,pl_id){ if(pl_id == 1){ pl_list_1[x][y].chip = true; }else if(pl_id == 2) { pl_list_2[x][y].chip = true; } } function getSea() { return { chip :false, opened:false, msg:'Промазал' }; } function haschip(x,y){//всеравно тут false возвращает (( не находит for(var i=0;i<x;i++){ for(var j=0;j<y;j++){ alert(pl_list_1[i][j].chip); /*if (pl_list_1[i][i2].chip === true){ alert(pl_list_1[i][i2].chip); return true; }else { alert(pl_list_1[i][i2].chip); return false; } */ } } } function fire(x,y,pl_id){ if(pl_id == 1){ if (pl_list_2[x][y].opened === true) { alert ('Вы сюда уже стреляли!!!'); pl_list_2[x][y].msg = 'Тут уже огромная дыра'; }else if (pl_list_2[x][y].chip === false){ alert ('МИМО (^(*_*)^)!!!'); pl_list_2[x][y].msg = 'Тут уже огромная дыра'; }else{ pl_list_2[x][y].opened = true; if (pl_list_2[x][y].chip === true){ pl_list_2[x][y].chip = false; alert('Корабль Игрока 2 Уничтожен (^(X_X)^)!!!'); } } }else if(pl_id == 2) { if (pl_list_1[x][y].opened === true) { alert ('Вы сюда уже стреляли!!!'); pl_list_1[x][y].msg = 'Тут уже огромная дыра'; }else if (pl_list_1[x][y].chip === false){ alert ('МИМО (^(*_*)^)!!!'); pl_list_1[x][y].msg = 'Тут уже огромная дыра'; }else{ pl_list_1[x][y].opened = true; if (pl_list_1[x][y].chip === true){ pl_list_1[x][y].chip = false; alert('Корабль Игрока 1 Уничтожен (^(X_X)^)!!!'); } } } } /* function WhoWon(){ for(var i=0;i<x;i++){ for(var i2=0;i2<y;i2++){ if (pl_list_1[i][i2].chip !== true){ alert('Победа игрока 2!!!!!!'); } else if (pl_list_2[i][i2].chip !== true){ alert('Победа игрока 1!!!!!!'); } } } }*/ сделал как вы сказали в функции haschip но не находит( мне это для цикла нужно проверять есть корабли или нет) |
В функции haship i2 стоит на j поменять
|
var n = 4, m = 4,player = 2; var pl_list_1 = []; var pl_list_2 = []; var sea = {}; for (var i = 0; i < m; i++){ pl_list_1[i] = []; pl_list_2[i] = []; for (var j = 0; j < n; j++){ pl_list_1[i][j] = getSea(sea); pl_list_2[i][j] = getSea(sea); }} for (var z = 1; z <= player; z++){ do { var x = prompt(z+' Игрок\nВведите координты кораблей по X'); var y = prompt(z+' Игрок\nВведите координты кораблей по Y'); message = confirm(z +' Игрок вы продолжаете ввод?'); putship(x,y,z); } while (message ===true); } alert('Война началась!(^(*_*)^)'); do { for (var z = 1; z <= player; z++){ var firex = prompt(z+' Игрок\nОгонь по координатам по X'); var firey = prompt(z+' Игрок\n Огонь по координатам по Y'); fire(firex,firey,z); } } while (haschip(n,m) === true); // WhoWon(); console.log(pl_list_1); console.log(pl_list_2); function putship(x,y,pl_id){ if(pl_id == 1){ pl_list_1[x][y].chip = true; }else if(pl_id == 2) { pl_list_2[x][y].chip = true; } } function getSea() { return { chip :false, opened:false, msg:'Промазал' }; } function haschip(x,y){ for(var i=0;i<x;i++){ for(var j=0;j<y;j++){ if (pl_list_1[i][j].chip === true){ alert(pl_list_1[i][j].chip); return true; }else { alert(pl_list_1[i][j].chip); return false; } } } } function fire(x,y,pl_id){ if(pl_id == 1){ if (pl_list_2[x][y].opened === true) { alert ('Вы сюда уже стреляли!!!'); pl_list_2[x][y].msg = 'Тут уже огромная дыра'; }else if (pl_list_2[x][y].chip === false){ alert ('МИМО (^(*_*)^)!!!'); pl_list_2[x][y].msg = 'Тут уже огромная дыра'; }else{ pl_list_2[x][y].opened = true; if (pl_list_2[x][y].chip === true){ pl_list_2[x][y].chip = false; alert('Корабль Игрока 2 Уничтожен (^(X_X)^)!!!'); } } }else if(pl_id == 2) { if (pl_list_1[x][y].opened === true) { alert ('Вы сюда уже стреляли!!!'); pl_list_1[x][y].msg = 'Тут уже огромная дыра'; }else if (pl_list_1[x][y].chip === false){ alert ('МИМО (^(*_*)^)!!!'); pl_list_1[x][y].msg = 'Тут уже огромная дыра'; }else{ pl_list_1[x][y].opened = true; if (pl_list_1[x][y].chip === true){ pl_list_1[x][y].chip = false; alert('Корабль Игрока 1 Уничтожен (^(X_X)^)!!!'); } } } } /* function WhoWon(){ for(var i=0;i<x;i++){ for(var i2=0;i2<y;i2++){ if (pl_list_1[i][i2].chip !== true){ alert('Победа игрока 2!!!!!!'); } else if (pl_list_2[i][i2].chip !== true){ alert('Победа игрока 1!!!!!!'); } } } }*/ тоже самое забыл просто добавить)блин как проверить( |
Я сейчас вчитался внимательно...
return как правило прерывает цикл. Как раз при первом цикле происходит перескок на событие после else, а там return function haschip(x,y){ for(var i=0;i<x;i++){ for(var j=0;j<y;j++){ if (pl_list_1[i][j].chip === true){ alert(pl_list_1[i][j].chip); return true; }else { alert(pl_list_1[i][j].chip);// Каждый цикл будет false пока не наткнётся на true //return false; } } } return false; //предлагаю сюда вынести. Хотя не вижу в этом смысла вообще использовать(так на заметку) } |
да прикол в том что эта функция возвращает есть ли еще корабли или нет(
|
Я отредактировал свой пост. Так будет возвращать)))
|
то есть можно return false не писать ?)
|
а
блин от я слепой только заметил |
Часовой пояс GMT +3, время: 23:28. |