Вход на сайт
Воспоминания, Turbo C 01.06.2024
1595 просмотров
Перейти к просмотру всей ветки
uscheswoi_82 коренной житель
в ответ uscheswoi_82 06.06.24 00:07
Улучшил только-что код меню, незаметил while(!kbhit()), а надо while(1):
#include <stdio.h> #include <conio.h> #include <bios.h> #define LEFT 19200 #define RIGHT 19712 #define ESC 283 #define ENTER 7181 #define MAX_MENUS 4 char *menus[MAX_MENUS] = {"File", "Edit", "Options", "Help"}; char *menus_help[MAX_MENUS] = {"Create a new file, open an exist file, or save into a file", "Copy, paste, cut, etc.", "Options of program", "Help"}; int menus_pos[MAX_MENUS] = {1, 10, 20, 30}; int main(void) { int key = 0, sel = 0, j = 0; textattr(BLACK*0x10+LIGHTGRAY); clrscr(); while(1) { gotoxy(1, 1); textattr(LIGHTGRAY*0x10+BLACK); for(j=0; j<80; j++) cprintf(" "); gotoxy(1, 24); textattr(LIGHTGRAY*0x10+BLACK); for(j=0; j<80; j++) cprintf(" "); gotoxy(1, 1); for(j=0; j<MAX_MENUS; j++) { gotoxy(menus_pos[j], 1); cprintf(" %s ", menus[j]); } gotoxy(menus_pos[sel], 1); textattr(GREEN*0x10+YELLOW); cprintf(" %s ", menus[sel]); gotoxy(1, 24); textattr(LIGHTGRAY*0x10+BLACK); cprintf(" %s ", menus_help[sel]); gotoxy(1, 1); key = bioskey(0); switch(key) { case ENTER: gotoxy(1, 2); textattr(RED*0x10+YELLOW); cprintf("Selected menu: %s ", menus[sel]); break; case ESC: textattr(BLACK*0x10+LIGHTGRAY); clrscr(); return 0; break; case LEFT: if(sel > 0) sel--; else sel = MAX_MENUS-1; break; case RIGHT: if(sel < MAX_MENUS-1) sel++; else sel = 0; break; } } return 0; }
А вот и результат! Вуаля!:
Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
Дневник тяжелобольного инвалида