Среда, 25 Декабря 2024, 08:22

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Как правильно присвоить значение переменной
StarLLaytheДата: Пятница, 28 Июня 2019, 20:40 | Сообщение # 1
был не раз
Сейчас нет на сайте
Помогите, пожалуйста, разобраться. У меня есть переменная, скажем, n. Она может принимать значения от 1 до 8, значение зависит от нажатых клавиш, например, WASD, то есть, W, A, S, и D это одни 4 значения, а смежные сочетания типа WA и WD это другие 4 (как в движении в 8 возможных сторон, но мне эта заморочка не для движения).

Мне нужно, чтобы когда я отпускал клавиши, запоминалось значение, например, если я держал S и D, то когда я отпустил их обе (естественно не факт, что одновременно, у меня запомнилось бы значение (одно из этих 8 возможных) для SD), но при этом если я отпущу сначала D и буду держать только S то установилось значение, которое устанавливалось бы для S. А если я держу ADS, то выходит что я держу только S (потому что обе нажатые в данном случае - всё равно что ни одна из них не нажата).

Если я держал S и D, то текущее значение пока я их держу и уже потом будет равно соответствующему (сначала значение SD а потому той, которая останется нажатой), то есть если я отпущу одну из смежных то значение измениться, а когда вторую отпущу установится последнее соответствующее (опять таки как при движении в 8 возможных сторон)

Значения могут идти против часовой стрелки, начиная с D, или D, DW, W, WA и так далее (как image_angle от 0 до 360 (или снова 0))


Сообщение отредактировал StarLLaythe - Пятница, 28 Июня 2019, 20:57
LunarPixelДата: Суббота, 29 Июня 2019, 18:15 | Сообщение # 2
старожил
Сейчас нет на сайте
Можно как-то так попробовать в step. Не забудь создать событие alarm 0 с кодом в котором просто комментарий (//). Alarm нужен, чтобы была небольшая задержка при отпускании двух клавиш, иначе значение будет меняться.

Код
if (alarm[0] == -1)
{
switch (keyboard_check(ord("A")) + 2*keyboard_check(ord("S")))
{
    case 1:
        n = 1;
        break;        
    case 2:
        n = 2;
        break;
    case 3:
        n = 5; alarm[0] = room_speed/10; // room_speed/10 - время задержки
        break;
}

switch (keyboard_check(ord("S")) + 2*keyboard_check(ord("D")))
{
    case 2:
        n = 3;
        break;
    case 3:
        n = 6; alarm[0] = room_speed/10;
        break;
}

switch (keyboard_check(ord("D")) + 2*keyboard_check(ord("W")))
{
    case 2:
        n = 4;
        break;
    case 3:
        n = 7; alarm[0] = room_speed/10;
        break;
}

switch (keyboard_check(ord("W")) + 2*keyboard_check(ord("A")))
{
    case 3:
        n = 8; alarm[0] = room_speed/10;
        break;
}
}


StarLLaytheДата: Воскресенье, 30 Июня 2019, 12:41 | Сообщение # 3
был не раз
Сейчас нет на сайте
Вообще я находил одну такую штуку со свитчем и, в тоже время, думал о наличии задержки, но я не такой скилованный и не оч знал как свитч в принципе может работать в моём случае помимо простых.

Именно со сменой значений и была проблема, можно было ухитриться но это было не удобно, ну постоянно успевать отпускать обе смежные клавиши.

В общем я был не уверен, но теперь всё круто, управляться значение стало значительно мягче, спасибо за подробное объяснение!
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг