C ++ Ожидание и проблемы со сном

Хорошо, я работаю над меню, и как оно работает, каждые 3 секунды появляется новая опция, но я пытаюсь сделать так, чтобы в течение этого 3-секундного периода я мог нажать кнопку, чтобы активировать что-то, теперь посмотрите здесь:

dvar(-1, 0, "e \"Prestige and rank settings\"");
Sleep(35);
dvar(-1, 0, "c \"Set prestige one\"");
if (Key_Down(0, 0x02)) {
dvar(-1, 0, "c \"Setting 1st prestige, will be kicked\"");
Sleep(1000);
dvar(-1, 0, "c \"^43\"");
Sleep(1000);
dvar(-1, 0, "c \"2\"");
Sleep(1000);
dvar(-1, 0, "c \"^41\"");
Sleep(1000);
}
Sleep(3000);

Выше проблема заключается в том, что после «Установить престиж один» он переходит к следующему Sleep (3000) и к следующей опции, теперь мне нужно найти способ, чтобы иметь возможность использовать это, если оператор ведьма является кнопкой в ​​течение этих 3 секунд, вместо этого он спит в потоке и делает кнопку непригодной для использования, если вы не нажмете ее до загрузки текста.

Так что, в основном, мне нужно вместо этого перевести поток в режим ожидания и заставить его ждать эти 3 секунды, чтобы я все еще мог использовать это выражение if.

ЭТО ДЛЯ DLL, РАБОТАЮЩЕЙ НА XBOX360

Libs в настоящее время используется

#include "stdafx.h"#include < stdio.h >
#include <string>
#include <iostream>

1

Решение

Я думаю, что вы пытаетесь программировать со следующими умами:

  1. Событие управляемое.
  2. Многопотоковый. используя службу событий системного таймера.
  3. Государственный автомат на основе.

Псевдокод выглядит так:

int State = IDLE;
dvar(-1, 0, "e \"Prestige and rank settings\"");
Sleep(35);
dvar(-1, 0, "c \"Set prestige one\"");

while (1)
{
switch (SomeEvent)
{
case ON_Key_down:
if (Key == 0x02)
{
if (State == IDLE || State == KEY_PRESSED_SET1stPRESTIGE_Finish)
{
State = KEY_PRESSED_SET1stPRESTIGE_1stSTEP;
dvar(-1, 0, "c \"Setting 1st prestige, will be kicked\"");

Timer_Event_AfterMS(1000);   // make request event after 1sec to system alarm service
}
else
{
// ignore do something
}
}
break;
case ON_Timer_SomeSec:
if (State == KEY_PRESSED_SET1stPRESTIGE_1stSTEP)
{
dvar(-1, 0, "c \"^43\"");
State = KEY_PRESSED_SET1stPRESTIGE_2ndSTEP;
Timer_Event_AfterMS(1000);   // make request event after 1sec to system alarm service
}
else if (State == KEY_PRESSED_SET1stPRESTIGE_2ndSTEP)
{
dvar(-1, 0, "c \"2\"");
State = KEY_PRESSED_SET1stPRESTIGE_3rdSTEP;
Timer_Event_AfterMS(1000);   // make request event after 1sec to system alarm service
}
else if (State == KEY_PRESSED_SET1stPRESTIGE_3rdSTEP)
{
dvar(-1, 0, "c \"^41\"");
State = KEY_PRESSED_SET1stPRESTIGE_4rdSTEP;
Timer_Event_AfterMS(1000);   // make request event after 1sec to system alarm service
}
else if (State == KEY_PRESSED_SET1stPRESTIGE_4rdSTEP)
{
State = KEY_PRESSED_SET1stPRESTIGE_Need3SEC;
Timer_Event_AfterMS(3000);   // make request event after 3sec to system alarm service
}
else if (State == KEY_PRESSED_SET1stPRESTIGE_Need3SEC)
{
State == KEY_PRESSED_SET1stPRESTIGE_Finish;
}
break;
default:
break;
}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]