void func(); // функция которую нужно вызвать при нажатии клавиши во время выполнения цикла
set_cur_pos(int,int); // устанавливает позицию курсора в нужную координату
void main()
{
for(int i=0; i<N; i++)
{
system("cls");
set_cur_pos(i,5);
printf("@");
}
}
Прерывания в Си++
Каким образом можно вызвать функцию из цикла во время его выполнения нажатием клавиши? Я слышал что это делается с помощью прерываний.
Цитата: fen1xxx
Каким образом можно вызвать функцию из цикла во время его выполнения нажатием клавиши? Я слышал что это делается с помощью прерываний.
Если не сложно, напишите пожалуйста пример.
Если не сложно, напишите пожалуйста пример.
А для какой платформы?
Вот примерно так для винды:
Код:
#include <windows.h>
DWORD numOfEvents=0;
INPUT_RECORD evInp;
void func(); // функция которую нужно вызвать при нажатии клавиши во время выполнения цикла
set_cur_pos(int,int); // устанавливает позицию курсора в нужную координату
void main()
{
for(int i=0; i<N; i++)
{
system("cls");
set_cur_pos(i,5);
printf("@");
GetNumberOfConsoleInputEvents(GetStdHandle(STD_INPUT_HANDLE), &numOfEvents);
if(numOfEvents>0)
{
PeekConsoleInput(GetStdHandle(STD_INPUT_HANDLE),
&evInp, 1, &numOfEvents);
if(evInp.EventType==KEY_EVENT) {func();}
else {ReadConsoleInput(GetStdHandle(STD_INPUT_HANDLE),
&evInp, 1, &numOfEvents)}
}
}
}
DWORD numOfEvents=0;
INPUT_RECORD evInp;
void func(); // функция которую нужно вызвать при нажатии клавиши во время выполнения цикла
set_cur_pos(int,int); // устанавливает позицию курсора в нужную координату
void main()
{
for(int i=0; i<N; i++)
{
system("cls");
set_cur_pos(i,5);
printf("@");
GetNumberOfConsoleInputEvents(GetStdHandle(STD_INPUT_HANDLE), &numOfEvents);
if(numOfEvents>0)
{
PeekConsoleInput(GetStdHandle(STD_INPUT_HANDLE),
&evInp, 1, &numOfEvents);
if(evInp.EventType==KEY_EVENT) {func();}
else {ReadConsoleInput(GetStdHandle(STD_INPUT_HANDLE),
&evInp, 1, &numOfEvents)}
}
}
}
Прерывания в чистом виде не выйдет сделать. Можно только прерывание по Ctrl+C сделать.
я хотел текстовую змейку написать. для этого нужно стрелочками направление движения изменять. Это возможно?
Цитата: fen1xxx
я хотел текстовую змейку написать. для этого нужно стрелочками направление движения изменять. Это возможно?
В любом случае возможно. Под какую ОС пишешь это дело?
Под Windows.