الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف اتعامل بالجرافيك مع السى بلس

مغلق
بدأه hamada hassan ali في 13 يونيو 2005 · 11 رد · 1,769 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

لى طلب صغير

اريد ان اعرف كيف يتم انشاء الموس فى تطيقات الدوس

وكيف اقوم بتحديد الحدث على الكيبورد

f5 او زر delete

كيف اتعامل مع كل هذا

ياريت اكواد هذه العمليات ولكن اتمنى لو يكون لها شرح توضيحى

شكرأ ;)

_____________________________

C Language && Windwos_API

_____________________________

#2

بسم الله الرحمن الرحيم

أولا بالنسبة لتوظيف الكيبورد ف برنامجك فهذا يتطلب معرفة الاسكى كود لكل زار موجود ف الكيبورد

حيث اولا يوجد نوعان من المفاتيح

عندك ياسيدى المفاتيح العادية وهى a,b,c,…………..z عند الظغط على اى واحد منهم يتم ارسال لوحة المفاتيح للجهاز one byte وهى كود الزر اما اذا تم الضغط على أى زار تانى وليكن f1 or left or page down يعنى اى زر غير ازرار الكتابة يتم ارسال two byte للجهاز

البايت الاولى تكون صفر والبايت الثانية هى الكود الحقيقى حيث البايت الاولى تدل على ان هذا الزر من المفاتيح الممتدة زى ايضا ctrl alt

ودة كود بوضح اكتر

#include <iostream>
#include <conio>
void main()
{
 int k1,k2;
 while( (k1=getch())!='\r' )
  {
    if(k1==0)
     {
       k2=getch();
       cout<<"the code is\t"<<k2;
     }
     else
     cout<<"norlmal\t"<<k1;
  }
}

حيث عند الضغط على مفتاح a مثلا يعطى لك انة زر عادى وال acii code بتاعة 97

ولك عند الضغط على المفتاح m يكون الكود بتاعة 109

أما عند الطغط على f1 ( فهذا المفتاح من الانواع التى لها two byte ) وبالتالى يكون الascii code هو59

وأيضا زر الdelete هو 83

بالنسبة للسؤال الثانى سأضع كود لك عبارة عن buttons وmouse

ولكن سأشرحة غدا بأذن الله لانة طويل وعاوز كتابة كتيييييييييييييييييييييير

#include <process.h>
#include <graphics.h>
#include <stdlib>
#include <conio.h>
#include <dos.h>

//------------------------------------------------------------------------------

class GRAPHICES
{
 private:

    void OpenGraphics(void);
    void credit(void);
    void Sound();
    void creadit();
    void write1();
    void PIXEL();
    void back(void);
    void write2();
    void ex(void);
     void closing();
     public:
    void Openning(void);
};

//------------------------------------------------------------------------------
//------------------------------------------------------------------------------



void GRAPHICES::OpenGraphics(void)
{
 int driver=0,mode;
 initgraph(&driver,&mode,"C:\\BC5\\BGI");
}

//------------------------------------------------------------------------------

void GRAPHICES::Openning(void)
{
 OpenGraphics();
 back();

}

//------------------------------------------------------------------------------

