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

طريقة تلوين وحركت الرسومات باستخدام السي ++

مغلق
بدأه Mrs.n في 6 مايو 2004 · 10 رد · 1,969 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

انا مبتدئه في البرمجة c++ يعني في دراستي توني ادرس class

سؤالي

ابغى احد يشرحلي

كيف لما اعمل run لبرنامج وكون راسمه فيه مثل شجره الونها واخليها تتحرك

وتساقط اوراقها

هذا مجرد مثال

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

اللي يقدر يساعدني يتفضل

ولكم جزيل الشكر

#2

السلام عليكم,,

كيف الحال أخي/أختي Mrsn ,, ان شاء الله تمام ,,

بالنسبة لموضوعك ,, الرسم توجد طريقتين :

الأولى عرض عدة صور مرسومة مسبقا ,, ببرنامج رسم آخر ,, وبعد عرضها متتالية تعطي الشكل المطلوب ,,

يعني صورة لشجرة صغيرة ,, ثم صورة لشجرة أكبر ,, ثم أخرى أكبر ,, ثم صورة لشجرة ناضجة ,, تسقط منها ورقة ,, ثم أخرى بعدة أوراق ,, وأخرى بأوراق بحث تظهر بعض الأوراق في الأرض أيضا ,,

بعد عرض هذا المسلسل بالكامل ,, سيعطي تشبيه لفلم فيديو يعرض تساقط أوراق شجرة ,,

مع زيادة عدد الصور ,, يزيد مدى اتقان فلم الفيديو ,, وهكذا ,,

وبالطبع يمكن في النهاية التحكم بعدد لقطات العرض في الثانية الواحدة ,,

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

حاليا لاتوجد طريقة سوى الرسم المبدأي والعرض باستخدام الكود والتحكم في عدد القطات في الثانية وبقية الأمور ,,

بالنسبة للكود بالسي++ العادية يمكن بالطبع لكن ليس كود لل Console وهو الشاشة السوداء التي تظهر فيها البرامج التي نكتبها ,,

وانما يجب أن تكون في شاشة وندوز عادية ,, وتحتاج لبعض التمهيد قبل البدأ ,,

هل تريدين كود لهذا ؟ مع أنني لا أجيد الرسم ,, فلو أردت أو أردتي :) كود لهذا يمكن أن ترسم الصور اذا أردت وسأكتب لك كود عرضها ,,

وفقك الله ,,

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#3

نسيت أن أقول أنه يمكن اضافة تحكمات كثيرة جدا على رسمتك كما تريدين ,, فاذا عرفت أن برامج متطورة للصور والرسومات أمثال ال Photo Shop والكوريل درو والفلاش وغيرها مكتوبة بالسي++ في الأصل ,,

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

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#4

مشكور

مشرف

هي الطريقه اسهل مماتتصور

الدفعه اللي بعدي درسوا مع استاذه غيري عن الي درسوني

واخذوا هالفكره وطبقوها يعني كانوا توهم يدرسون برمجة بلغة سي ++

انا إن شاء الله احاول اعرف الطريقه ولو قدرة بكره كتبتها

لاني لازم اتعلمها انا شفت برامجهم كانت جدا رائعه

بدور الطريقه منهم او من الاستاذه وبكتبه عشان الفايده تعم الكل

ومشكور

ولو عندك اي كود اتمنى تكتبه

لاني ودي اتعلم

#5

أنا في الانتظار ,, وسأكتب كودا وأضيفه هنا باذن الله ,, حالما أجد بعض الوقت ,, قريبا :)

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#6

السلام عليكم

لقد قمت منذ فتره بكتابة برنامج يستخدم ال DC وهى ادوات الرسم فى الوندوز, ثم حولت الصوره الى لعبه بإستخدام back buffer مع الاسف البرنامج كتبته بلغة الاسمبلى و ال API, تحويل الكود الى c++ مسئله بسيطه جداً, هنا الرابط الذى وضعت فيه البرنامج:

http://www.student.nada.kth.se/~su00-aab/mosaic.zip

ولو رغب احد فى ترجمته الى c++ فانا مستعد إن شاء الله ان اشرح الطرتقه و ان ارفق الكود.

والسلام

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#7

هناك عدة مكتبات للرسم يمكن إستخدامها

لكن OpenGL هي أشهر هذه المكتبات نظراً لأنها قياسية

ويوجد لها نظير في كل لغات البرمجة.

ويمكن كتابة كود في السي++ في بيئة الكونسول لكن الرسم سيظهر في نافذة أخرى ويمكن رسم الأشكال وتلوينها وتحريكها بواسطة الكود.

وأعتقد أن مادة الكمبيوتر جرافيكس تعتمد عليها.

