БлогNot. Javascript: как проще всего передвинуть фишку на игровом поле?

Javascript: как проще всего передвинуть фишку на игровом поле?

Ничего проще как-то не придумалось, в предыдущей заметке я делал куда замудрёней. Но если "ходить" не по фоновому рисунку, а просто по таблице, то не нужно ни позиционировать элементы через CSS, ни рассчитывать каких-либо размеров.

Метод start готовит "игровое поле" в виде таблицы, пустым ячейкам которой присвоены идентификаторы, и вызывает на периодическое выполнение метод move, выполняющий перемещение фигур по клеткам. Вызывается start после полной загрузки страницы.

Стиль таблицы задан так, чтобы все ячейки были одинаковой ширины, без лишних отступов и с обрамлением в 1 пиксель толщиной.

Метод move, если нужно, включает или выключает видимость элементов и рассчитывает их новое положение, после чего получает по идентификатору элемент myItem и методом appendChild добавляет его в нужную ячейку.

Вот весь пример в работе непосредственно на странице и его исходный код:

<style>
 .contentTable {
  table-layout: fixed;
  white-space: nowrap;
  border-spacing: 0;
 }
 .contentCell {
  width: 60px;
  height: 60px;
  text-align: center;
  vertical-align: middle;
  border: 1px solid black;
  margin: 0;
  padding: 0;
 }
</style>

<div id="contentTable"></div>
<div id="imgBox">
</div>
<img src="http://nickolay.info/jscript/funnyPawns/p1.gif" id="imgMove" style="visibility:hidden;">

<script>
var rows = 10, cols = 10, step = 1, first = true;

function start () {
 var s = '<table class="contentTable">'+"\n";
 for (var i=1; i<=rows; i++) {
  s += '<tr>'+"\n";
  for (var j=1; j<=cols; j++) {
   s += '<td class="contentCell" id="cell'+(cols*(i-1)+j)+'"></td>'+"\n";
  }
  s += '</tr>'+"\n";
 }
 s += '</table>'+"\n";
 document.getElementById('contentTable').innerHTML = s;
 window.setInterval('move()',200);
}

function move () {
 if (first) {
  first = false;
  document.getElementById('imgMove').style.visibility = 'visible';
 }
 var myItem = document.getElementById('imgMove');
 document.getElementById('cell'+step).appendChild(myItem);
 step++;
 if (step>rows*cols) step = 1;
}

window.addEventListener('load', function () {
 start ();
}, false);
</script>
<noscript><div align="center">Включите Javascript для работы приложения</div></noscript>

25.01.2019, 18:30 [1721 просмотр]


теги: учебное программирование игра javascript памятка

К этой статье пока нет комментариев, Ваш будет первым