void GRAPHICES::back(void)
{
 OpenGraphics();
 int x,y,k=155,k1=-25;
 setbkcolor(7);
 setfillstyle(1,7);
 setcolor(15);
 line(90+k,150+k1,170+k,150+k1);
 line(90+k,150+k1,90+k,180+k1);
 setcolor(8);
 line(90+k,180+k1,170+k,180+k1);
 line(170+k,180+k1,170+k,150+k1);
 setcolor(15);
 line(90+k,210+k1,170+k,210+k1);
 line(90+k,210+k1,90+k,240+k1);
 setcolor(8);
 line(90+k,240+k1,170+k,240+k1);
 line(170+k,240+k1,170+k,210+k1);
 setcolor(15);
 line(90+k,270+k1,170+k,270+k1);
 line(90+k,270+k1,90+k,300+k1);
 setcolor(8);
 line(90+k,300+k1,170+k,300+k1);
 line(170+k,300+k1,170+k,270+k1);
 setcolor(15);
 line(90+k,330+k1,170+k,330+k1);
 line(90+k,330+k1,90+k,360+k1);
 setcolor(8);
 line(90+k,360+k1,170+k,360+k1);
 line(170+k,360+k1,170+k,330+k1);
 setcolor(15);
 line(90+k,390+k1,170+k,390+k1);
 line(90+k,390+k1,90+k,420+k1);
 setcolor(8);
 line(90+k,420+k1,170+k,420+k1);
 line(170+k,420+k1,170+k,390+k1);
 setcolor(15);
 line(90+k,450+k1,170+k,450+k1);
 line(90+k,450+k1,90+k,478+k1);
 setcolor(8);
 line(90+k,478+k1,170+k,478+k1);
 line(170+k,450+k1,170+k,478+k1);


 setcolor(4);
 settextstyle(0,0,1);
 outtextxy(110+k,161+k1," Add  ");
 outtextxy(103+k,220+k1,"Display");
 outtextxy(105+k,280+k1,"Modify");
 outtextxy(105+k,340+k1,"Delete");
 outtextxy(105+k,400+k1,"Credits");
 outtextxy(115+k,460+k1,"Exit");
//-----------------mouse intialization------------------------------------------
 REGPACK reg;
 reg.r_ax=0x000;
 intr(0x0033,®);
 reg.r_ax=0x001;
 intr(0x0033,®);
//------------------------------------------------------------------------------
 while(1)
    {
     reg.r_ax=0x003;
     reg.r_bx=0x001;
     intr(0x033,®);
     int x1,y1;
     x1=reg.r_cx;
     y1=reg.r_dx;

     const int COLOR=14;

        if(x1>=90+k && x1<=170+k &&y1>=150+k1 &&y1<=180+k1 )
        {
         setcolor(COLOR);
         settextstyle(0,0,1);
         outtextxy(110+k,161+k1," Add  ");
        }

     else if(x1>=90+k && x1<=170+k &&y1>=210+k1 &&y1<=240+k1 )
        {
         setcolor(COLOR);
         settextstyle(0,0,1);
         outtextxy(103+k,220+k1,"Display");
        }

     else if(x1>=90+k && x1<=170+k &&y1>=270+k1 &&y1<=300+k1 )
        {
         setcolor(COLOR);
         settextstyle(0,0,1);
         outtextxy(105+k,280+k1,"Modify");
        }

     else if(x1>=90+k && x1<=170+k &&y1>=330+k1 &&y1<=360+k1 )
        {
         setcolor(COLOR);
         settextstyle(0,0,1);
         outtextxy(105+k,340+k1,"Delete");
        }

     else if(x1>=90+k && x1<=170+k &&y1>=390+k1 &&y1<=420+k1 )
        {
         setcolor(COLOR);
         settextstyle(0,0,1);
         outtextxy(105+k,400+k1,"Credits");
        }

     else if(x1>=90+k && x1<=170+k &&y1>=450+k1 &&y1<=478+k1 )
        {
         setcolor(COLOR);
         settextstyle(0,0,1);
         outtextxy(115+k,460+k1,"Exit");
        }

     else
        {
         setcolor(BLUE);
         settextstyle(7,0,5);
         outtextxy(150,20,"Main Menu");
         setcolor(4);
         settextstyle(0,0,1);
         outtextxy(110+k,161+k1," Add  ");
         outtextxy(103+k,220+k1,"Display");
         outtextxy(105+k,280+k1,"Modify");
         outtextxy(105+k,340+k1,"Delete");
         outtextxy(105+k,400+k1,"Credits");
         outtextxy(115+k,460+k1,"Exit");
        }
 //------------------------------------------------------------------------------

     if(reg.r_bx==1)
        {
         x=reg.r_cx;
         y=reg.r_dx;
        }

     if(x>=90+k && x<=170+k &&y>=150+k1 &&y<=180+k1 )
        {
         setcolor(8);
         line(90+k,150+k1,170+k,150+k1);
         line(90+k,150+k1,90+k,180+k1);
         setcolor(15);
         line(90+k,180+k1,170+k,180+k1);
         line(170+k,180+k1,170+k,150+k1);
         delay(100);
                 //method u want to call

         setcolor(15);
         line(90+k,150+k1,170+k,150+k1);
         line(90+k,150+k1,90+k,180+k1);
         setcolor(8);
         line(90+k,180+k1,170+k,180+k1);
         line(170+k,180+k1,170+k,150+k1);
         delay(170);

         closegraph();
         x=0,y=0;
        //method u want to call
        }

     if(x>=90+k && x<=170+k &&y>=210+k1 &&y<=240+k1 )
        {
         setcolor(8);
         line(90+k,210+k1,170+k,210+k1);
         line(90+k,210+k1,90+k,240+k1);
         setcolor(15);
         line(90+k,240+k1,170+k,240+k1);
         line(170+k,240+k1,170+k,210+k1);
         delay(100);

         setcolor(15);
         line(90+k,210+k1,170+k,210+k1);
         line(90+k,210+k1,90+k,240+k1);
         setcolor(8);
         line(90+k,240+k1,170+k,240+k1);
         line(170+k,240+k1,170+k,210+k1);
         delay(170);

         closegraph();
         x=0,y=0;
        //method u want to call
        }

     if(x>=90+k && x<=170+k &&y>=270+k1 &&y<=300+k1 )
        {
         setcolor(8);
         line(90+k,270+k1,170+k,270+k1);
         line(90+k,270+k1,90+k,300+k1);
         setcolor(15);
         line(90+k,300+k1,170+k,300+k1);
         line(170+k,300+k1,170+k,270+k1);
         delay(100);

         setcolor(15);
         line(90+k,270+k1,170+k,270+k1);
         line(90+k,270+k1,90+k,300+k1);
         setcolor(8);
         line(90+k,300+k1,170+k,300+k1);
         line(170+k,300+k1,170+k,270+k1);
         delay(170);

         closegraph();
         x=0,y=0;
                //method u want to call
        }

     if(x>=90+k && x<=170+k &&y>=330+k1 &&y<=360+k1 )
        {
         setcolor(8);
         line(90+k,330+k1,170+k,330+k1);
         line(90+k,330+k1,90+k,360+k1);
         setcolor(15);
         line(90+k,360+k1,170+k,360+k1);
         line(170+k,360+k1,170+k,330+k1);
         delay(100);

         setcolor(15);
         line(90+k,330+k1,170+k,330+k1);
         line(90+k,330+k1,90+k,360+k1);
         setcolor(8);
         line(90+k,360+k1,170+k,360+k1);
         line(170+k,360+k1,170+k,330+k1);
         delay(170);

         closegraph();
         x=0,y=0;
        //method u want to call
        }

     if(x>=90+k && x<=170+k &&y>=390+k1 &&y<=420+k1 )
        {
         setcolor(8);
         line(90+k,390+k1,170+k,390+k1);
         line(90+k,390+k1,90+k,420+k1);
         setcolor(15);
         line(90+k,420+k1,170+k,420+k1);
         line(170+k,420+k1,170+k,390+k1);
         delay(100);

         setcolor(15);
         line(90+k,390+k1,170+k,390+k1);
         line(90+k,390+k1,90+k,420+k1);
         setcolor(8);
         line(90+k,420+k1,170+k,420+k1);
         line(170+k,420+k1,170+k,390+k1);
         delay(170);

         closegraph();
         credit();
        }

     if(x>=90+k && x<=170+k &&y>=450+k1 &&y<=478+k1 )
        {
         setcolor(8);
         line(90+k,450+k1,170+k,450+k1);
         line(90+k,450+k1,90+k,478+k1);
         setcolor(15);
         line(90+k,478+k1,170+k,478+k1);
         line(170+k,450+k1,170+k,478+k1);
         delay(100);

         setcolor(15);
         line(90+k,450+k1,170+k,450+k1);
         line(90+k,450+k1,90+k,478+k1);
         setcolor(8);
         line(90+k,478+k1,170+k,478+k1);
         line(170+k,450+k1,170+k,478+k1);
         delay(170);
         x=0,y=0;
         ex();
        }
     }
}

