0 / 0 / 0
Регистрация: 16.10.2014
Сообщений: 9
1

Обработчик событий прижков/падений

17.08.2015, 19:00. Показов 603. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток!

Господа, помогите разобраться, ситуация следующая: Я пишу приложение для отслеживания координат передвижения игрового персонажа. В частности, интересуют прыжки и/или падения.
Координаты, величину прыжков и падений я извлекаю из памяти игрового приложения, путем прочтения числового значения из блока памяти игры.
Мне уже известно что при прыжке числовое значение повышается - прибавляется, а при падении, оно убавляется - уменьшается. Изначально это значение равно нулю, это в том случаи если персонаж не прыгает/падает.

Значение - координаты, величину прыжка и/или падения я извлекаю из определенного адресного пространства, из памяти игрового приложения. Вот таким способом:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function Jumping: Single;
var
  ProcessIdentifier, ProcessHandle: Cardinal;
  Pointer, BytesRead: DWORD;
  Value: Single;
begin
  Result := 0;
  GetWindowThreadProcessId(GameScreen, @ProcessIdentifier);
  ProcessHandle := OpenProcess(PROCESS_ALL_ACCESS, False, ProcessIdentifier);
  Pointer := StrToInt('$' + IntToHex(Pointer + 260, 16));
  ReadProcessMemory(ProcessHandle, Ptr(Pointer), @Value, SizeOf(Value), BytesRead);
  if not (Value = 0) then
  begin
    Result := Value;
  end;
end;
После чего, считанное числовое значение я записываю в переменную и вычисляю разницу, вот так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var
  JumpingPrevious, JumpingDifference, : Integer;
 
begin
  JumpingDifference := Jumping - JumpingPrevious;
  JumpingPrevious := Jumping;
  if not (JumpingDifference = 0) then
  begin
    if (JumpingDifference > 0) then
    begin
      WriteLn('Up');
    end
    else
    if (JumpingDifference < 0) then
    begin
      WriteLn('Down');
    end;
  end;
end;
Выше описанный способ будет выводить разницу в значениях и показывать что значение, координаты увеличились или уменьшились. Мне же надо сделать так что бы определять что игрок подпрыгнул или упал. Как что подскажет? Если кто-то что-то не понял, то задавайте встречные вопросы, я буду отвечать...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.08.2015, 19:00
Ответы с готовыми решениями:

Обработчик событий
Доброго времени суток уважаемые эксперты! Вообщем есть проблема, есть у меня 3 компонента типа...

Обработчик событий
Ребята, помогите, как это должно выглядеть? Замените стандартный обработчик исключительных...

Обработчик событий
создать на форме 3 переключателя(Radiobutton)группу и метку(Label).Текст в метке любой.В результате...

Обработчик событий
Как создать событие на вставку флешки(или другого устройства)в usb?

11
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
17.08.2015, 20:08 2
Цитата Сообщение от shevlyakov_93 Посмотреть сообщение
игрок подпрыгнул или упал
Он где это делает (прыгает, падает и т.п.), на Луне ?
0
0 / 0 / 0
Регистрация: 16.10.2014
Сообщений: 9
17.08.2015, 21:58  [ТС] 3
Да, на луне и на земле, и на других планетах тоже... В общем, прыг-прыг...

Суть в том что есть некое значение, изначально равное "нулю", но оно может измениться - прибавиться или убавиться, в минус. Например, так:
Значение изменилось, прибавилось = 100
Изначальное "нейтральное" значение = 0
Значение изменилось, убавилось = -100
Мне нужно сделать обработчик или что-то подобное, с помощью чего можно будет определить что число изменилось на столько-то и вернулось в исходное состояние.
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
17.08.2015, 22:08 4
Цитата Сообщение от shevlyakov_93 Посмотреть сообщение
Суть в том что
Суть в том что гравитация разная - на луне и на земле, и на других планетах тоже)
Поэтому положение одного и того же тела в момент "прыг-прыг" при разных гравитационных воздействиях будет тоже разное..

Или "игровой персонаж" у тебя, будучи неподвластным законам физики, делает "дрыг-дрыг" - мгновенно перемещается в пространстве из одной точки в другую ?
0
0 / 0 / 0
Регистрация: 16.10.2014
Сообщений: 9
17.08.2015, 22:24  [ТС] 5
Эм... Честно говоря, не могу точно сказать, но в целом вы правы, перемещение идет от одной к другой точке. В общем, скажем иначе...

Как мне определить что нулевое значение изменилось на энное и опять стало нулевым?
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
17.08.2015, 22:33 6
Решение задачи сводится к нахождению локального экстремума дискретной функции.
1
0 / 0 / 0
Регистрация: 16.10.2014
Сообщений: 9
17.08.2015, 22:35  [ТС] 7
Хорошо и на том спасибо!
0
mss
17.08.2015, 22:51
  #8

Не по теме:

Вот когда пригодились бы как нельзя больше прогулянные школьные уроки алгебры и начал анализа ?)

