Вниз  AMPASIDE / ANPASIDE — IDE для MIDletPascal
- 19.10.2026 / 01:14
GOAR
  Пользователь

GOAR 
Сейчас: Offline
а так Touch и Sensor , конфликтов не будет, то меня только управление игроком пока волнует, остальное пока так оставить хотелось бы
- 19.10.2026 / 01:27
GOAR
  Пользователь

GOAR 
Сейчас: Offline
Helltar, а исходники в лс
- 19.10.2026 / 04:12
Helltar
  Пользователь

Helltar 
Сейчас: Offline
Цитата GOAR:
Если не сложно кинь мне исходники, пересобраного проэкта, нашел баг в твоей пересборке, блоки ламаются только кнопкой

исходников на паскале нет: это правки байткода уже готового apk

по блокам: это не пересборка. сравнил оригинал и пересборку в одном и том же мире - если держать палец на блоке, ломается в обоих одинаково

ломать на ходу мешает условие в твоем senhandler: тап по миру обрабатывается только когда k_tap = 0, то есть ни одна кнопка не нажата. в оригинале палец один, держать ходьбу и одновременно тапать по блоку там просто нельзя. теперь второй палец есть, но пока первый держит стрелку, мир тапы игнорирует и остается только кнопка с мечом. в своем коде убери это условие для тапа по миру и бери палец, который не на кнопке (world_finger из поста выше)
- 19.10.2026 / 04:14
Helltar
  Пользователь

Helltar 
Сейчас: Offline
Цитата GOAR:
а так Touch и Sensor , конфликтов не будет, то меня только управление игроком пока волнует, остальное пока так оставить хотелось бы

вместе будут конфликтовать: Sensor.Init и Touch.Init оба подменяют экран, и касания получает только тот, кого вызвали последним

но и не надо: в Touch есть все функции Sensor с теми же именами. замени Sensor на Touch во всем проекте, остальное будет работать как раньше, а для игрока добавь touch_area
- 19.10.2026 / 09:41
GOAR
  Пользователь

GOAR 
Сейчас: Offline
Helltar, сделал но почему-то сломалась логика инветаря.
pointer_pressed_x,y выкидуют курсор за приделы инветаря, и не видет что брать.

Хз , в чем дело, хотя в перезборке что ты прислал все работало
Примерный код:
ix,iy положение по центру экран;
s - размер одной клетки
  if tap(ix,iy,7*s,s) then
begin
px:=(pointer_pressed_x-ix) div s;
py:=(pointer_pressed_y-iy) div s;
if (px>=0) and (px<=6) then
invslot:=px+py;
end;

Изменено GOAR (19.10 / 09:42) (всего 2 раза)
- 19.10.2026 / 14:23
Helltar
  Пользователь

Helltar 
Сейчас: Offline
GOAR, pointer_pressed_x/y в touch следят за первым пальцем. если первым держишь ходьбу, а вторым жмешь на инвентарь, tap видит второй палец, а координаты берутся у первого - отсюда и курсор за пределами. брать нужно палец, который на инвентаре

  1. for i := 0 to 9 do
  2.   if (touch_down(i) = 1) and (touch_x(i) >= ix) and (touch_x(i) < ix + 7 * s)
  3.     and (touch_y(i) >= iy) and (touch_y(i) < iy + s) then
  4.   begin
  5.     px := (touch_x(i) - ix) div s;
  6.     invslot := px;
  7.   end;

- 20.10.2026 / 15:07
GOAR
  Пользователь

GOAR 
Сейчас: Offline
Да, розобрался, пришлось пол игры переписать из за смены управления но то такое, все равно уже пишу чистый движок. :gg:

Вопрос, а реально воспроизвести два звука? То есть что играла фоновая музыка и звуки геймплея не обрывали ее?

Так как звук открывает openplayer, все что смог , это накодить банальный переключатель звуков. :)

Если это возможно, но в ide это не помешало б :)

За мульти тач благодарен :)
- 20.10.2026 / 16:40
Helltar
  Пользователь

Helltar 
Сейчас: Offline
GOAR, в ANPASIDE 2.6.0 добавил библиотеку Sound: 8 каналов, которые играют одновременно. музыку на один канал, эффекты на другие, и каждый канал заменяет только свой звук:

  1. uses Sound;
  2.  
  3. var ok: integer;
  4. ...
  5. ok := sound_open(0, '/music.mid', 'audio/midi');
  6. ok := sound_open(1, '/hit.wav', 'audio/x-wav');
  7. sound_loop(0, -1); // музыка по кругу
  8. sound_volume(0, 60); // тише эффектов
  9. ok := sound_play(0);
  10. ...
  11. ok := sound_play(1); // эффект, музыка не прерывается

sound_play запускает звук с начала, даже если он еще играет, так что частые эффекты не накладываются друг на друга. для паузы в игре есть sound_pause/sound_resume, еще sound_stop и sound_playing. форматы: midi, wav, mp3

все функции тут: https://helltar.com/midletpascal/#bundled-sound

OpenPlayer можно оставить, он с Sound не конфликтует

готовый пример - музика на фоне + кнопки с эффектами:

- apk https://helltar.com/midletpascal/examples/sounddemo.apk
- исходники https://helltar.com/midletpascal/examples/sounddemo.zip
- 20.10.2026 / 16:51
GOAR
  Пользователь

GOAR 
Сейчас: Offline
Helltar, ок, буду тестить :)
- 20.10.2026 / 16:54
Helltar
  Пользователь

Helltar 
Сейчас: Offline
GOAR, еще момент: в 2.6.0 мидлет рисует на весь экран, и под камерой тоже (раньше там была черная полоса). из-за этого на телефонах со скругленными углами то, что стоит вплотную к краю, обрезается. у тебя это кнопка Menu справа сверху и версия слева снизу

для этого добавил библиотеку Screen: screen_inset_left/top/right/bottom возвращают, на сколько пикселей каждый край закрыт камерой или скруглением. мир можно рисовать на весь экран, а кнопки отодвигать на эти отступы:

  1. uses Screen;
  2. ...
  3. // Menu справа сверху
  4. DrawImage(key[5], sw - GetImageWidth(key[5]) - 1 - screen_inset_right, 1 + screen_inset_top);
  5. // версия слева снизу
  6. text('v: 1.2', 5 + screen_inset_left, sh - 25 - screen_inset_bottom);

область нажатия для Menu сдвинь так же, иначе тап будет мимо кнопки. проверил на твоем apk (пропатчил байткод): кнопка и версия встают на место, Menu нажимается

для примера, на Pixel 9 горизонтально это 173 со стороны камеры и 39 с остальных сторон. значения меняются при повороте экрана, так что лучше читать их каждый кадр. в J2ME Loader и на старых телефонах все функции возвращают 0, так что код можно оставить один

подробнее: https://helltar.com/midletpascal/#bundled-screen

было (твой apk): слева черная полоса под камеру, а Menu справа все равно режет угол: https://helltar.com/midletpascal/examples/sandcraft-original.png

стало (2.6.0 + Screen): игра на весь экран, Menu отодвинута от угла: https://helltar.com/midletpascal/examples/sandcraft-screen.png
Наверх  Всего сообщений: 633
Фильтровать сообщения
Поиск по теме
Файлы топика (28)