1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code]. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Люди-человеки, помогите будной студентки разобраться в проге. Дали лабу с объектами, а толком ничего не объяснили.
Вот задание: 1) разработать интерфейсное меню, состоящее из кнопок вида ромба и квадрата 2)кнопки должны размещаться на панели и иметь объемный вид 3) текущей является кнопка серого цвета, неактивная - зеленая 4) перемещение по кнопкам производиться с помощью клавиш навигации, выбор кнопки-энтер 5) по нажатию каждой кнопки создается эффект вогнутости и выполняется действия: на дополнительную панель внизу экрана вывести задание на лабу; развернуть панель и вернуть ее в исходное состояние; увеличить объемность панели...
А вот то, что я намучала:
uses crt,graph; type knopka=object x0,y0,v,h:integer; ckn,ckon:integer; t:string[13]; activ:boolean; procedure kvt_up; procedure kvt_down; procedure rmb_up; procedure rmb_down; procedure init(x1,y1,v1,h1:integer;ckn1,ckon1:integer); end; panel=object xp,yp,vp,hp:integer; czp:integer; procedure draw; procedure init(x,y,vp1,hp1:integer;colp:integer); end; procedure knopka.init; begin x0:=x1; y0:=y1; h:=h1; v:=v1; ckn:=ckn1; ckon:=ckon1; end; procedure knopka.kvt_down; begin setcolor(black); bar(x0-1,y0-1,x0+h,y0+v); setfillstyle(1,black); floodfill(x0,y0,black); setcolor(white); bar(x0+1,y0+1,x0+h,y0+v); setfillstyle(1,white); floodfill(x0,y0,white); setcolor(darkgray); bar(x0,y0,x0+h,y0+v); setfillstyle(5,darkgray); floodfill(x0,y0,darkgray); setcolor(red); outtextxy(x0-5,y0+5+2,t); end; procedure knopka.kvt_up; begin setcolor(15); bar(x0-1,y0-1,x0+h,y0+v); setfillstyle(1,15); floodfill(x0,y0,15); setcolor(0); bar(x0+2,y0+2,x0+h,y0+v); setfillstyle(1,0); floodfill(x0,y0,0); setcolor(2); bar(x0,y0,x0+h,y0+v); setfillstyle(5,2); floodfill(x0,y0,2); setcolor(red); outtextxy(x0-5,y0+5*2,t); end; procedure rmb_up; var poly: array[1..4] of pointtype; begin setcolor(8); poly[1].x:=x0+1; poly[1].y:=y0; poly[2].x:=x0+round(h/2)+1; poly[2].y:=y0+round(v/2); poly[3].x:=x0+1; poly[3].y:=y0+v; poly[4].x:=x0-round(h/2)+1; poly[4].y:=y0+round(v/2); fillpoly(4,poly); setfillstyle(1,15); floodfill(x0+3),y0+round(v/2),15); setcolor(15); poly[1].x:=x0-1; poly[1].y:=y0; poly[2].x:=x0+round(h/2)-1; poly[2].y:=y0+round(v/2); poly[3].x:=x0-1; poly[3].y:=y0+v; poly[4].x:=x0-round(h/2)-1; poly[4].y:=y0+round(v/2); fillpoly(4,polly); setfillstyle(1,8); floodfill(x0,y0+round(v/2),8); setcolor(4); outtextxy(x0,y0+v+2,t); setcolor(2); poly[1].x:=x0; poly[1].y:=y0; poly[2].x:=x0+round(h/2);; poly[2].y:=y0+round(v/2);; poly[3].x:=x0; poly[3].y:=y0+v; poly[4].x:=x0-round(h/2); poly[4].y:=y0-round(v/2); fillpoly(4,poly); setfillstyle(1,2); floodfill(x0),y0+round(v/2),ckon); setcolor(4); outtextxy(x0,y0+v+2,t); end; procedure rmb_down; var poly: array[1..4] of pointtype; begin setcolor(15); poly[1].x:=x0+1; poly[1].y:=y0; poly[2].x:=x0+round(h/2)+1; poly[2].y:=y0+round(v/2); poly[3].x:=x0+1; poly[3].y:=y0+v; poly[4].x:=x0-round(h/2)+1; poly[4].y:=y0+round(v/2); fillpoly(4,poly); setfillstyle(1,15); floodfill(x0+3),y0+round(v/2),15); setcolor(8); poly[1].x:=x0-1; poly[1].y:=y0; poly[2].x:=x0+round(h/2)-1; poly[2].y:=y0+round(v/2); poly[3].x:=x0-1; poly[3].y:=y0+v; poly[4].x:=x0-round(h/2)-1; poly[4].y:=y0+round(v/2); fillpoly(4,polly); setfillstyle(1,8); floodfill(x0,y0+round(v/2),8); setcolor(4); outtextxy(x0,y0+v+2,t); setcolor(7); poly[1].x:=x0; poly[1].y:=y0; poly[2].x:=x0+round(h/2);; poly[2].y:=y0+round(v/2);; poly[3].x:=x0; poly[3].y:=y0+v; poly[4].x:=x0-round(h/2); poly[4].y:=y0-round(v/2); fillpoly(4,poly); setfillstyle(1,ckn); floodfill(x0),y0+round(v/2),7); setcolor(4); outtextxy(x0,y0+v+2,t); end; procedure panel.init; begin xp:=x; yp:=y; vp:=vp1; hp:=hp1; czp:=colp; end; procedure panel.draw; begin setcolor(15); rectangle(xp-1,yp-1,xp-1+wp,yp-1+hp); setfillstyle(1,15); floodfill(xp+5,yp+5,15); setcolor(darkgray); rectangle(xp+2,yp+2,xp+2+vp,yp+2+hp); setfillstyle(1,darkgray); floodfill(xp+5,yp+5,darkgray); setcolor(czp); rectangle(xp,yp,xp+wp,yp+hp); setfillstyle(1,czp); floodfill(xp+5,yp+5,czp); end; procedure pan_dop; var text1,text2,text3:string; begin setcolor(6); rectangle(220,140,420,340); setfillstyle(1,15); floodfill(300,200,6); text1:='develop program '; text2:='using '; text3:='object programming'; outtextxy(235,145,text1); outtextxy(235,165,text2); outtextxy(235,185,text3); end; var p:panel; k:array[1..4] of knopka; a:char; i,n,gd,gm:integer; begin gd:=detect; initgraph(gd,gm,'d:\bp\bgi'); setbkcolor(9); cleardevice; p.init(100,10,440,50,5); p.draw; for i:=1 to 4 do k[i].init(i*110+40,20,20,30,7,4); k[1].t:='zadanie'; k[2].t:='razvernut''; k[3].t:='svernut''; k[4].t:='ob'emnost''; k[1].activ:=true;n:=1; repeat for i:=1 to 4 do begin if n=i then k[i].activ:=true else k[i].activ:=false; if k[i].activ then k[i].ckon:=4 else k[i].ckon:=7; if (i mod 2)=0 then k[i].romb else k[i].kvt; end; a:=readkey; case a of #77:if n=4 then n:=1 else n:=n+1; #75:if n=1 then n:=4 else n:=n-1; #13:case n of 1:begin k[n].tr_d;delay(60000); cleardevice; p.init(100,10,440,50,5); p.draw; pan_dop; for i:=1 to 4 do k[i].init(i*110+40,20,20,30,7,4); end; 2:begin k[n].romb_d; delay(60000); cleardevice; p.init(50,10,540,200,5); p.draw; for i:=1 to 4 do k[i].init(i*110+40,80,30,50,7,4); end; 3:begin k[n].draw_down;delay(5000); cleardevice; p.init(150,20,300,60,cyan);p.draw; for i:=1 to 4 do k[i].init(i*80+100,50,20); end; 4:begin k[n].romb_d; delay(60000); cleardevice; p.init(50,10,540,200,5); p.draw; for i:=1 to 4 do k[i].init(i*110+40,80,30,50,7,4); end; end; end; until a=#27; closegraph; end.