0
northener
18.08.2015, 01:08
  #9

Не по теме:

Цитата Сообщение от mss Посмотреть сообщение
и начал анализа
А что это такое? Анализ какой-то. :)

0
mss
18.08.2015, 09:38
  #10

Не по теме:

Цитата Сообщение от northener Посмотреть сообщение
А что это такое?
Ну это типа ликбез для учащихся старших классов)

0
0 / 0 / 0
Регистрация: 16.10.2014
Сообщений: 9
18.08.2015, 17:37  [ТС] 11
Ладно, а еще вопрос:
- Как узнать что число изменилось, а потом вновь стало на исходное состояние? Ну, оно было "нулем", а потом увеличилось и начало умен6ьшаться и вновь стало нулем. Как это отловить????
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
18.08.2015, 20:14 12
Цитата Сообщение от shevlyakov_93 Посмотреть сообщение
Как это отловить?
Сравнить значение i-й выборки в i-1-й выборкой
0
18.08.2015, 20:14
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.08.2015, 20:14
Помогаю со студенческими работами здесь

Обработчик событий PlaySound
Мир вам и привет! В обработчике клик в button1 я написал вот что читает аудио из ресурса ...

TListView обработчик событий
Здраствуйте есть компонент TListView с двумя колонками и энным количеством строк, а проблема в...

Обработчик событий для Enter
а где прописывать этот код в ТForm или где???? В обработчике событий OnKeyPress: procedure...

Обработчик событий для динамических кнопок
Всем доброго времени суток. Суть вопроса такая: Необходимо сделать настраиваемую систему АРМ. То...

Обработчик событий для нескольких компонентов
В моей программе есть несколько компонентов TEdit, а так же StringGrid. Суть в том, чтобы...

Напишите обработчик событий для указанных действий
На форме 1 установлены компоненты listbox1, button1 и 2 компонента checkbox. При нажатии на кнопку...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

Новые блоги и статьи
Какой локальный веб-сервер выбрать
InfoMaster 19.01.2025
В современной веб-разработке локальные веб-серверы играют ключевую роль, предоставляя разработчикам надежную среду для создания, тестирования и отладки веб-приложений без необходимости использования. . .
Почему планшеты и iPad уже не так популярны, как раньше
InfoMaster 19.01.2025
Эра революционных инноваций История планшетных компьютеров началась задолго до того, как эти устройства стали привычными спутниками нашей повседневной жизни. В начале 1990-х годов появились первые. . .
Как самому прошить BIOS ноутбука
InfoMaster 19.01.2025
BIOS (Basic Input/ Output System) представляет собой важнейший компонент любого компьютера или ноутбука, который обеспечивает базовое взаимодействие между аппаратным и программным обеспечением. . .
Какой Linux выбрать для домашнего компьютера
InfoMaster 19.01.2025
Современные реалии выбора операционной системы В современном мире выбор операционной системы для домашнего компьютера становится все более важным решением, которое может существенно повлиять на. . .
Как объединить два словаря одним выражением в Python
InfoMaster 19.01.2025
В мире программирования на Python работа со словарями является неотъемлемой частью разработки. Словари представляют собой мощный инструмент для хранения и обработки данных в формате "ключ-значение". . . .
Как без исключения проверить существование файла в Python
InfoMaster 19.01.2025
При разработке программного обеспечения на Python часто возникает необходимость проверить существование файла перед выполнением операций с ним. Это критически важная задача, которая помогает избежать. . .
Как определить, содержит ли строка подстроку в JavaScript
InfoMaster 19.01.2025
При разработке веб-приложений часто возникает необходимость выполнять различные операции со строками, среди которых особое место занимает поиск подстрок. JavaScript предоставляет несколько встроенных. . .
Что такое метаклассы в Python
InfoMaster 19.01.2025
Метаклассы в Python представляют собой один из самых мощных и одновременно сложных механизмов языка, позволяющий программистам контролировать процесс создания классов. По своей сути, метакласс. . .
Как удалить свойство из объекта JavaScript
InfoMaster 19.01.2025
В современной веб-разработке объекты JavaScript играют фундаментальную роль в организации и структурировании данных. Они представляют собой контейнеры, которые хранят связанные данные и. . .
Какая разница между String и string в C#
InfoMaster 19.01.2025
В языке программирования C# существует интересная особенность: для работы со строками можно использовать как String, так и string. Эта двойственность часто вызывает вопросы у разработчиков, особенно. . .
Как в Git откатить репозиторий к предыдущему коммиту
InfoMaster 19.01.2025
В современной разработке программного обеспечения система контроля версий Git стала неотъемлемой частью рабочего процесса, предоставляя разработчикам мощные инструменты для управления изменениями в. . .
Как работают замыкания (closure) в JavaScript
InfoMaster 19.01.2025
В мире современной веб-разработки замыкания (closures) представляют собой один из фундаментальных концептов языка JavaScript, который часто вызывает затруднения у начинающих разработчиков, но при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru