Консультация № 42502
09.05.2006, 10:58
0.00 руб.
0 1 1
Здравствуйте Эксперты!
В моей курсовой по информатике (Задача под Borland C 3.1)
к задаче надо сделать интерфейс с помощью символов псевдографики.
Я не понимаю как сделать чтобы при нажатии клавиши enter определялась координата (строки) и в зависимости от координаты выплнялась опр ф-я?И еще, Меню надо рисовать до бесконечного цикла DO ... while (выход из этого цикла осущ при нажатии на стрелки)?

Приложение:
#include <string.h>#include <stdlib.h>#include <conio.h>#include <stdio.h> main(){ int i,dx,dy,left,right,top,bot,n; left=30; top=7; right=50; bot=16; dx=right-left+1; dy=bot-top+1; int x=wherex(); int y=wherey(); clrscr(); window(left,top,right,bot); _setcursortype (0); textbackground(WHITE); textcolor(BLUE); putchar(201); for(i=2;i<dx;i++) { gotoxy(0,i); putchar(205); } putchar(187); gotoxy(2,2); cprintf("ZAGRUZKA IZ FAILA"); gotoxy(2,9); cprintf("SOHRANENIE"); for(i=2;i<dy;i++) { gotoxy(1,i); putchar(186); gotoxy(21,i); putchar(186); } for (i=2;i<dx;i++) { gotoxy(i,10); putchar(205); } putchar(188); gotoxy(1,10); putchar(200); getch();}

Обсуждение

Неизвестный
09.05.2006, 11:09
общий
это ответ
Здравствуйте, W4rmonger!
Не хочешь мыло давать, вот в приложении смотри. Правда кодировка изменена, придется самостоятельно тебе символы всевдографики переопределить.


Приложение:
#ifndef mymenu#define mymenu#include <conio.h>#include <bios.h>const char head[17] = " Меню";inline void textbkcolor(int tclr,int bkclr) { textbackground(bkclr); textcolor(tclr);}void graphcap(int cap) { switch(cap) { case 1:cprintf("г=============================┐");return; case 2:cprintf("│=============================│");return; case 3:cprintf("L=============================-");return; }}int Menugui(const char *menu[],const ITEMS,const char *header = head, const BKCLR = 0, const TXTCLR = 7, const shifth = 24,int shiftv = 2) { register i, item = 1; int temp = shiftv; union keys { int i; char ch[2]; } key; textbkcolor(TXTCLR, BKCLR); clrscr(); do { shiftv = temp; gotoxy(shifth, shiftv++); graphcap(1); gotoxy(shifth, shiftv++); cprintf("│%-29s│", header); gotoxy(shifth, shiftv++); graphcap(2); if (key.ch[1] == 72) item--; else if (key.ch[1] == 80) item++; else if (key.ch[0] > 48 && key.ch[0] <= ITEMS+48) item = key.ch[0] - 48; if (item <= 0) item = ITEMS; else if (item > ITEMS) item = 1; for (i = 0; i < ITEMS; i++) { gotoxy(shifth, shiftv++); cprintf("│"); if (item == i + 1) textbkcolor(BKCLR, TXTCLR); cprintf("%1d.%-27s", i+1, menu[i]); textbkcolor(TXTCLR, BKCLR); cprintf("│"); } gotoxy(shifth, i+5); textbkcolor(TXTCLR, BKCLR); graphcap(2); gotoxy(shifth, i+6); cprintf("│ Ваш выбор:%-18d│", item); gotoxy(shifth, i+7); graphcap(3); gotoxy(shifth+12, i+6); key.i = bioskey(0); } while (key.ch[0] != 13); gotoxy(1, i + 8); return item;}#endif
Форма ответа