وبعد إذن الغالي هيثم سأعيد فتح دروس الـ OpenGL والتي كانت النحلة النشيطة قد بدأت بها (و توقفت فجأة للأسف)

ولكن بعد الإختبارات النهائية لدينا اللي راح تبدأ بعد أسبوعين.

#8

HGB

انتظر الاكواد

احمد غريب

اتمنى منك شرح اكثر واوفر

CompuM4n

انتظر الموضوع

بس في فكره بسيطه وهي عباره عن loop بس في فكره بيسطه احاول اتعلمها واكتبها

وهي يدائيه شوي

واتمنى من كل اللي عنده فكره يكتبها

#9

أهلين بالغالي CompuM4n ,, الله يسهلها عليك في الامتحانات ,, ويوفقك لما فيه الخير ,,

ونحن في انتظارك بعد انتهاء الامتحانات ,, ,,

وفقك الله ,,

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#10

الســــلام عليــــكم .....

مــــــــــــــــــــــــــرة موضوعك حلــــو يا mrs.n ومن زمان نفسي أعرف هذه الأشياء وأتعلمها بس مستنية أوصل لها في الجامعة عشان أقدر أسأل عنها ....

الله يعطيكي العافية وأنا حأكون متابعة موضوعك عشان أتعلم أنا كمان وأستفيد :)

أختك ....

#11

السلام عليكم

عرفت طريقه سهله وبسيطه للتحريك الاشياء بس يبغالها شوية دقه

كل الشغل فيها انا نعمل loop لل funاللي عندنا وتتحرك الاشياء بس بشرط انا نستخدم func وهي

ذي

ونقدر نغير القيم اللي فيها مثل مانبغى

