Unconfigured Ad Widget

تقليص

إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

شرح مبسط وسريع لكيفية اضافة الصور xna

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • شرح مبسط وسريع لكيفية اضافة الصور xna

    الدرس الثالث :
    مرحبا أخواني في هذا الدرس نتعلم بالتفصيل أكثر مما سبق لتعميق الفكرة أكثر وأوضح ....
    بسم الله نبدأ /
    عند كتابة الكلاس للعبة يجب ان تحتوي على جملة namespace على اسم اللعبة , يمكن ان نعرف المتغيرات الذي نريد ان تكون مرئية امامك في الكود الحالي في بداية الكلاس توجد مولدات للكلاس بشكل آلي باسم procesdures الذي تكون داخل كلاس اللعبة وهي Game1.cs ويعرف بـــ:

    public class Game1 : Microsoft.Xna.Framework.Game
    {
    GraphicsDeviceManager graphics;
    ContentManager content ;

    private SpriteBatch spriteBatch;
    private Texture2D tiledSprite;
    مثال على ذلك اذا كنت تريد تحميل صورة معينة ستحتاج كائنين معرفين ضمن xna الأول Texture2D
    سنستعمله لكي نحمل الصورة الذي تحوي Sprites الكائن الثاني هو spritebatch الذي يتحكم بعرض الـsprites للصور , ثم نبدء بالتعريف الكلاس في الجزء المخصص للتعريفات الكائن والمتغير
    بعد تعريف الكلاس يتم حجز ذاكرة له او الأعلان عنه في الأمر :
    protected override void Initialize()
    {
    // TODO: Add your initialization logic here
    spriteBatch = new SpriteBatch(graphics.GraphicsDevice);
    والسطر اعلاه سيؤدي الى تنفيذ Constructor للكلاس spritebatch ليجعل المتغير spritebatch مسؤولاً عن عرض السبريتات

    سيتم رسم الصورة في draw المخصص لذلك
    protected override void Draw(GameTime gameTime)
    {
    graphics.GraphicsDevice.Clear(Color.CornflowerBlue);
    // TODO: Add your drawing code here
    spriteBatch.Begin();
    spriteBatch.Draw(tiledSprite, new Rectangle(0, 0, 512,512),
    Color.White);
    spriteBatch.End();
    base.Draw(gameTime);
    }
    صيغة الأمر draw لـ spritebatch يأخذ الأمر كوسيط أول , و الأمر rectangle كوسيط ثاني حيث يمثل المكان الذي للصور ان تظهر به وهو الأحداثي 0,0 والطول والعرض الذي نريد للصورة ان تظهر كاملة بالأحداثي 512,512 اعلاه

    وهذا مثال مبسط وان شاء الله نشرح المزيد منه في الدروس القادمة ...........

    بعد ذلك يتم تكوين كلاس للعبة وهي instance
    public Game1()
    {
    graphics = new GraphicsDeviceManager(this);
    content = new ContentManager(Services);
    }

    وهذا procedures سنتفذ كل الجمل به وعند البدء ترى يتم تكوين جملتين متولدتين من قبل #C
    وفي السطر الأول ترى كلمة DEVICE MANAGER تسند الى المتغير من نوع GraphicsDeviceManager وهو أصلاً كلاس مبرمج من قبل #C وهو يقوم بعمل تحديد بأبعاد الشاشة وغيرها .
    اما بالنسبة content manager وهو لغرض الترتيب بين العناصر بمعنى مختصر اذا كنت تحميل صورة معينة داخل اللعبة وهذا الأمر ستقوم بأستدعاء ملف الصورة من خلال هذا الكود ونفس الشئ لكل الصور والمجسمات والأصوات تقوم بتحميلها داخل solution explorer ويقوم XNA بدمجها في المشروع وأعطائها كود معين ......

    والأن الى جملة Initialize وهي ان تقوم بشحن مكونات اللعبة او أعطائها قيمة أولية
    protected override void Initialize()
    {
    // TODO: Add your initialization logic here
    base.Initialize();
    }

    والآن الى الأمر LoadContent وهو يقوم بتحميل الصور والمجسمات والأصوات وغيرها
    protected override void LoadContent()

    {
    // TODO: Load any content

    }


    والأمر الأخر هو unloadContent وهو يقوم بتفريغ الذاكرة من مكونات اللعبة الصور والأصوات والمجسمات
    protected override void UnloadContent()

    {
    // TODO: Unload any content
    content.Unload();
    }

    الأمر update gametime وهو ادخال قيم متغيرات معينة مثل اعطاء المجسم احداثيات س وص x,y وفيه وضع التحكمات للماوس والكيبورد والجويستيك
    protected override void Update(GameTime gameTime)
    {

    // هنا يتم الخروج من اللعبة اذا تريد ذلك
    // Allows the game to exit

    if (GamePad.GetState(PlayerIndex.One).Buttons.Back ==
    ButtonState.Pressed)
    this.Exit();
    // هنا يتم ادخال التحكمات
    // TODO: Add your update logic here
    base.Update(gameTime);
    }


    الأمر Draw وهو يتم رسم العناصر المطلوبة من تأثيرات ومجسمات وغيرها
    والأمر graphics.GraphicsDevice.Clear(Color.CornflowerBlue يوجه أمر معين الى كرت الشاشة لمسح الشاشة باللون الأزرق ويعطيك #C اوامر جاهزة للألوان المدموجة معه وهو color وهي خاصية auto Complete ,وهي خاصية رائعة جداً تساعدك على التذكير الألى وهي تفيد المبرمجين بشكل خاص لتنفيذ أوامرهم بسرعة بدون تذكر من المبرمج .....
    protected override void Draw(GameTime gameTime)
    {
    graphics.GraphicsDevice.Clear(Color.CornflowerBlue);
    // هنا يتم اضافة الكود
    // TODO: Add your drawing code here
    base.Draw(gameTime);
    }

  • #2
    مشكور أخوي ...والله كمان لازم من زمان هذه الدروس.....بس دير بالك تكون الدروس منقولة :@

    <<Nobody>> سابقاً

    تعليق


    • #3
      مرحباً أخي :

      اشكرك على متابعتك للدروس xna , والله هذه الدروس انا صممتها وبرمجتها بنفسي وشرحت شرحاً موجز بعيداً عن الأشياء المبهمة ....

      لأنني الآن متقن جيداً #C و XNA برتبة أمتياز وذلك بفضل الكتب الأجنبية الذي عن طريقها تعلمت الطرق والسهلة والصعبة

      اذا بدك كمان عندي بعض الأمثلة صممتها بدون مساعدة خارجية ( تجربة ذاتية ناجحة )

      اذا بدك تسأل أسال خبير ولا تسأل طبيب بعيداً عن وجع الراس ههههههههه

      ولا تنسى انني من أوائل المبرمجين في #C و XNA ايام ولادتها XNA عام 2006

      تعليق


      • #4
        المشاركة الأصلية بواسطة omarzonex مشاهدة المشاركة
        مرحباً أخي :

        اشكرك على متابعتك للدروس xna , والله هذه الدروس انا صممتها وبرمجتها بنفسي وشرحت شرحاً موجز بعيداً عن الأشياء المبهمة ....

        لأنني الآن متقن جيداً #C و XNA برتبة أمتياز وذلك بفضل الكتب الأجنبية الذي عن طريقها تعلمت الطرق والسهلة والصعبة

        اذا بدك كمان عندي بعض الأمثلة صممتها بدون مساعدة خارجية ( تجربة ذاتية ناجحة )

        اذا بدك تسأل أسال خبير ولا تسأل طبيب بعيداً عن وجع الراس ههههههههه

        ولا تنسى انني من أوائل المبرمجين في #C و XNA ايام ولادتها XNA عام 2006
        مشكور اخي علي مجهودك في تعليم xna
        بس بما انك خبير في اللغة السي شارب و خصوصا xna لية متعملش كتاب احترافي بالعربي انا من رائي دة حيكون افيد من الدروس المتقطعة دية الي ممكن يجي وقت و تتوقف عن عملها لاي سبب كان
        التعديل الأخير تم بواسطة soko 2009; 08 / 10 / 2009, 08:35 PM.
        ايميلي لمن يريد التواصل:
        shkofopo@yahoo.com


        I LOVE UNITY3D AND PHP AND CRACK AND BOOK EN


        انطلق نحو افاق واسعة من لا نهاية

        تعليق


        • #5
          شكرا جزيلا لك على جهدك
          سبحان الله وبحمده * سبحان الله العظيم

          تعليق

          يعمل...
          X