Javascript.RU

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

Змейка JavaScript
Только начал изучение.
JS
Код:
function createMatrix()
{
	var matrix = document.getElementById('matrix');
	var n = 20 * 20;	
	
	for (var i = 0; i < n; i++)
	{
		var div = document.createElement('div');
		div.className = 'cell';
		matrix.appendChild(div);
	}
}
function getCell(row, col)
{

}

function setCell(row, col, val)
{

}
window.onload = function()
{
	createMatrix();	
	setCell(1, 1, true);
}
Получается матрица из 400 элементов (Квадрат), из DIV элементов. Как обратиться к нужному DIV элементу? Нужно заполнить функции setCell getCell - чтобы закрасился первый див элемент. Как это сделать?
Ответить с цитированием
  #2 (permalink)  
Старый 29.03.2015, 19:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

SergeiGeek,

<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .cell {
     float: left;
     height: 12px;
     width: 12px;
     border: #0000CD 1px solid;
  }
  #matrix{
    width: 280px;
  }
  .red{
    background: #FF0000;
  }

  </style>
  <script>
      function createMatrix()
{
    var matrix = document.getElementById('matrix');
    var n = 20 * 20;

    for (var i = 0; i < n; i++)
    {
        var div = document.createElement('div');
        div.className = 'cell';
        matrix.appendChild(div);
    }
}
function getCell(row, col)
{
    var divs = document.querySelectorAll('.cell');
    return divs[--row * 20 + --col]
}

function setCell(row, col, val)
{
   getCell(row, col).classList[val ? 'add' : 'remove']('red')
}
window.onload = function()
{
    createMatrix();
    setCell(1, 1, true);
}
  </script>
</head>

<body>
<div id="matrix"></div>
</body>

</html>
Ответить с цитированием
  #3 (permalink)  
Старый 29.03.2015, 21:06
Интересующийся
Отправить личное сообщение для SergeiGeek Посмотреть профиль Найти все сообщения от SergeiGeek
 
Регистрация: 29.03.2015
Сообщений: 10

Великолепно!

Поясните каждый пункт, для более лучшего понимания, если вам не сложно

Код:
getCell(row, col).classList[val ? 'add' : 'remove']('red')
В КлассЛист квадратные скобки, это массив? Почему после val вопросительный знак?
Ответить с цитированием
  #4 (permalink)  
Старый 29.03.2015, 21:12
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от SergeiGeek
В КлассЛист квадратные скобки, это массив?
это свойство classList которое определится в зависимости от val
Условный оператор
доступ-через-квадратные-скобки

Последний раз редактировалось рони, 29.03.2015 в 21:15.
Ответить с цитированием
  #5 (permalink)  
Старый 30.03.2015, 19:14
Интересующийся
Отправить личное сообщение для SergeiGeek Посмотреть профиль Найти все сообщения от SergeiGeek
 
Регистрация: 29.03.2015
Сообщений: 10

Спасибо друг! А можно теперь задать движение этому квадрату за счет стрелочек клавиатуры. К этому всему я добавил вот что:
document.onkeyDown = function()
{
	var KEY_CODE = {
  		LEFT: 37,
  		UP: 38,
  		RIGHT: 39,
  		DOWN: 40
	};
	if (event.keyCode == KEY_CODE.LEFT) {
	
}


Лучше реализовать через IF или SWITCH ? Додумать не могу как заставить квадрат двигаться.
Ответить с цитированием
  #6 (permalink)  
Старый 30.03.2015, 19:19
Интересующийся
Отправить личное сообщение для SergeiGeek Посмотреть профиль Найти все сообщения от SergeiGeek
 
Регистрация: 29.03.2015
Сообщений: 10

То что ты мне написал выше.
function getCell(row, col)
37
{
38
    var divs = document.querySelectorAll('.cell');
39
    return divs[--row * 20 + --col]
40
}
41
 
42
function setCell(row, col, val)
43
{
44
   getCell(row, col).classList[val ? 'add' : 'remove']('red')
45
}


Такое возможно реализовать с помощью JQuerry?
Ответить с цитированием
  #7 (permalink)  
Старый 30.03.2015, 19:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от SergeiGeek
Такое возможно реализовать с помощью JQuerry?
да можно но нафига?
Ответить с цитированием
  #8 (permalink)  
Старый 30.03.2015, 19:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от SergeiGeek
движение этому квадрату за счет стрелочек клавиатуры
ищите по форуму недавно было
Ответить с цитированием
  #9 (permalink)  
Старый 30.03.2015, 20:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

змейка игра макет
SergeiGeek,
кликнуть по квадратику потом нажать стрелки на клавиатуре.
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .cell {
     float: left;
     height: 12px;
     width: 12px;
     border: #0000CD 1px solid;
  }
  #matrix{
    width: 280px;
  }
  .red{
    background: #FF0000;
  }

  </style>
  <script>
      function createMatrix() {
          var matrix = document.getElementById('matrix');
          var n = 20 * 20;

          for (var i = 0; i < n; i++) {
              var div = document.createElement('div');
              div.className = 'cell';
              matrix.appendChild(div);
          }
      }

      function getCell(row, col) {
          var divs = document.querySelectorAll('.cell');
          return divs[row * 20 + col]
      }

      function setCell(row, col, val) {
          var div = getCell(row, col)
          div && div.classList[val ? 'add' : 'remove']('red')
      }
      window.onload = function() {
          createMatrix();
          setCell(10, 10, true);
          var b = {
              39: ["left", 1],
              37: ["left", -1],
              40: ["top", 1],
              38: ["top", -1],
              top: 10,
              left: 10
          };
          document.body.onkeydown = function(a) {
              a = a || window.event;
              a = a.keyCode;
              if (b[a]) {
                  setCell(b.top, b.left, false)
                  var d = b[a][0];
                  b[d] += b[a][1];
                  b[d] < 0 && (b[d] = 19)
                  b[d] %= 20;
                  setCell(b.top, b.left, true)
              }
return false;
          };

      };
  </script>
</head>

<body>

<div id="matrix"></div>
</body>
</html>

Последний раз редактировалось рони, 04.12.2019 в 19:04.
Ответить с цитированием
  #10 (permalink)  
Старый 30.03.2015, 23:06
Интересующийся
Отправить личное сообщение для SergeiGeek Посмотреть профиль Найти все сообщения от SergeiGeek
 
Регистрация: 29.03.2015
Сообщений: 10

спасибо! =)

a = a || window.event;
57
              a = a.keyCode;
58
              if (b[a]) {
59
                  setCell(b.top, b.left, false)
60
                  var d = b[a][0];
61
                  b[d] += b[a][1];
62
                  b[d] < 0 && (b[d] = 19)
63
                  b[d] %= 20;
64
                  setCell(b.top, b.left, true)


красиво это написано, а где можно прочесть про значения %= || += и тд?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
змейка на javascript Shaci Ваши сайты и скрипты 49 09.06.2013 08:52
Интерпретатор Java на JS kobezzza Оффтопик 24 11.10.2012 18:32
Первый Moscow JavaScript Meetup korenyushkin Общие вопросы Javascript 0 26.07.2011 15:23
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34