проверка двумерного массива
Ребят еще вопрос)Есть два двумерных массива как проверить каждый массив есть ли в нем атрибут 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, время: 05:54. |