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

ردود: 5 | زيارات: 1657
  1. #1
    عضو متميز
    صور رمزية omarzonex
    تاريخ التسجيل
    Jan 2009
    المنطقة
    نبض قلبي- فلسطين
    ردود
    6,684

    شرح مبسط وسريع لكيفية اضافة الصور 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. #2
    عضو متميز
    صور رمزية The MAS
    تاريخ التسجيل
    Apr 2009
    المنطقة
    Amman, Jordan, Jordan
    العمر
    24
    ردود
    2,132
    مشكور أخوي ...والله كمان لازم من زمان هذه الدروس.....بس دير بالك تكون الدروس منقولة :@

    <<Nobody>> سابقاً

  3. #3
    عضو متميز
    صور رمزية omarzonex
    تاريخ التسجيل
    Jan 2009
    المنطقة
    نبض قلبي- فلسطين
    ردود
    6,684
    مرحباً أخي :

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

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

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

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

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

  4. #4
    عضو فعال
    صور رمزية soko 2009
    تاريخ التسجيل
    Jun 2009
    المنطقة
    مصر
    العمر
    24
    ردود
    173
    اقتباس الموضوع الأصلي كتب بواسطة 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. #5
    عضو
    صور رمزية LordShadow
    تاريخ التسجيل
    Aug 2009
    المنطقة
    الجزائر
    ردود
    116
    شكرا جزيلا لك على جهدك
    سبحان الله وبحمده * سبحان الله العظيم


Bookmarks

قوانين الموضوعات

  • لا يمكنك اضافة موضوع جديد
  • لا يمكنك اضافة ردود
  • لا يمكنك اضافة مرفقات
  • لا يمكنك تعديل مشاركاتك
  •  
  • كود BB مفعّل
  • رموز الحالة مفعّل
  • كود [IMG] مفعّل
  • [VIDEO] code is مفعّل
  • كود HTML معطل