dimka, действительно, так проще. А не могли бы Вы мне за одно
показать алгоритм перемещения курсора в меню? У меня это выглядит так:
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <iostream.h>
void block(int x, int y, int a, int b, int c)
{
setcolor(c);
int poly[]={x-a/2,y-b/2,x+a/2,y-b/2,x+a/2,y+b/2,x-a/2,y+b/2,x-a/2,y-b/2};
drawpoly(5,poly);
}
void window(int h, int c, int c2)
{
int r=20;
setcolor(c2);
line(h,h+r,h,480-h-r);
line(640-h,h+r,640-h,480-h-r);
line(h+r,h,640-h-r,h);
line(h+r,480-h,640-h-r,480-h);
arc(h+r,h+r,90,180,r);
arc(640-h-r,h+r,0,90,r);
arc(h+r,480-h-r,180,270,r);
arc(640-h-r,480-h-r,-90,0,r);
setfillstyle(1,c);
floodfill(320,240,c2);
}
void kursor(int x, int y, int a, int b, int c)
{
setcolor(c);
int d=3, k=b/10;
int p1[]={ x-a/2-d,y-b/2+k*d, x-a/2-d,y-b/2-d, x-a/2+k*d,y-b/2-d},
p2[]={ x+a/2-k*d,y-b/2-d, x+a/2+d,y-b/2-d, x+a/2+d,y-b/2+k*d},
p3[]={ x+a/2+d,y+b/2-k*d, x+a/2+d,y+b/2+d, x+a/2-k*d,y+b/2+d},
p4[]={ x-a/2+k*d,y+b/2+d, x-a/2-d,y+b/2+d, x-a/2-d,y+b/2-k*d};
drawpoly(3,p1);
drawpoly(3,p2);
drawpoly(3,p3);
drawpoly(3,p4);
moveto(x-a/2+9*d,y-d);
}
void RGT(int c1, int c2)
{
cleardevice();
int otstup=10;
window(otstup,c2,c1);
setcolor(c1);
moveto(otstup+185,otstup+100);
outtext(" Ѓ«®Є а ббзҐв Ј®аҐЁп в®Ї«Ёў ");
moveto(otstup+510,otstup+440);
outtext("Esc - § ¤");
}
void RNM(int c1, int c2)
{
cleardevice();
int otstup=10;
window(otstup,c2,c1);
setcolor(c1);
moveto(otstup+185,otstup+100);
outtext(" Ѓ«®Є а ббзҐв ЈаҐў ¬Ґв «« ");
moveto(otstup+510,otstup+440);
outtext("Esc - § ¤");
}
void RTB(int c1, int c2)
{
cleardevice();
int otstup=10;
window(otstup,c2,c1);
setcolor(c1);
moveto(otstup+185,otstup+100);
outtext("Ѓ«®Є а ббзҐв ⥯«®ў®Ј® Ў « б ");
moveto(otstup+510,otstup+440);
outtext("Esc - § ¤");
}
void KUP(int c1, int c2)
{
cleardevice();
int otstup=10;
window(otstup,c2,c1);
setcolor(c1);
moveto(otstup+185,otstup+100);
outtext(" Љ« ўЁиЁ гЇа ў«ҐЁп Їа®Ја ¬¬®©: ");
moveto(otstup+510,otstup+440);
outtext("Esc - § ¤");
}
void EXT(int c1, int c2)
{
cleardevice();
int otstup=10;
window(otstup,c2,c1);
setcolor(c1);
moveto(otstup+185,otstup+200);
outtext("„Ґ©бвўЁвҐ«м® е®вЁвҐ ўл©вЁ?!");
moveto(otstup+185,otstup+220);
outtext(" Enter - ¤ ");
moveto(otstup+510,otstup+440);
outtext("Esc - § ¤");
}
void start(int c1, int c2)
{
int otstup=10;
int p[]={0,0};
int y, i=1, d=20;
while(p[1]!=68)
{
go:
if(i==1) y=143;
if(i==2) y=193;
if(i==3) y=293;
if(i==4) y=343;
if(i==5) y=393;
if(i==6) y=443;
window(otstup,c2,c1);
block(318,143,260,d,c1);
block(318,143+50,260,d,c1);
block(318,143+100,260,d,c1);
block(318,143+150,260,d,c1);
block(318,143+200,260,d,c1);
block(318,143+250,260,d,c1);
setcolor(c1);
moveto(otstup+100,otstup+10);
outtext("Ља б®пабЄЁ© ѓ®бг¤ абвўҐл© ’ҐеЁзҐбЄЁ© “ЁўҐабЁвҐв");
moveto(otstup+230,otstup+30);
outtext("Љ 䥤а ⥯«®дЁ§ЁЄЁ");
moveto(otstup+185,otstup+130);
outtext(" Ѓ«®Є а ббзҐв Ј®аҐЁп в®Ї«Ёў ");
moveto(otstup+185,otstup+180);
outtext(" Ѓ«®Є а ббзҐв ЈаҐў ¬Ґв «« ");
moveto(otstup+185,otstup+230);
outtext("Ѓ«®Є а ббзҐв ⥯«®ў®Ј® Ў « б ");
moveto(otstup+185,otstup+280);
outtext(" Љ« ўЁиЁ гЇа ў«ҐЁп Їа®Ја ¬¬®©");
moveto(otstup+185,otstup+330);
outtext(" Ќ з «® ўлЇ®«ҐЁп Їа®Ја ¬¬л");
moveto(otstup+185,otstup+380);
outtext(" ‚л室 Ё§ Їа®Ја ¬¬л!");
moveto(otstup+90,otstup+440);
outtext("Џа®звЁвҐ ўбҐ ЇгЄвл ЇҐаҐ¤ з «®¬ ўлЇ®«ҐЁп Їа®Ја ¬¬л!");
kursor(318,y,260,d,c1);
p[1]=getch(); //Вот соббственно для чего такой странный массив (в один и тот же массив считываются
//коды простых (буквы, цифры) и коды особых клавиш (F1...F12, стрелки))
//если без массива, то программа глючит.
if( (p[1]==72)||(p[1]==80)||(p[1]==13))
{
if(p[1]==72) if(i>1) { i--; kursor(318,y,260,d,c2); y-=50; kursor(318,y,260,d,c1); }
if(p[1]==80) if(i<6) { i++; kursor(318,y,260,d,c2); y+=50; kursor(318,y,260,d,c1); }
if(p[1]==13)
{
if(i==1) RGT(c1,c2);
if(i==2) RNM(c1,c2);
if(i==3) RTB(c1,c2);
if(i==4) KUP(c1,c2);
if(i==5) {p[1]=68; goto end;}
if(i==6) {EXT(c1,c2); p[1]=getch(); if(p[1]==13) exit(0); if(p[1]==27) {p[1]=0; cleardevice(); goto go;} else {;}}
m1:
p[1]=getch();
if(p[1]==27)
{
cleardevice(); goto go;
}
else
goto m1;
}
}
else {;}
end:
}
}
int main(void)
{
int gdriver = VGA, gmode = VGAHI, errorcode;
initgraph(&gdriver, &gmode, "c:\\tc\\bgi");
errorcode = graphresult();
if (errorcode != grOk)
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
}
int col1=3, col2=0;
start(col1,col2);
float *C, *H, *N, *O, *S, *W, *A, *n, *t_air, *t_fuel;
// Отсюда начинается основная часть программы(расчет)
closegraph();
return 0;
}