ParsX.com
پذیرش پروژه از دانشجویی ... تا سازمانی 09376225339
 
   ProfileProfile   Log in to check your private messagesLog in to check your private messages  |  FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups Log inLog in   RegisterRegister 

کمک

 
Post new topic   Reply to topic    ParsX.com Forum Index -> برنامه نويسي دلفي و پاسكال : Delphi & Pascal Programming
View previous topic :: View next topic  
Author Message
omid_pascal
مهمون يكي دو روزه


Joined: 01 Jun 2006
Posts: 14

PostPosted: Fri Jun 02, 2006 10:04 am    Post subject: کمک Reply with quote

با عرض سلام و خسته نباشید
من در دوره کار دانی نرم افزار کامپیوتر در حال تحصیل هستم.
در درس پاسکال پروژه ای را نوشتم که با مشکل بزرگی برخورد کردم.
من در این پروژه در محیط گرافیکی یک ساعت آنالوگ طراحی و پس از اجراساعت جاری سیستم را گرفته و عقربه های ساعت را بر اساس تایم دریافتی حرکت میدهم
ولی متاسفانه در حین حرکت عقربه ی قبلی پاک نمی شود .
لطفا مرا راهنمایی کنید
با تشکر

امید از سمنان
این هم کد بر نامه :

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.
Back to top
vahid
بي تو هرگز


Joined: 26 Nov 2004
Posts: 3067
Location: Tehran

PostPosted: Fri Jun 02, 2006 2:51 pm    Post subject: Reply with quote

سلام .
خسته نباشي .
من اين برنامه شما رو نتونستم اجرا كنم بخاطر graph كه تو سيستمم كار نمي كنه .
اما فكر كنم قبل از حركت عقربه يه بار clrscr يا cleardevice بزني درست بشه .

البته احتمالا دايره ساعتت (اگه داشته باشه ) هم پاك مي شه .
كه در اينصورت يا دايره رو دوباره بكش يا اينكه .
عقربه رو دو خطي كن . عقربه سمت چپي رو با رنگ زمينه يكي بگير كه وقتي جلو ميره خودكار پاكش كنه .
Back to top
arash
مدير بخش سي
مدير بخش سي


Joined: 27 Nov 2004
Posts: 1232
Location: www.parsx.com

PostPosted: Wed Jun 07, 2006 10:04 am    Post subject: Reply with quote

بابا این پاسکال خوله
توی C:\TPASCAL7\DOC فایلی به نام GRAPH.INT وجود داره ولی دیوانه می گه نیست.
ببینم خودت این برنامه رو با چه کامپایلری کامپایل می کنی .
فکر نکنم تحت داس باشه درسته.
Back to top
vahid
بي تو هرگز


Joined: 26 Nov 2004
Posts: 3067
Location: Tehran

PostPosted: Wed Mar 14, 2007 5:40 pm    Post subject: Reply with quote

بالاخره بعد از عمري فعاليت نتيجه چشمگيري براي اين سوال پيدا شد :

دو تا تنظيم بايد بكني : از منوي 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.
Back to top
Display posts from previous:   
Post new topic   Reply to topic    ParsX.com Forum Index -> برنامه نويسي دلفي و پاسكال : Delphi & Pascal Programming All times are GMT + 3.5 Hours
Page 1 of 1

 
Jump to:  
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