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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2022, 16:13   #21
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

у вас уже есть (x y) --текущая позиция {по крайней мере должна быть}
добавим direct --НАПРАВЛЕНИЕ движения 1 -вниз 2 влево 3 влево-вниз и т. д.

0. задаем начальную позицию и направление (x y) уже есть а направление (вверх-вправо)
1. а теперь пишем ИЗМЕНЕНИЕ состояния (позиции(x, y) И направления (direct) при условии достижения границ матрицы
Код:
case direct of
1: begin Inc(y); if y=N then direct:=2; end;
2: begin Dec(x); if x=0 then direct:=3; end;
3: begin Dec(x); Inc(y); if ... then direct:=... end;
....
end;
код исключительно для примера

direct - по сути и есть та самая функция f(t)

P.S. чтобы "не забывать" какое число какому направлению соответствует

Код:
type TDirect =(d_down, d_left, d_downleft, ...., d_upleft, ....);
var direct: TDirect;

direct:=d_upleft;
Код:
case direct of
d_down:  ...
d_left: ...
d_dounleft: ....
...
end;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 08.06.2022 в 16:21.
evg_m вне форума Ответить с цитированием
Старый 08.06.2022, 16:43   #22
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Код "вручную" я вам приводил для того, чтобы стало понятнее как это все строится. Он просто свернется до всех тех проверок, которые у вас получатся. Функцию f(t) надо сделать в любом случае т.к. TTimer у вас вызывает такую функцию. Т.е. это переход от линейного цикла, в котором вы просто управляете счетчиками цикла и вызываете функцию ожидания с блокировкой работы потока, к асинхронному вызову функции по прохождению заданного интервала времени и выполняющей только 1 шаг цикла(ов).

При описании любой анимации вы еще не раз столкнетесь с такими подходами.
Сначала все элементы анимации раскладываются на временную ось (t - монотонно прирастающее значение), а потом все элементы организуются в функцию времени f(t), которая реализует требуемую анимацию. При этом вся логика должна присутствовать в этой функции. Использование case t of это только первый наглядный пример построения. По хорошему вам нужна ссылка на функцию, которая будет обновляться, а в функциях будут написаны изменения.
macomics вне форума Ответить с цитированием
Старый 14.06.2022, 12:09   #23
Valick
Форумчанин
 
Регистрация: 27.04.2022
Сообщений: 493
По умолчанию

Наконец-то руки дошли прикрутить ajax
http://kaval.beget.tech/matrix.php?x...000&go=Execute
Как только дойдут руки научу скрипт вовремя останавливаться.
Valick вне форума Ответить с цитированием
Старый 14.06.2022, 13:38   #24
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

А разве эти элементы не надо заполнять?
Изображения
Тип файла: png Matrix.png (64.2 Кб, 2 просмотров)

Последний раз редактировалось macomics; 14.06.2022 в 13:40.
macomics вне форума Ответить с цитированием
Старый 14.06.2022, 13:43   #25
Valick
Форумчанин
 
Регистрация: 27.04.2022
Сообщений: 493
По умолчанию

macomics, незнаю, я спрашивал в теме раньше (два скриншота привёл) сказали всё ок.
Не вопрос, можно и заполнять.
___
Поправил, прикольная штука получилась, жаль бесполезная.

Последний раз редактировалось Valick; 14.06.2022 в 18:14.
Valick вне форума Ответить с цитированием
Старый 14.06.2022, 23:03   #26
mr.stranger
Пользователь
 
Регистрация: 02.05.2022
Сообщений: 52
По умолчанию

Цитата:
Сообщение от macomics Посмотреть сообщение
А разве эти элементы не надо заполнять?
Нет, со среднего элемента до верхнего левого угла, больше диагональ не трогать
Но на вашем фото не главная диагональ
mr.stranger вне форума Ответить с цитированием
Старый 14.06.2022, 23:27   #27
Valick
Форумчанин
 
Регистрация: 27.04.2022
Сообщений: 493
По умолчанию

Цитата:
Сообщение от mr.stranger Посмотреть сообщение
Нет, со среднего элемента до верхнего левого угла, больше диагональ не трогать
Поздно, я уже переделал и алгоритм на порядок сложнее (интереснее).

Цитата:
Сообщение от mr.stranger Посмотреть сообщение
Но на вашем фото не главная диагональ
А если посмотреть внимательнее?
Valick вне форума Ответить с цитированием
Старый 15.06.2022, 10:09   #28
Valick
Форумчанин
 
Регистрация: 27.04.2022
Сообщений: 493
По умолчанию

Снимок экрана от 2022-06-15 10-07-45.png
упс

P.S. Поправил http://kaval.beget.tech/matrix.php?x...=20&go=Execute позже верну вариант с неполной диагональю.

Последний раз редактировалось Valick; 15.06.2022 в 12:15.
Valick вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с Edit, Timer, StringGrid Женька Good Помощь студентам 1 19.10.2012 22:08
Timer... Teleport Общие вопросы Delphi 13 14.09.2011 17:02
Timer или While? xrob Общие вопросы Delphi 7 24.08.2011 14:06
timer(vc++) NiCola999 Windows Forms 13 31.01.2011 06:00
Timer... Roof Общие вопросы Delphi 11 11.10.2007 12:57