void delay()
{
 for(int i=0;i<32000;++i)
 {
  for(int j=0;j<32000;++j)
  {
  }

انا عملت رسمه بسيط وناقصه شغل الكثير اتمنى انا نتعاون ونحاول نخليها افضل

على فكره كل ما كثرنا loop قلة حركة االرسم وصارة بطيئه

هذا شغلي وصح الرسمه مو مره حلوه بس اللي قدرة اعمله الوقت الحالي وانا حاولة احرك فيها بس جزء واحد من الرسمه اللي عنده اضافه على رسمه يضيف انا حاطه في البرنامج كل fun اللي نحتاجه شكل مربع او مثلث بانواعه المختلفه وحاطه قائمه عشان اساعد الكل ويعرف كل شخص كيف شكل الfun الموجوده عشان اسهل لكم الزياده في البرنامج اللي يحب

#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <string.h>
void rec(int ,int ,int ,int ,int );
void try1(int ,int ,int ,int );
void try2(int ,int ,int ,int );
void try3(int ,int ,int ,int );
void try4(int ,int ,int ,int);
void try5(int ,int ,int ,int);
void sqr(int ,int ,int , int );
void delay();
void main()
{
 int ch;
 do
 {
  cout<<"1-sqr";
  cout<<"\n2-rec";
  cout<<"\n3-try 1";
  cout<<"\n4-try 2";
  cout<<"\n5-try 3";
  cout<<"\n6-try 4";
  cout<<"\n7-try 5";
 cout<<"\n8-draw prictiv";
 cout<<"\n9-draw by inimation";
 cout<<"\n10-exit";
 cin>>ch;
 clrscr();
 switch(ch)
 {
 case 1:{
        sqr(3,3,4,5);
        break;
        }
 case 2:{
        rec(4,5,5,4,6);
        break;}
 case 3:{
        try1(3,3,4,GREEN);
        break;}
case 4:{
        try2(5,5,4,GREEN);
        break;
        }
 case 5:{try3(3,3,4,GREEN);
         break;}
case 6:{ try4(3,3,4,GREEN);
         break;
         }
case 7:{
         try5(3,3,3,GREEN);
         break;
         }
case 8:{ rec(0,0,80,10,1);
        rec(0,10,80,20,BROWN);
        rec(45,15,10,1,8);
        rec(71,15,10,1,8);
        rec(46,15,1,25,8);
        rec(51,16,7,1,5);
        rec(55,16,7,1,5);
        rec(52,21,2,3,13);
        rec(61,16,7,1,5);
        rec(65,16,7,1,5);
        rec(62,21,2,3,13);
        rec(25,25,7,1,8);
        try5(25,25,8,8);
        sqr(25,25,1,RED);
        rec(26,25,1,8,11);
        sqr(34,25,2,RED);
        rec(17,25,1,8,11);
        sqr(15,25,2,RED);
        for(int i=1;i<8;++i)
        {textcolor(11);
         gotoxy(25-i,25-i);
         cprintf("@");
         }
         sqr(16,18,2,RED);
         for(int i=1;i<8;++i)
         {
          textcolor(11);
          gotoxy(25+i,25-i);
          cprintf("@");
          }
          sqr(33,18,2,RED);
          rec(25,26,5,1,11);
          sqr(25,31,2,RED);
        break;
        }
case 9:{
        rec(0,0,80,10,1);
        rec(0,10,80,20,BROWN);
        rec(45,15,10,1,8);
        rec(71,15,10,1,8);
        rec(46,15,1,25,8);
        for(int i=0;i<5;++i)
        {
        rec(51-i,16+i,7,1,5);
        rec(55-i,16+i,7,1,5);
        rec(52-i,21+i,2,3,13);
        rec(61-i,16+i,7,1,5);
        rec(65-i,16+i,7,1,5);
        rec(62-i,21+i,2,3,13);
        delay();
        rec(51-i,16+i,7,1,6);
        rec(55-i,16+i,7,1,6);
        rec(52-i,21+i,2,3,6);
        rec(61-i,16+i,7,1,6);
        rec(65-i,16+i,7,1,6);
        rec(62-i,21+i,2,3,6);
        }
        for(int i=0;i<5;++i)
        {
        rec(46+i,21-i,7,1,5);
        rec(50+i,21-i,7,1,5);
        rec(47+i,26-i,2,3,13);
        rec(56+i,21-i,7,1,5);
        rec(60+i,21-i,7,1,5);
        rec(57+i,26-i,2,3,13);
        delay();
        rec(46+i,21-i,7,1,6);
        rec(50+i,21-i,7,1,6);
        rec(47+i,26-i,2,3,6);
        rec(56+i,21-i,7,1,6);
        rec(60+i,21-i,7,1,6);
        rec(57+i,26-i,2,3,6);
        }
        rec(51,16,7,1,5);
        rec(55,16,7,1,5);
        rec(52,21,2,3,13);
        rec(61,16,7,1,5);
        rec(65,16,7,1,5);
        rec(62,21,2,3,13);
        rec(25,25,7,1,8);
        try5(25,25,8,8);
        sqr(25,25,1,RED);
        rec(26,25,1,8,11);
        sqr(34,25,2,RED);
        rec(17,25,1,8,11);
        sqr(15,25,2,RED);
        for(int i=1;i<8;++i)
        {textcolor(11);
         gotoxy(25-i,25-i);
         cprintf("@");
         }
         sqr(16,18,2,RED);
         for(int i=1;i<8;++i)
         {
          textcolor(11);
          gotoxy(25+i,25-i);
          cprintf("@");
          }
          sqr(33,18,2,RED);
          rec(25,26,5,1,11);
          sqr(25,31,2,RED);
          break;
          }

case 10:{cout<<"exit";
        break;}
        }
        }
 while (ch!=10);
 getch();
 }
void sqr(int x,int y,int l,int c)
{
 textcolor(c);
 for(int i=0;i<l;i++)
 {
  gotoxy(x,y+i);
  for(int j=0;j<l;j++)
 {
  cprintf("*");
  }
 }
}
void rec(int x,int y,int l,int w,int c)
{
 textcolor(c);
 for(int i=0;i<l;i++)
 {
 gotoxy(x,y+i);
 for(int j=0;j<w;j++)
 {
  cprintf("@");
 }
}
}
void try1(int x,int y,int l,int c)
{
 textcolor(c);
 for(int i=0;i<l;++i)
 {
 gotoxy(x,y+i);
 for(int j=0;j<i;++j)
 cprintf("^");
 }
}
void try2(int x,int y,int l,int c)
{
int z;
 textcolor(c);
 z=x;
 for(int i=1;i<=l;++i)
 {
 x=z;
  for(int j=i;j>=1;--j)
  {
  gotoxy(x,y);
  cprintf("&");
  --x;
   }
   y++;
  }
 }

void try3(int x,int y,int l,int c )
{
 textcolor(c);
 for(int i=l;i>=0;--i)
 {gotoxy(x,y++);
 for(int j=1;j<=i;++j)
 cprintf("&");
 }}
 void try4(int x,int y,int l,int c)
 {
  textcolor(c);
  for(int i=l;i>=0;--i)
  {
   gotoxy(x++,y++);
   for(int j=1;j<=i;++j)
   cprintf("0");
   }
  }
  void try5(int x,int y,int l,int c)
  {
   textcolor(c);
   for(int i=1;i<=l;++i)
   {
    gotoxy(x--,y++);
    for(int j=1;j<=(2*i)-1;++j)
    cprintf("0");
    }
   }
void delay()
{
 for(int i=0;i<32000;++i)
 {
  for(int j=0;j<32000;++j)
  {
  }
   }
  }

وسامحونا على الاطاله

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…