Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Программа перехватчик (https://javascript.ru/forum/offtopic/29211-programma-perekhvatchik.html)

skywalker 19.06.2012 23:31

Да не
графика то не нужна
я в принципе понимаю, как нужно составить код
Но именно в JS не могу представить как это сделать

Deff 19.06.2012 23:35

Цитата:

Сообщение от skywalker
Принципа поведения не знает
Просто тупо каждый ход смещается к цели на три клетки

Хм т.е его перемещение всегда три ? если он промазал с трешного расстояния - будет долго крутицо вокруг цели
Ксать перехватчик по диагонали пуляет или ? (на три клетки под 45 ?

skywalker 19.06.2012 23:37

Если промазал
то цикл повторяется заново, только с уже имеющихся позиций
т.е. заново перемещается цель, и он заново к ней прыгает

Deff 19.06.2012 23:39

Цитата:

Сообщение от skywalker
то цикл повторяется заново, только с уже имеющихся позиций

Это всё ясно - но в реальности - к примеру из разных углов - он быстро подлетает к цели - а затем медленно крутицо вокруг -пока она сама не напорется, если скорость перехватчика всегда три

9xakep 19.06.2012 23:40

skywalker,
эх...добрая моя душа.
Короче, посмотри в мой код(он конечно не идеален, но..), авось разберешься, там конечно ужас полный, коменты так, для приличия.
Тебе понадобиться:
1) Ф-ия создания матрицы (тэйбла)
function createTable(x, y) {
      window['x'] = x
      window['y'] = y

      var all = x * y
      var all2 = 0;

      document.write('<table id="tetris">')
      for (i = 0; i < y; i++) document.getElementById('tetris').innerHTML += "<tr id='tr" + i + "'></tr>";
      for (i = 0; i < y; i++) {
        for (k = 0; k < x; k++) {

          all2 += 1;

          document.getElementById("tr" + i).innerHTML += "<td id='td" + all2 + "'>" + w_sq + "</td>"
        }
      }
    }

Она сделана так, что все ячейки пронумерованы: с ид: td1,td2,td3...td(x*y). P.S. x*y - последняя ячейка (макс).
2)Далее...у меня есть массив, в котором содераться координаты данной фигуры, в твоем случае цели: условно: 4. Это будет означать, что цель(если она размером в одну ячйку) Находиться в document.getElementById('td4')
3) При каждом перемещении цели, ты должен очищать экран:
function clear() {
      for (i = 0; i < td_id.length; i++) {

        document.getElementById('td' + td_id[i]).innerHTML = w_sq
      }
    }
, где w_sq - это: "<div style='background:#D3D3D3;height:15px;width:15px;' ></div>". То бишь белая ячейка
4) После ты уже узнал куда переместиться твоя цель (допустим -2 - влево). Ты: координаты уменьшаешь на 1. Становиться 4-1=3. И document.getElementById('td'+твои координты).innerHTML = sq, где твои координаты, мы уже посчитали: 3. А sq - "<div style='background:red;height:15px;width:15px;'></div>"
5) Перехватчик перемещаешь аналогично. Я хз он у тебя там стреляет, не стреляет, пускай он тупо также перемещается условно.
6) Ставишь все это в var inter = setInterval(function () { //code.. },1000) А когда координаты перехватчика == координты цели, то clearInterval(inter). То бишь перехватчик достиг цели.

==========

Правда как сказал, Deff, не учитывает, что перехватчик может двигаться под углом 45 градусов.

skywalker 19.06.2012 23:51

9xakep,
Спасибо
Код понятен.
А с углом думаю сам разберусь

Dim@ 25.06.2012 15:48

2 дня поморочился по полтора часика кое-что получилось :) :)
http://learn.javascript.ru/play/KbhYFb

Deff 25.06.2012 18:27

Dim@,
:) Жулик по идее если постоянно три клетки , как грил ТС (горизонталь -вертикаль или даже диагональ) , - то на конечном этапе кручение было бы занчительно долее

Dim@ 25.06.2012 22:39

Deff,
не понял.:) что не так?

Deff 25.06.2012 23:11

Dim@,
Всё так - но ТС казал что у перехватчика скорость постоянная 3клетки
влево вправо - вверх вниз (про диагональ так и не уточнили)
(Я Спецом просил уточнить раз несколько
у тьву она меняется от 0 до 3


Часовой пояс GMT +3, время: 08:05.