Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.07.2014, 18:16
Интересующийся
Отправить личное сообщение для jeka123 Посмотреть профиль Найти все сообщения от jeka123
 
Регистрация: 21.08.2013
Сообщений: 17

проверка двумерного массива
Ребят еще вопрос)Есть два двумерных массива как проверить каждый массив есть ли в нем атрибут 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:'Промазал'
    };
}
Ответить с цитированием
  #2 (permalink)  
Старый 06.07.2014, 19:04
Аватар для Sklifosofsky
Новичок на форуме
Отправить личное сообщение для Sklifosofsky Посмотреть профиль Найти все сообщения от Sklifosofsky
 
Регистрация: 05.07.2014
Сообщений: 7

for(i=0;i<m;i++){
for(i2=0;i2<n;i2++){
if (pl_list_1[i][i2].chip === true){
alert('Че то нашло'); 
}
}
}


Это???
Ответить с цитированием
  #3 (permalink)  
Старый 06.07.2014, 21:40
Интересующийся
Отправить личное сообщение для jeka123 Посмотреть профиль Найти все сообщения от jeka123
 
Регистрация: 21.08.2013
Сообщений: 17

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 но не находит( мне это для цикла нужно проверять есть корабли или нет)
Ответить с цитированием
  #4 (permalink)  
Старый 06.07.2014, 23:12
Аватар для Sklifosofsky
Новичок на форуме
Отправить личное сообщение для Sklifosofsky Посмотреть профиль Найти все сообщения от Sklifosofsky
 
Регистрация: 05.07.2014
Сообщений: 7

В функции haship i2 стоит на j поменять
Ответить с цитированием
  #5 (permalink)  
Старый 06.07.2014, 23:21
Интересующийся
Отправить личное сообщение для jeka123 Посмотреть профиль Найти все сообщения от jeka123
 
Регистрация: 21.08.2013
Сообщений: 17

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!!!!!!');
}
}
}
}*/

тоже самое забыл просто добавить)блин как проверить(
Ответить с цитированием
  #6 (permalink)  
Старый 06.07.2014, 23:53
Аватар для Sklifosofsky
Новичок на форуме
Отправить личное сообщение для Sklifosofsky Посмотреть профиль Найти все сообщения от Sklifosofsky
 
Регистрация: 05.07.2014
Сообщений: 7

Я сейчас вчитался внимательно...
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; //предлагаю сюда вынести. Хотя не вижу в этом смысла вообще использовать(так на заметку)
}

Последний раз редактировалось Sklifosofsky, 07.07.2014 в 00:06.
Ответить с цитированием
  #7 (permalink)  
Старый 07.07.2014, 00:05
Интересующийся
Отправить личное сообщение для jeka123 Посмотреть профиль Найти все сообщения от jeka123
 
Регистрация: 21.08.2013
Сообщений: 17

да прикол в том что эта функция возвращает есть ли еще корабли или нет(
Ответить с цитированием
  #8 (permalink)  
Старый 07.07.2014, 00:09
Аватар для Sklifosofsky
Новичок на форуме
Отправить личное сообщение для Sklifosofsky Посмотреть профиль Найти все сообщения от Sklifosofsky
 
Регистрация: 05.07.2014
Сообщений: 7

Я отредактировал свой пост. Так будет возвращать)))
Ответить с цитированием
  #9 (permalink)  
Старый 07.07.2014, 00:15
Интересующийся
Отправить личное сообщение для jeka123 Посмотреть профиль Найти все сообщения от jeka123
 
Регистрация: 21.08.2013
Сообщений: 17

то есть можно return false не писать ?)
Ответить с цитированием
  #10 (permalink)  
Старый 07.07.2014, 00:16
Интересующийся
Отправить личное сообщение для jeka123 Посмотреть профиль Найти все сообщения от jeka123
 
Регистрация: 21.08.2013
Сообщений: 17

а
блин от я слепой только заметил
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка длинны элемента массива. ViseNupper Общие вопросы Javascript 2 25.04.2014 14:29
Проверка массива на наличие элемента Скриптор Общие вопросы Javascript 16 10.09.2012 18:00
Сортировка двумерного массива методом пузырька lammeR Общие вопросы Javascript 31 01.07.2012 20:48
Среднее арифметическое двумерного массива Тип_1 Общие вопросы Javascript 23 25.06.2012 00:33
Помогите удалить элемент двумерного массива Dorsaj Общие вопросы Javascript 5 18.10.2010 18:49