//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
   void GRAPHICES::write1()
        {
               for(int j=0;j<10;j++){
  setcolor(j*70);
  settextstyle(1,0,8);
  moveto(100,90);
  outtext("WELLCOME");
   delay(500);
   if(j==70*10)
    break;
  }
 	 sleep(1);
  moveto(300,440);
 settextstyle(2,0,6);
 setcolor(9000);
 outtext("   Press Any Key To Continue...");
 getch();
}

  void GRAPHICES::write2()
  {
    setlinestyle(2,0,3);

 setcolor(BLACK);
 for(int j=0;j<10;j++){
  //setcolor(j*70);
  settextstyle(1,0,8);
  moveto(100,90);
  outtext("WELLCOME");
   delay(500);
   if(j==70*10)
    break;
  }
    moveto(300,440);
 settextstyle(2,0,6);
 setcolor(9000);
 outtext("   Press Any Key To Continue...");
 //getch();
}
/****************************************banner************************/
void GRAPHICES::PIXEL()
        {
          int x;
          sleep(1);
           for(int i=0;i<1000;i++)
            {
              putpixel(random(640),random(900),random(i));
              delay(2);
             }
             sleep(1);
        }



/***************************************************************************/
void GRAPHICES::Sound()
        {
          sound(400);
        delay(400);
     	 nosound();
         }
