Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2013, 18:14   #1
salwator
Пользователь
 
Регистрация: 21.12.2010
Сообщений: 31
По умолчанию движение объекта

Всем привет.
Скажу сразу в javascript я ещё понимая очень мало.
Столкнулся с такой проблемой. Не знаю как реализовать движение объекта.
Есть код лабиринта. Объектом я управляю с помощью клавиатуры. Как сделать так , чтобы объект двигался сам вокруг квадрата???

Код:
<html>
<body >
<center>

<SCRIPT LANGUAGE="JavaScript">

function moveIt() {
  if (!progress) return
  switch (event.keyCode) {
case 37: //влево
  if (labirint[start.rows][1][start.cols-1]==0) {

start.cols--
if(document.all.board.rows[start.rows].cells[start.cols].innerText=="")
{zch=true
document.all.board.rows[start.rows].cells[start.cols].innerText=""
}

document.all.board.rows[start.rows].cells[start.cols+1].style.backgroundColor=""
document.all.board.rows[start.rows].cells[start.cols].style.backgroundColor="red"

if((start.cols>8)&&(start.rows>9))message.innerText=""
  } 

  break;
case 38: // вверх
  if (labirint[start.rows][0][start.cols]==0) {

start.rows--
if(document.all.board.rows[start.rows].cells[start.cols].innerText=="")
{zch=true
document.all.board.rows[start.rows].cells[start.cols].innerText=""
}
document.all.board.rows[start.rows+1].cells[start.cols].style.backgroundColor=""
document.all.board.rows[start.rows].cells[start.cols].style.backgroundColor="red"

if((start.cols>8)&&(start.rows>9))message.innerText=""
  }

  break;
case 39: // вправо
  
  if (labirint[start.rows][1][start.cols]==0) {

start.cols++
if(document.all.board.rows[start.rows].cells[start.cols].innerText=="")
{zch=true
document.all.board.rows[start.rows].cells[start.cols].innerText=""
}
document.all.board.rows[start.rows].cells[start.cols-1].style.backgroundColor=""
document.all.board.rows[start.rows].cells[start.cols].style.backgroundColor="red"

if((start.cols>8)&&(start.rows>9))message.innerText=""
  }

  break;
case 40: //вниз
  if (labirint[start.rows+1]==null) return
  if (labirint[start.rows+1][0][start.cols]==0) {

start.rows++
if(document.all.board.rows[start.rows].cells[start.cols].innerText=="")
{zch=true
document.all.board.rows[start.rows].cells[start.cols].innerText=""
}
document.all.board.rows[start.rows-1].cells[start.cols].style.backgroundColor=""
document.all.board.rows[start.rows].cells[start.cols].style.backgroundColor="red"

if((start.cols>8)&&(start.rows>9))message.innerText=""
  }
  
  break;
  }
 if (document.all.board.rows[start.rows].cells[start.cols].innerText=="препод") {
if(zch){message.innerText="Зачет!"
	progress=false}
  }

 if (document.all.board.rows[start.rows].cells[start.cols].innerText=="вход") 
message.innerText=""
}
</SCRIPT>

<div align="center"><strong>Используйте  стрелки на клавиатуре, чтобы двигаться.</strong></div><br>
<p><TABLE id="board" align="center" cellspacing="0" cellpadding="0" bgcolor="#ffffcc">
  <SCRIPT LANGUAGE="JavaScript">
for (var row = 0; row<labirint.length; row++) {
  document.write("<TR>") 

  for (var col = 0; col<labirint[row][0].length; col++) {
document.write("<TD STYLE='")
for (var cell = 0; cell<2; cell++) {
  if (labirint[row][cell][col]==1) 
document.write(sides[cell]+": 2px black solid;")
}
if ((0==col) && (0!=row))
 document.write("border-left: 2px black solid;")
if (row==labirint.length-1)
 document.write("border-bottom: 2px black solid;")
if ((0==row) && (0==col)) 
  document.write(" background-color:red;' class=text>вход</TD>")
else if((col==11)&&(row==1))document.write(" ' ")
else
 if ((row==labirint.length-1) && (col==labirint[row][0].length-1))
   document.write("' class=text>препод</TD>")
 else
  document.write("'> </TD>")
  }
  document.write("</TR>")
}

var start = new Object
start.rows = 0
start.cols = 0
progress=true
zch=false
document.onkeydown = moveIt;
  </SCRIPT>
  </TABLE>
  <p id="message"> </p></p>

