Posted: Fri Jun 02, 2006 10:04 am Post subject: کمک
با عرض سلام و خسته نباشید
من در دوره کار دانی نرم افزار کامپیوتر در حال تحصیل هستم.
در درس پاسکال پروژه ای را نوشتم که با مشکل بزرگی برخورد کردم.
من در این پروژه در محیط گرافیکی یک ساعت آنالوگ طراحی و پس از اجراساعت جاری سیستم را گرفته و عقربه های ساعت را بر اساس تایم دریافتی حرکت میدهم
ولی متاسفانه در حین حرکت عقربه ی قبلی پاک نمی شود .
لطفا مرا راهنمایی کنید
با تشکر
امید از سمنان
این هم کد بر نامه :
PROGRAM P1;
USES CRT,DOS,GRAPH;
{====================<<INIT>>====================}
PROCEDURE INIT;
VAR GD,GM:INTEGER;
BEGIN
GD:=DETECT;
INITGRAPH(GD,GM,'');
IF GRAPHRESULT<>GROK THEN
HALT;
END;
{====================<<CLOCK>>====================}
PROCEDURE CLOCK;
VAR H,M,S,D,I,J:WORD;
X,Y,Z:REAL;
C:CHAR;
BEGIN
SETFILLSTYLE(2,9);
FOR I:=1 TO 50 DO
BEGIN
BAR(0,0,639,I*2);
BAR(0,60,639,60+I*2);
BAR(0,120,639,120+I*2);
BAR(0,180,639,180+I*2);
BAR(0,240,639,240+I*2);
BAR(0,300,639,300+I*2);
BAR(0,360,639,360+I*2);
BAR(0,240,639,240+I*2);
BAR(0,480,639,480+I*2);
DELAY(30);
END;
SETCOLOR(10);
SETLINESTYLE(0,0,3);
RECTANGLE(10,10,630,470);
SOUND(300);
DELAY(100);
NOSOUND;
SETFILLSTYLE(9,1);
FILLELLIPSE(320,240,220,220);
SETCOLOR(15);
SETLINESTYLE(0,0,0);
CIRCLE(320,240,225);
SETCOLOR(14);
SETLINESTYLE(0,0,2);
CIRCLE(320,240,220);
SETTEXTSTYLE(7,0,4);
SETCOLOR(0);
OUTTEXTXY(277,92,'OMID');
SETCOLOR(11);
OUTTEXTXY(275,90,'OMID');
SETTEXTSTYLE(1,0,5);
SETCOLOR(0);
OUTTEXTXY(296,26,'12');
OUTTEXTXY(506,213,'3');
OUTTEXTXY(316,411,'6');
OUTTEXTXY(116,213,'9');
SETCOLOR(14);
OUTTEXTXY(295,25,'12');
OUTTEXTXY(505,212,'3');
OUTTEXTXY(315,410,'6');
OUTTEXTXY(115,212,'9');
SETCOLOR(4);
SETFILLSTYLE(1,4);
FILLELLIPSE(320,240,9,9);
SETCOLOR(11);
SETFILLSTYLE(9,11);
FILLELLIPSE(430,67,5,5);
FILLELLIPSE(500,145,5,5);
FILLELLIPSE(500,335,5,5);
FILLELLIPSE(430,412,5,5);
FILLELLIPSE(137,335,5,5);
FILLELLIPSE(207,412,5,5);
FILLELLIPSE(207,67,5,5);
FILLELLIPSE(137,145,5,5);
SETWRITEMODE(1);
GETTIME(H,M,S,D);
IF H>12 THEN
H:=H-12;
SETCOLOR(12);
SETLINESTYLE(0,0,0);
Z:=(S/9.549304)-1.6707;
LINE(320+ROUND(10*COS(Z)),240+ROUND(10*SIN(Z)),320+ROUND(210*COS(Z)),240+ROUND(210*SIN(Z)));
SETCOLOR(14);
SETLINESTYLE(0,0,3);
Y:=(M/9.549304)-1.6707;
LINE(320+ROUND(10*COS(Y)),240+ROUND(10*SIN(Y)),320+ROUND(190*COS(Y)),240+ROUND(190*SIN(Y)));
X:=((H/1.90986)-1.5707)+((M/9.549)/12);
LINE(320+ROUND(10*COS(X)),240+ROUND(10*SIN(X)),320+ROUND(140*COS(X)),240+ROUND(140*SIN(X)));
WHILE TRUE DO
BEGIN
GETTIME(H,M,S,D);
IF S<>I THEN
BEGIN
SETCOLOR(12);
SETLINESTYLE(0,0,0);
Z:=(S/9.549304)-1.6707;
LINE(320+ROUND(10*COS(Z)),240+ROUND(10*SIN(Z)),230+ROUND(210*COS(Z)),240+ROUND(210*SIN(Z)));
SOUND(110);
DELAY(15);
NOSOUND;
I:=S;
END;
IF M<>J THEN
BEGIN
SETCOLOR(14);
SETLINESTYLE(0,0,3);
Y:=(M/9.549304)-1.6707;
LINE(320+ROUND(10*COS(Y)),240+ROUND(10*SIN(Y)),320+ROUND(190*COS(Y)),240+ROUND(190*SIN(Y)));
Y:=((M+1)/9.549304)-1.6707;
LINE(320+ROUND(10*COS(Y)),240+ROUND(10*SIN(Y)),230+ROUND(190*COS(Y)),240+ROUND(190*SIN(Y)));
J:=M;
END;
IF KEYPRESSED THEN
C:=READKEY;
IF C=#27 THEN
BEGIN
SETWRITEMODE(0);
EXIT;
END;
END;
END;
BEGIN
INIT;
CLOCK;
CLOSEGRAPH;
END.
سلام .
خسته نباشي .
من اين برنامه شما رو نتونستم اجرا كنم بخاطر graph كه تو سيستمم كار نمي كنه .
اما فكر كنم قبل از حركت عقربه يه بار clrscr يا cleardevice بزني درست بشه .
البته احتمالا دايره ساعتت (اگه داشته باشه ) هم پاك مي شه .
كه در اينصورت يا دايره رو دوباره بكش يا اينكه .
عقربه رو دو خطي كن . عقربه سمت چپي رو با رنگ زمينه يكي بگير كه وقتي جلو ميره خودكار پاكش كنه .
Joined: 27 Nov 2004 Posts: 1232 Location: www.parsx.com
Posted: Wed Jun 07, 2006 10:04 am Post subject:
بابا این پاسکال خوله
توی C:\TPASCAL7\DOC فایلی به نام GRAPH.INT وجود داره ولی دیوانه می گه نیست.
ببینم خودت این برنامه رو با چه کامپایلری کامپایل می کنی .
فکر نکنم تحت داس باشه درسته.
بالاخره بعد از عمري فعاليت نتيجه چشمگيري براي اين سوال پيدا شد :
دو تا تنظيم بايد بكني : از منوي options مي ري توي قسمت Directories و شاخه unit ها رو دقيق مشخص مي كني مثلا : e:\tp\units
بعد هم توي خط initgraph(gd,gm'..\\bgi'( رو مي نويسي .
ضمنا اين راه حل براي سي هم جواب مي ده .
با تشكر از دكتر يوسف رمضاني نژاد
يعني كدت مي شه :
PROGRAM P1;
USES CRT,DOS,GRAPH;
{====================<<INIT>>====================}
PROCEDURE INIT;
VAR GD,GM:INTEGER;
BEGIN
GD:=DETECT;
INITGRAPH(GD,GM,'..\\bgi');
IF GRAPHRESULT<>GROK THEN
HALT;
END;
{====================<<CLOCK>>====================}
PROCEDURE CLOCK;
VAR H,M,S,D,I,J:WORD;
X,Y,Z:REAL;
C:CHAR;
BEGIN
SETFILLSTYLE(2,9);
FOR I:=1 TO 50 DO
BEGIN
BAR(0,0,639,I*2);
BAR(0,60,639,60+I*2);
BAR(0,120,639,120+I*2);
BAR(0,180,639,180+I*2);
BAR(0,240,639,240+I*2);
BAR(0,300,639,300+I*2);
BAR(0,360,639,360+I*2);
BAR(0,240,639,240+I*2);
BAR(0,480,639,480+I*2);
DELAY(30);
END;
SETCOLOR(10);
SETLINESTYLE(0,0,3);
RECTANGLE(10,10,630,470);
SOUND(300);
DELAY(100);
NOSOUND;
SETFILLSTYLE(9,1);
FILLELLIPSE(320,240,220,220);
SETCOLOR(15);
SETLINESTYLE(0,0,0);
CIRCLE(320,240,225);
SETCOLOR(14);
SETLINESTYLE(0,0,2);
CIRCLE(320,240,220);
SETTEXTSTYLE(7,0,4);
SETCOLOR(0);
OUTTEXTXY(277,92,'OMID');
SETCOLOR(11);
OUTTEXTXY(275,90,'OMID');
SETTEXTSTYLE(1,0,5);
SETCOLOR(0);
OUTTEXTXY(296,26,'12');
OUTTEXTXY(506,213,'3');
OUTTEXTXY(316,411,'6');
OUTTEXTXY(116,213,'9');
SETCOLOR(14);
OUTTEXTXY(295,25,'12');
OUTTEXTXY(505,212,'3');
OUTTEXTXY(315,410,'6');
OUTTEXTXY(115,212,'9');
SETCOLOR(4);
SETFILLSTYLE(1,4);
FILLELLIPSE(320,240,9,9);
SETCOLOR(11);
SETFILLSTYLE(9,11);
FILLELLIPSE(430,67,5,5);
FILLELLIPSE(500,145,5,5);
FILLELLIPSE(500,335,5,5);
FILLELLIPSE(430,412,5,5);
FILLELLIPSE(137,335,5,5);
FILLELLIPSE(207,412,5,5);
FILLELLIPSE(207,67,5,5);
FILLELLIPSE(137,145,5,5);
SETWRITEMODE(1);
GETTIME(H,M,S,D);
IF H>12 THEN
H:=H-12;
SETCOLOR(12);
SETLINESTYLE(0,0,0);
Z:=(S/9.549304)-1.6707;
LINE(320+ROUND(10*COS(Z)),240+ROUND(10*SIN(Z)),320+ROUND(210*COS(Z)),240+ROUND(210*SIN(Z)));
SETCOLOR(14);
SETLINESTYLE(0,0,3);
Y:=(M/9.549304)-1.6707;
LINE(320+ROUND(10*COS(Y)),240+ROUND(10*SIN(Y)),320+ROUND(190*COS(Y)),240+ROUND(190*SIN(Y)));
X:=((H/1.90986)-1.5707)+((M/9.549)/12);
LINE(320+ROUND(10*COS(X)),240+ROUND(10*SIN(X)),320+ROUND(140*COS(X)),240+ROUND(140*SIN(X)));
WHILE TRUE DO
BEGIN
GETTIME(H,M,S,D);
IF S<>I THEN
BEGIN
SETCOLOR(12);
SETLINESTYLE(0,0,0);
Z:=(S/9.549304)-1.6707;
LINE(320+ROUND(10*COS(Z)),240+ROUND(10*SIN(Z)),230+ROUND(210*COS(Z)),240+ROUND(210*SIN(Z)));
SOUND(110);
DELAY(15);
NOSOUND;
I:=S;
END;
IF M<>J THEN
BEGIN
SETCOLOR(14);
SETLINESTYLE(0,0,3);
Y:=(M/9.549304)-1.6707;
LINE(320+ROUND(10*COS(Y)),240+ROUND(10*SIN(Y)),320+ROUND(190*COS(Y)),240+ROUND(190*SIN(Y)));
Y:=((M+1)/9.549304)-1.6707;
LINE(320+ROUND(10*COS(Y)),240+ROUND(10*SIN(Y)),230+ROUND(190*COS(Y)),240+ROUND(190*SIN(Y)));
J:=M;
END;
IF KEYPRESSED THEN
C:=READKEY;
IF C=#27 THEN
BEGIN
SETWRITEMODE(0);
EXIT;
END;
END;
END;
BEGIN
INIT;
CLOCK;
CLOSEGRAPH;
END.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum