Тема: Навігація стрілками в консолі
Давно цікавився як організувати перехід між пунктами меню за допомогою стрілок, і нещодавно наткнувся на такий код в інтернеті:
#include "pch.h"
#include <stdio.h>
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <Windows.h>
#define BUFFERSIZE 72
int getPosition(void) {
static int result = 0;
static int count = 0;
if (count) {
int ch = _getch();
if (ch == 0 || ch == 0xE0)
ch = _getch() << 8;
switch (ch) {
case 0x5000:
if (result < 8 && result >= 0) result++;
break;
case 0x4800:
if (result > 0 && result <= 8) result--;
break;
case 0x0D: {//додав кейс для натиску ентера
break;
}
default:
puts("Incorrect input!");
break;
}
}
count++;
return result;
}
int main() {
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
char string[BUFFERSIZE][BUFFERSIZE] = {
" 1. Сортувати дані.",
" 2. Додати нові записи до бази даних.",
" 3. Редагувати існуючий запис.",
" 4. Видалити існуючий запис.",
" 5. Переглянути вміст бінарного файлу.",
" 6. Операції згідно з варіантом.",
" 7. Пошук товарів.",
" 8. Перезапис файлу з .txt в .bin.",
" 9. Завершити роботу."
};
char pointStart[BUFFERSIZE] = ">>";
char pointFinish[BUFFERSIZE] = " ";
unsigned row = 0, col = 0, i = 100;
int choice = 0, c;
do {
choice = getPosition();
system("cls");
for (row = 0; row < 9; row++)
printf("%s %s\n",
row == choice ? pointStart : pointFinish,
string[row]);
} while (i--);
return 0;
}
Спробував реалізувати його в курсовій роботі, але він досить складний і максимум, що я зміг з ним зробити це застосувати його
тільки до головного меню програми. В інеті мало інфи на цю тему та й в коледжі нема кого спитати, тому цікаво чи знає хтось простіші варіанти написання цього алгоритму, якщо цей не є найкращим?