Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.11.2015, 14:40
Новичок на форуме
Отправить личное сообщение для Stabby Посмотреть профиль Найти все сообщения от Stabby
 
Регистрация: 18.04.2015
Сообщений: 4

использование цикла
Всем привет, я абсолютный новичок в программировании. Сделал игру крестики-нолики, все работает, но код ужасно громоздкий хотелось бы вот эту часть провести через какой-нибудь цикл

if( ($('#1 p').text() === '0' || $('#1 p').text() === 'X') &&
($('#2 p').text() === '0' || $('#2 p').text() === 'X') &&
($('#3 p').text() === '0' || $('#3 p').text() === 'X') &&
($('#4 p').text() === '0' || $('#4 p').text() === 'X') &&
($('#5 p').text() === '0' || $('#5 p').text() === 'X') &&
($('#6 p').text() === '0' || $('#6 p').text() === 'X') &&
($('#7 p').text() === '0' || $('#7 p').text() === 'X') &&
($('#8 p').text() === '0' || $('#8 p').text() === 'X') &&
($('#9 p').text() === '0' || $('#9 p').text() === 'X')){
alert('Ничья');
}

возможно ли такое? если да, то как? заранее спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 30.11.2015, 14:52
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Stabby,
а это точно ничья?
Ответить с цитированием
  #3 (permalink)  
Старый 30.11.2015, 15:26
Новичок на форуме
Отправить личное сообщение для Stabby Посмотреть профиль Найти все сообщения от Stabby
 
Регистрация: 18.04.2015
Сообщений: 4

Да, все поля заполняются Х и 0 выходит ничья, есть еще два условия на победу, когда 3 клетки подряд заполнены одним знаком.
Ответить с цитированием
  #4 (permalink)  
Старый 30.11.2015, 15:47
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от Stabby
все поля заполняются Х и 0 выходит ничья
бред какой-то, при любом раскладе тогда ничья.
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .first  {
     width: 300px;
     height: 300px;


  }
  .first div{
    float: left;
     width: 96px;
     height: 96px;
     border: 2px solid rgba(139, 69, 19, 1);
  }

  </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
     $(function(){
       var s = $(".first p");
       s.text(function(indx, element){
           return Math.random() > .5 ? '0' : 'X'
           });
    if( ($('#1 p').text() === '0' || $('#1 p').text() === 'X') &&
 ($('#2 p').text() === '0' || $('#2 p').text() === 'X') &&
 ($('#3 p').text() === '0' || $('#3 p').text() === 'X') &&
 ($('#4 p').text() === '0' || $('#4 p').text() === 'X') &&
 ($('#5 p').text() === '0' || $('#5 p').text() === 'X') &&
 ($('#6 p').text() === '0' || $('#6 p').text() === 'X') &&
 ($('#7 p').text() === '0' || $('#7 p').text() === 'X') &&
 ($('#8 p').text() === '0' || $('#8 p').text() === 'X') &&
 ($('#9 p').text() === '0' || $('#9 p').text() === 'X')){
 alert('Ничья');
 }



});


  </script>
</head>

<body>



<div class='first'>
 <div id="1">
     <p></p>
 </div>
 <div id="2">
     <p></p>
 </div>
 <div id="3">
     <p></p>
 </div>
 <div id="4">
     <p></p>
 </div>
 <div id="5">
     <p></p>
 </div>
 <div id="6">
     <p></p>
 </div>
 <div id="7">
     <p></p>
 </div>
 <div id="8">
     <p></p>
 </div>
 <div id="9">
     <p></p>
 </div>
</div>


</body>

</html>
Ответить с цитированием
  #5 (permalink)  
Старый 30.11.2015, 16:54
Новичок на форуме
Отправить личное сообщение для Stabby Посмотреть профиль Найти все сообщения от Stabby
 
Регистрация: 18.04.2015
Сообщений: 4

Нет, Вы не поняли, перед этим условием стоит другое условие на победу, если оно выполнится, все поля очищаются. В любом случае, можно ли как-то прогнать через цикл?
Ответить с цитированием
  #6 (permalink)  
Старый 30.11.2015, 17:47
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от Stabby
можно ли как-то прогнать через цикл?
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .first  {
     width: 300px;
     height: 300px;


  }
  .first div{
    float: left;
     width: 96px;
     height: 96px;
     border: 2px solid rgba(139, 69, 19, 1);
  }
body{
  width: 2000px;
}

  </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
     $(function(){
       var s = $(".first p");
       s.text(function(indx, element){
           return Math.random() > .5 ? '0' : 'X'
           });

var ary = document.querySelectorAll('.first p');
ary = [].every.call(ary,function(p) {
     var text = p.textContent || p.innerText;
     return text === 'X' || text === '0';
 });
ary && alert('Ничья');

});



  </script>
</head>

<body>



<div class='first'>
 <div id="1">
     <p></p>
 </div>
 <div id="2">
     <p></p>
 </div>
 <div id="3">
     <p></p>
 </div>
 <div id="4">
     <p></p>
 </div>
 <div id="5">
     <p></p>
 </div>
 <div id="6">
     <p></p>
 </div>
 <div id="7">
     <p></p>
 </div>
 <div id="8">
     <p></p>
 </div>
 <div id="9">
     <p></p>
 </div>
</div>


</body>

</html>
Ответить с цитированием
  #7 (permalink)  
Старый 02.12.2015, 00:35
Кандидат Javascript-наук
Отправить личное сообщение для MininAS Посмотреть профиль Найти все сообщения от MininAS
 
Регистрация: 22.09.2009
Сообщений: 122

А может после проверки на победу просто проверить остались ли пустые клетки?
Ответить с цитированием
  #8 (permalink)  
Старый 02.12.2015, 11:43
Интересующийся
Отправить личное сообщение для dyhmzall Посмотреть профиль Найти все сообщения от dyhmzall
 
Регистрация: 02.12.2015
Сообщений: 13

ну, самое простое, что напрашивается:
var flag = true;
for(var i=1; i<=9; i++) {

    if($('#'+i+' p').text() === '0' || $('#'+i+' p').text() === 'X')) {

        // условие выполнено. продолжаем цикл
        flag = true;
    } else {

        // не выполнено. выходим из цикла. не ничья
        flag = false;
        break;
    }
}

if(flag) { alert('Ничья'); }

Последний раз редактировалось dyhmzall, 02.12.2015 в 12:21.
Ответить с цитированием
  #9 (permalink)  
Старый 02.12.2015, 12:08
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от dyhmzall
выходим из цикла.
чем
Сообщение от рони
every
отличается от вашего кода?

Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #10 (permalink)  
Старый 02.12.2015, 12:22
Интересующийся
Отправить личное сообщение для dyhmzall Посмотреть профиль Найти все сообщения от dyhmzall
 
Регистрация: 02.12.2015
Сообщений: 13

Спасибо! А отличие в следующем: если человек - новичек, то этот код он поймет) а Ваш скорее всего нет.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JavaScript. Уровень 3в. Серверное программирование на Node.js maxy666 Node.JS 8 10.08.2014 00:36
Переход на url после окончания цикла vas88811 Events/DOM/Window 16 21.12.2013 12:44
Использование цикла Each Arroyo jQuery 4 12.08.2012 17:27
Про использование cookies zloctb Общие вопросы Javascript 3 11.02.2012 09:36
как отобразить в окне значения счетчика во время выполнения цикла FOR Алекс97 Общие вопросы Javascript 5 06.09.2008 10:36