/*****************************************************************************/
void  GRAPHICES::creadit()
{

   settextstyle(4,0,5);
   moveto(0,30);
 outtext("BY:");
 settextstyle(5,0,5);
 setcolor(LIGHTBLUE);
 moveto(2,90);
  Sound();
 outtext("M");
 delay(1);
  Sound();
 outtext("O");
   delay(1);
  Sound();
 outtext("H");
   delay(1);
  Sound();
 outtext("A");
 delay(1);
  Sound();
 outtext("M");
 delay(1);
  Sound();
 outtext("M");
 delay(1);
  Sound();
 outtext("E");
 delay(1);
  Sound();
 outtext("D");
 delay(1);
  Sound();
 outtext(" ");
 delay(1);
 Sound();
 outtext("E");
 delay(1);
  Sound();
 outtext("L");
   delay(1);
  Sound();
 outtext("S");
   delay(1);
  Sound();
 outtext("A");
 delay(1);
  Sound();
 outtext("Y");
 delay(1);
   Sound();
 outtext("E");
 delay(1);
  Sound();
 outtext("D");
   delay(1);
  Sound();
 outtext(" ");
 delay(1);
 Sound();
 outtext("A");
 delay(1);
 Sound();
 outtext("L");
   delay(1);
  Sound();
 outtext("L");
   delay(1);
  Sound();
 outtext("A");
 delay(1);
  Sound();
 outtext("M");
 delay(1);
 }
/****************************************************************************/

void GRAPHICES::credit(void)
{
 int driver=0,mode,m=-53;
 initgraph(&driver,&mode,"C:\\BC5\\BGI");
PIXEL();
write1();
cleardevice();
PIXEL();
//asd.write2();
creadit();

 back();}

//------------------------------------------------------------------------------

void GRAPHICES::ex()
{


 setbkcolor(7);
 //setcolor(8);
   exit(0);

}

//------------------------------------------------------------------------------

void GRAPHICES::closing(void)
{

 closegraph();
 exit(1);
}

//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------

void main(void)
{
 GRAPHICES GUI;
 GUI.Openning();
}

//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------

وايضا الكود مرفق للسهولة فى فتحة

Muhammad Allam

Computer Science

@Resource(MappedURL="My Blog" )

#3

اة أسف نسيت ارفاق الكود

أدى الكود اهوة

graph.rar

Muhammad Allam

Computer Science

@Resource(MappedURL="My Blog" )

#4

أدى كمان لينكات فى الجرافيك ممكن تفيدك

/index.php?showtopic=66716

/index.php?showtopic=66269

Muhammad Allam

Computer Science

@Resource(MappedURL="My Blog" )

#5

بقوللك ايه لو سمحت

ممكن تدلنى على وصلة كتاب يشرح كل شىء فى السى بلس بلس

حتى الجرافيك سوء عربى او انجليزى

حاحاول اصرف فى الترجمة بس المهم ان يكون يشمل الجرافيك بكل نواحيه

ولدى سوال اخر :

1- كيف اقوم بصناعة مكتبة خاصة بى على برنامج بورلاند سى بلس بلس ؟

2- هل السى بلس بلس قادرة عى انشاء جرافيك ثلاثى الابعاد ؟

واكون شاكرأ جدأ للك

لا تندهش عندما اضع هذا الطلب على المنتدى العام

حتى اذا كان احد يريد ان يعرف كيف يصمم مكتبة خاصة يعثر على الجواب

فهى خدمة الى الجميع

مشكور جدأ عزيزى العضو eng_3llam

لانك استحملتنى كتير

منتظر ردك على رسالتى

_____________________________

C Language && Windwos_API

_____________________________

#6

بسم الله الرحمن الرحيم

السلام عليكم

أولا يوجد بعض الدوال التى قد أستخدمتها ويعنى ممكن أقولك 3d بس مش أوى

وهى

Elipse();
Drawpoly();
Bar3d();
Bar();
Pieslice();
ملحوظة لكل دالة pramaters

حاول تبحث عنهم فى الmsdn وستجدهم بأذن الله

أنصحك بأستخدام Borland 5.0v ف حالة البحث

لية؟؟؟؟

علشان لما تبحث عن graphics.h يعطيلك كل الدوال الموجودة فية بشرح جميل لكل دالة ومثال أيضا

بالنسبة للكتب صدقنى مافيش كتاب هيقولك على كل حاجة ويخليك محترف كل ما هو يعملة يفتح ليك الموضوع ويسيبك مع نفسك :D