</body>
</html>
salwator вне форума Ответить с цитированием
Старый 14.04.2013, 18:15   #2
salwator
Пользователь
 
Регистрация: 21.12.2010
Сообщений: 31
По умолчанию

Это квадрат вокруг которого должен двигаться объект

Код:
var labirint = new Array()
var sides = new Array("Border-Top", "Border-Right")
for (var rows=0; rows<13; rows++)
labirint[rows] = new Array()
labirint[0][0] = new Array(1,1,1,1,1,1,1,1,1,1,1,1)
labirint[0][1] = new Array(0,0,0,0,0,0,0,0,0,0,0,1)
labirint[1][0] = new Array(0,1,1,1,1,1,1,1,1,1,1,0)
labirint[1][1] = new Array(1,0,0,0,0,0,0,0,0,0,1,1)
labirint[2][0] = new Array(0,0,0,0,0,0,0,0,0,0,0,0)
labirint[2][1] = new Array(1,0,0,0,0,0,0,0,0,0,1,1)
labirint[3][0] = new Array(0,0,0,0,0,0,0,0,0,0,0,0)
labirint[3][1] = new Array(1,0,0,0,0,0,0,0,0,0,1,1)
labirint[4][0] = new Array(0,0,0,0,0,0,0,0,0,0,0,0)
labirint[4][1] = new Array(1,0,0,0,0,0,0,0,0,0,1,1)
labirint[5][0] = new Array(0,0,0,0,0,0,0,0,0,0,0,0)
labirint[5][1] = new Array(1,0,0,0,0,0,0,0,0,0,1,1)
labirint[6][0] = new Array(0,0,0,0,0,0,0,0,0,0,0,0)
labirint[6][1] = new Array(1,0,0,0,0,0,0,0,0,0,1,1)
labirint[7][0] = new Array(0,0,0,0,0,0,0,0,0,0,0,0)
labirint[7][1] = new Array(1,0,0,0,0,0,0,0,0,0,1,1)
labirint[8][0] = new Array(0,0,0,0,0,0,0,0,0,0,0,0)
labirint[8][1] = new Array(1,0,0,0,0,0,0,0,0,0,1,1)
labirint[9][0] = new Array(0,0,0,0,0,0,0,0,0,0,0,0)
labirint[9][1] = new Array(1,0,0,0,0,0,0,0,0,0,1,1)
labirint[10][0] = new Array(0,0,0,0,0,0,0,0,0,0,0,0)
labirint[10][1] = new Array(1,0,0,0,0,0,0,0,0,0,1,1)
labirint[11][0] = new Array(0,0,0,0,0,0,0,0,0,0,0,0)
labirint[11][1] = new Array(1,0,0,0,0,0,0,0,0,0,1,1)
labirint[12][0] = new Array(0,1,1,1,1,1,1,1,1,1,1,0)
labirint[12][1] = new Array(0,0,0,0,0,0,0,0,0,0,0,1)
salwator вне форума Ответить с цитированием
Старый 15.04.2013, 16:20   #3
salwator
Пользователь
 
Регистрация: 21.12.2010
Сообщений: 31
По умолчанию

Нашёл код движения объекта, но всё равно не получается его применить

Код:
var curx=0; //текущее положение слоя
var deltax=1; //шаг движения слоя (может быть и отрицательным!!!)
var areawidth=100; //размер области, по которой движется слой
 
function movelayer(){  //функция перемещения слоя
  curx+=deltax;        //обновляем текущее положение слоя
  document.all["admin"].style.left=curx; //перемещаем слой в новое положение
  //нужно проверить не достигли ли мы точки поворота, если да, то
  //изменяем направление движения
  if(curx>areawidth | curx<0){deltax=-deltax;}
  //и рекурсивно вызываем эту же функцию movelayer. Таким образом у нас получился цыкл!
  setTimeout('movelayer()',10);
}
 
movelayer();
salwator вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Движение объекта в Pascal W. Aron Помощь студентам 4 03.07.2012 13:35
Движение объекта (С++) фыф123 Помощь студентам 1 06.07.2011 20:50
Движение объекта dlnk C# (си шарп) 1 11.03.2011 21:17
Движение объекта ill2005 Помощь студентам 2 27.09.2010 21:32
Движение объекта к точке frai Общие вопросы Delphi 3 10.01.2008 00:42