• 0
  • مالي خلق
  • أتهاوش
  • متضايق
  • مريض
  • مستانس
  • مستغرب
  • مشتط
  • أسولف
  • مغرم
  • معصب
  • منحرج
  • آكل
  • ابكي
  • ارقص
  • اصلي
  • استهبل
  • اضحك
  • اضحك  2
  • تعجبني
  • بضبطلك
  • رايق
  • زعلان
  • عبقري
  • نايم
  • طبيعي
  • كشخة
  • النتائج 1 إلى 8 من 8

    الموضوع: برمجة الألعاب الدرس الأول

    1. #1
      التسجيل
      14-01-2003
      المشاركات
      396
      المواضيع
      55
      شكر / اعجاب مشاركة

      برمجة الألعاب الدرس الأول

      كلما حاولت أن أكتب شيء ظهر بطريقة مقلوبة أرجو من القائمين على المنتدى تفعيل زر code الي الزر تبعه عليه # مثلا عند وضع
      كود:
      #include "allegro.h"
      تظهر مقلوبة أرجو من القائمين جعل اتجاه الكود من اليسار لليمين

      include "allegro.h"بشكل مؤقت لن أكتب # قبل include أضفها أنت
      وسأكتب comment بعد كل أمر حتى يظهر بشكل صحيح

      سأشرح في هذا الدرس تركيب أي برنامج مكتوب على allegro
      لا تفزع من كثرة الأسطر لأنها ستتكرر في كل برنامج بمعنا أنك فقط رح تعمل copy + paste
      يبدأ البرنامج ب
      include "allegro.h" // this is the lib header
      ثم يأتي ال main على الشكل الآتي
      int main(int argc,char *argv[]) //the main function
      ثم الحاصرتين {} وبينهما البرنامج
      ثم في نهاية نضيف بعض من سحر allegro
      END_OF_MAIN(); // this is a trik
      هنا يكمن جمال هذه المكتبة بحيث أ، هذا الذي أضفناه في الأخير يحول main إلى بعض خزعبلات windows مثلا winmain في بعض الكمبايلرات وفي بعضها الآخر main بحيث يضمن أن برنامجك سيعمل
      ----------------------------
      داخل الحاصرتين اكتب الآتي قبل كل شيء
      allegro_init(); // start
      ثم نختار عدد الألوان الذي نريد
      set_color_depth(8); // 256 colors
      أو
      set_color_depth(16); // 16-bit colors
      ثم نحجز شاشة رسومية بالأمر
      set_gfx_mode(GFX_AUTODETECT_FULLSCREEN , 320, 200, 0, 0); // hmm
      أو
      set_gfx_mode(GFX_SAFE , 320, 200, 0, 0); // hmm
      الأولى تحجز شاشة على fullscreen والثاني fullscreen أو عادي بس آمن يعني دايما تعمل
      طبعا ليس كل الكروت تدعم كل ال resulutions لذلك يجب أن نفحص هل ذلك جائز أي يصبح الكود
      // now try full secreen with acceleration
      if (set_gfx_mode(GFX_AUTODETECT_FULLSCREEN , 320, 200, 0, 0) != 0) // test
      {
      // if fail try safe (may be windowed mode)
      if (set_gfx_mode(GFX_SAFE , 320, 200, 0, 0) != 0)
      {
      // if fail return to text mode and exit
      set_gfx_mode(GFX_TEXT, 0, 0, 0, 0);
      // the format of allegro_message is like printf
      allegro_message("Unable to set any graphic mode\n%s\n", allegro_error);
      exit(1);
      }
      }
      لم تنجح معي أن أجعلها تبدو صحيحة لذا أنظر الملف المرفق g_main.cpp في init_graph()
      طبعا تستطيع استبدال 320 و 200 ب 640 و 480 او أي شي آخر
      ----------------------------------
      مذا لدينا الآن ؟
      شاشة رسومية , نستطيع الآن نعطي الأوامر التي ترسم
      --------------------
      سأكمل فيما بعد ...
      انظر ال demo
      -------------------------------------------------------------------------
      الملفات المرفقة الملفات المرفقة
      • نوع الملف: zip game1.zip‏ (4.0 كيلوبايت, المشاهدات 58)

    2. #2
      التسجيل
      14-01-2003
      المشاركات
      396
      المواضيع
      55
      شكر / اعجاب مشاركة
      أين كنا ... أه
      نستطيع أن نرسم الأشياء الآن
      putpixel(screen,x,y,makecol(255,0,0)); // red dot
      لاحظ makecol تعطيها R G B فتعطيك اللون بغض النظر هل الشاشة 256 لون أم 16 بت
      بنفس الطريقة getpixel تعطي اللون
      وأيضا
      line (screen,x1,y1,x2,y2,makecol(0,0,255)); //blue line
      rect(screen,x1,y1,x2,y2,makecol(255,255,255)); // white rect
      triangle(screen,x1,y1,x2,y2,x3,y3,makecol(0,255,0); // a green triangle
      وهناك مضلع ودوائر ....
      واذا اردت أ، ترسم على Bitmap بدل الشاشة استبدل screen باسم الBitmap
      أقصد بال Bitmap هو مكان في الذاكرة يمكنك أ، تخزن فيه صور

      screen هي Bitmap معرف داخل allegro كل ما يرسم فيها يظهر على الشاشة
      في نظام 256 لون تعمل pal عن طريق
      PALETTE pal1
      تستطيع تحميل ملفات tga bmp lbm pcx عن طريق load_bitmap
      BITMAP *mypic=load_bitmap("C:\\delme.bmp",pal1); // hmm
      وتستطيع تفعيله ال pal عن طريق اذا كانت الصورة 256 لون
      set_palette(pal1); // aaa
      -----------------------
      لمسح الشاشة
      clear_bitmap(screen); // woo
      ولطلاء الشاشة بلون
      clear_to_color(screen,makecol(255,255,0)); // haha
      -------------------------------------

    3. #3
      التسجيل
      14-01-2003
      المشاركات
      396
      المواضيع
      55
      شكر / اعجاب مشاركة

      وقت الجد

      كل الذي مضى لم يكن مهما جدا لأنه من النادر أن نستعمله أما الآن فهذه الأوامر هي التي يجب تذكرها
      وهو blit وفيرحاناته المختلفة وهي
      blit masked_blit streach_blit وأخيرا masked_streach_blit
      وصيغتها كالآتي
      لنفرض أنك تريد أن ترسم صورة محملة من ملف bmp على الشاشة
      blit(Mybmp, screen, 0, 0, x,y, width, height); // Hmm
      اما masked فتعني أن تجعل الخلفية شفافة

      اللون الشفاف هو أول لون في pal أي 0 في حالة 256 لون
      وهو أيضا الزهري السحري 255,0,255 في طور الألوان الحقيقية

      وstreach تعني مع تغير الشكل

    4. #4
      التسجيل
      04-11-2001
      الدولة
      U.A.E
      المشاركات
      4,196
      المواضيع
      67
      شكر / اعجاب مشاركة
      شكراً لك على الدرس ":"

    5. #5
      التسجيل
      22-08-2001
      الدولة
      المملكة العربية السعودية
      المشاركات
      2,655
      المواضيع
      141
      شكر / اعجاب مشاركة
      اذا ماكنت مخطئ هذا لغة C ؟

    6. #6
      التسجيل
      21-07-2002
      الدولة
      KuwaiT
      المشاركات
      344
      المواضيع
      12
      شكر / اعجاب مشاركة
      شكر ا اخي على الشرح ولكن اتمنى ان تضع كود كل درس في المرفقات

      لان شكل هذه الاكواد في المنتدى ( تعقد ) :0)


      شكرا للمره الثانيه

    7. #7
      التسجيل
      04-11-2001
      الدولة
      U.A.E
      المشاركات
      4,196
      المواضيع
      67
      شكر / اعجاب مشاركة
      الرسالة الأصلية كتبت بواسطة كاسر الألعاب
      اذا ماكنت مخطئ هذا لغة C ؟
      إنت مخطىء هذه ليست لغة ال C إنما مكتبة ال Allegro

    8. #8
      التسجيل
      14-01-2003
      المشاركات
      396
      المواضيع
      55
      شكر / اعجاب مشاركة

      نعم ولا

      الكود ++C نعم صحيح و السي كما نعلم تحتوي على الكثير من المكتبات مثل iostream.h و stdio.h و غيرها هذا الكود عبارة عن ++C ولكنه يستخدم مكتبة allegro.h
      يبدأ ب include "allegro.h #
      -----------
      انظر الدرس رقم صفر

    ضوابط المشاركة

    • لا تستطيع إضافة مواضيع جديدة
    • لا تستطيع الرد على المواضيع
    • لا تستطيع إرفاق ملفات
    • لا تستطيع تعديل مشاركاتك
    •