وايضا دة يعتمد على انت وذكائك وكيفية تهيئة للمستخدم بان الذى امامة 3d

زى ف المثال الذى قد ارفقتة عبارة عن شوية زراير شكلها 3d بس هى مش 3d دا شكل مستطيل مكون من مجموعة من الlines بس عملت الخط اللى تحت واللى على ايدك اليمين بالاسود والباقى بالابيض

وبالتالى يضهلا اكنة 3d

طب ف حالة الضغط علية

هغير الالوان بدل ماكان أسود هخلية أبيض والعكس ايضا

وبالتالى كدة وضح للمستخدم انة عند الضغط علية ستشغر انة الbouttn يتحرك للداخل بس فى الحقيقة مابيحصلش كدة :D

بالنسبة للكتب عندك كتاب ( انا معرفش وصلتة ع النت بس ممكن تشترية)

Object orentiend programming c++ by robort lafore

دة فى بعض الشرح للgraphices بس مستخدم header file أسمة mosftcon.h

وانا شخصيا عمرى ما أستخدمتة ( بس كل الدوال اللى فية سهلة وشبية للدوال الموجودة ف graphics.h )

بالنسبة لكيفية صناعة ال.dll بالبورلاند

عندك طريقة قد شرحها الاخ jass

بس بالفيجوال سى معتقدش انها تختلف عن السى فى اى حاجة ع البورلاند (ممكن من الmsdn أيضا هتلاقى مجموعة اكواد عندك ف ملف مسارة (C:\BC5\EXAMPLES )

هتلاقى كود ازاى تعمل dll وتستخدمها

ودى لينكة أكواد graphics بالسى جميلة أكيد تستفيد منها

http://www.Planet-Source-Code.com/

بس نصيحة أخيرة كل دة هيضيع وقتك وانت فى غنى عن طغيع الوقت بدل ماأتعلم الgraph بالسى أتعملة بالvb or vb.net or c# على الاقل بيمكنى من حاجات صعب وجودها ف السى

وأتمنى ان أكون أوضحت لك ما تريدة

Muhammad Allam

Computer Science

@Resource(MappedURL="My Blog" )

#7

مشكور جدأ على توضيحك للجرافيك

بس ينقصنى الان كيفية عمل المكتبة بصراحة ياعزيزى زهت من كل مأجى اكتب كود اكتب مكتبته الخاصة به

فقولت ليه معملش مكتبة تلم كل الاكواد مع بعضها

لا عليك اشكرك على الجرافيك انت فتحت امامى نصف الطريق gui

وانا على الاجتهاد فيه

شكرأ يأ صاحبى eng_3llam

B)

_____________________________

C Language && Windwos_API

_____________________________

#8
اقتباس
بس ينقصنى الان كيفية عمل المكتبة بصراحة ياعزيزى زهت من كل مأجى اكتب كود اكتب مكتبته الخاصة به

فقولت ليه معملش مكتبة تلم كل الاكواد مع بعضها

والله انا لسة ماجربتش اعمل dll بس أدى لينكة تدلك على عملها

/index.php?showtopic=34783

العملية سهلة وبسيطة ومش مستهلى تعقيد

اقتباس
لا عليك اشكرك على الجرافيك انت فتحت امامى نصف الطريق gui

وانا على الاجتهاد فيه

نصيحة من شخص جلس امام الجهاز باليالى لعمل جراف بالسى

صدقنى والله العظيم مضيق للوقت (لو انت واخد العملية هواية ممكن تتعلمة وتعرف الsyntax بس مش لازم تتعمق فية )

وشكرا لك

Muhammad Allam

Computer Science

@Resource(MappedURL="My Blog" )

#9

يعطيك العافية eng_3llam

بتعرف إنك إنت فاضي برمجة

أنا ما بقول هذا الحكي إلا للناس يلي بتدخل مزاجي

برافو عليك

#10

اقتباس
يعطيك العافية eng_3llam

بتعرف إنك إنت فاضي برمجة

ألف ألف شكر ياأخى :lol:

انا طالب بدرس بس هاوى البرمجة وتعلم كل شيى فيها وأحب أخدم أمة الاسلامية

Muhammad Allam

Computer Science

@Resource(MappedURL="My Blog" )

#11

يعم فين شرح الكود ؟؟؟؟

#12

أخى أو أختى وسام أذا دخلت ع اللينكات الموجودة فوق سيجد شرح أغلب الدوال المستخدمة ف الكود

Muhammad Allam

Computer Science

@Resource(MappedURL="My Blog" )

هذا الموضوع مغلق.

مواضيع مشابهة