موضوع: كيفية برمجة القائمة الرئيسية في xna

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

    كيفية برمجة القائمة الرئيسية في xna

    مرحبا مبرمجي XNA الأكارم :
    اقدم لكم جزء مبسط من تصميم اللعبة من البداية وهي أضافة القائمة الرئيسية للألعاب المصممة بـ XNA

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

    using Microsoft.Xna.Framework;
    using Microsoft.Xna.Framework.Audio;
    using Microsoft.Xna.Framework.Content;
    using Microsoft.Xna.Framework.Graphics;
    using Microsoft.Xna.Framework.Input;
    using Microsoft.Xna.Framework.Storage;
    using System;
    using System.Collections.Generic;
    using XnaGraphicEngine.Game;
    using XnaGraphicEngine.Graphics;
    using Texture = XnaGraphicEngine.Graphics.Texture;
    using Model = XnaGraphicEngine.Graphics.Model;
    using XnaGraphicEngine.Helpers;
    using XnaGraphicEngine.GameScreens;
    using XnaGraphicEngine.Sounds;
    using XnaGraphicEngine.Properties;
    //ادخال مكتبات xna للأستدعائها عند البرمجة وهي مهمة جداً للتنفيذ بشكل سلس بدون أية أخطاء


    namespace XnaGraphicEngine
    //تحديد اسم المشروع في بداية البرمجة
    {


    public class YourGame : BaseGame
    // تحديد اسم الكلس الأول للبرمجة مكونات المشروع المراد عمله
    {
    #region Variables
    /// <summary>
    /// من هنا اضافة تعريف المكونات ظهور الشاشة الأولى
    /// وهذا هو منطق اللعبة من البداية
    /// </summary>

    private Stack<IGameScreen> gameScreens = new Stack<IGameScreen>();

    /// <summary>
    ///طريقة تحميل القائمة الرئيسية للعبة
    /// </summary>

    public Texture mainMenuTexture = null,
    mouseCursorTexture = null;

    // انشاء متغير للظهور الماوس على الشاشة
    public Texture hudTopTexture = null,
    // انشاء متغير عند الضغط على الماوس
    hudBottomTexture = null;


    #region Constructor
    /// <summary>
    /// كود انشاء اللعبة
    /// </summary>

    public YourGame()
    {
    // برمجة عدم تفعيل ظهور الماوس عند ظهور القائمة الرئيسية للعبة

    this.IsMouseVisible = false;

    }


    #region Initialize
    /// <summary>
    /// اضافة مكونات اللعبة وتحميل التحكمات الرئيسية للعبة
    /// </summary>

    protected override void Initialize()
    {
    base.Initialize();

    //اظهار مؤشر الماوس في الوسط الشاشة
    Input.Update();
    Input.MousePos = new Point(
    Window.ClientBounds.X + width / 2,
    Window.ClientBounds.Y + height / 2);
    Input.Update();

    // تحميل صورة القائمة مع صورة الماوس
    mainMenuTexture = new Texture("XNA2");
    mouseCursorTexture = new Texture("MouseCursor");
    hudTopTexture = new Texture("HudTop");
    hudBottomTexture = new Texture("HudBottom");

    //هنا اضافة اظهار القائمة الرئيسية
    gameScreens.Push(new MainMenu());
    // اضافة بداية اللعبة
    //gameScreens.Push(new Mission());
    //inGame = true;

    // وهنا اضافة الصوت للعبة وهو الموسيقى
    Sound.StartMusic();
    } // Initialize()
    #endregion



    /// <summary>
    /// تفعيل الموسيقى تشغيل او اغلاق
    /// </summary>

    public void ToggleMusicOnOff()
    {
    if (GameSettings.Default.MusicOn)
    Sound.StopMusic();
    else
    Sound.StartMusic();
    }


    //اضافة شاشة المقدمة للعبة
    static bool inGame = false;

    public static bool InGame
    {
    get
    {
    return inGame;
    }
    }

    /// <summary>
    /// حجز مكان للذاكرة للظهور اول شاشة
    /// </summary>

    /// <param name="newGameScreen">New game screen</param>
    public void AddGameScreen(IGameScreen newGameScreen)
    {
    gameScreens.Push(newGameScreen);

    inGame = newGameScreen.GetType() == typeof(Mission);
    }



    /// <summary>
    /// عملية ازاحة اومسح الشاشة الحالية للأفراغ الذاكرة
    /// </summary>

    public void RemoveCurrentGameScreen()
    {
    gameScreens.Pop();

    inGame = gameScreens.Count > 0 &&
    gameScreens.Peek().GetType() == typeof(Mission);
    }



    /// <summary>
    /// هنا يتم اضافة رسم القائمة الخلفية اللعبة
    /// </summary>

    public void RenderMenuBackground()
    {
    // ادخال ظهور صورة القائمة الرئيسية شفافة امام النص .
    BaseGame.EnableAlphaBlending();
    // تحديد وضع امداد الصورة على كامل الشاشة
    mainMenuTexture.RenderOnScreen(
    BaseGame.ResolutionRect,
    new Rectangle(0, 0, 1024, 768));
    }


    public static void RenderGameBackground()
    {
    //TODO
    }


    // هنا يتم اضافة ازرار او كبسات للقائمة
    public bool RenderMenuButton(
    MenuButton buttonType, Point pos)
    {
    //امكنة ظهور الضغط الزر على الشاشة
    Rectangle rect = new Rectangle(
    pos.X * BaseGame.Width / 1024,
    pos.Y * BaseGame.Height / 768,
    200 * BaseGame.Width / 1024,
    77 * BaseGame.Height / 768);


    Rectangle innerRect = new Rectangle(
    rect.X, rect.Y + rect.Height / 5,
    rect.Width, rect.Height * 3 / 5);
    bool highlight = Input.MouseInBox(

    innerRect);
    // هنا يتم أضافة اصوات النقرات للقائمة
    if (highlight &&
    Input.MouseWasNotInRectLastFrame(innerRect))
    Sound.Play(Sound.Sounds.Highlight);


    int buttonNum = (int)buttonType;


    Rectangle pixelRect = new Rectangle(3 + 204 * buttonNum,
    900 + 80 * (highlight ? 1 : 0), 200, 77);

    //هنا يتم الرسم للقائمة وهي الصورة القائمة

    mainMenuTexture.RenderOnScreen(rect, pixelRect);


    bool ret =
    (Input.MouseLeftButtonJustPressed ||
    Input.GamePadAJustPressed) &&
    this.IsActive &&
    highlight;

    if (buttonType == MenuButton.Back &&
    Input.GamePadBackJustPressed)
    ret = true;
    if (buttonType == MenuButton.Missions &&
    Input.GamePadStartPressed)
    ret = true;

    if (ret == true)
    Sound.Play(Sound.Sounds.Click);


    return ret;
    }



    /// <summary>
    /// هنا يتم رسم الماوس على الشاشة
    /// </summary>

    public void RenderMouseCursor()
    {


    int mouseAnimationStep = (int)(BaseGame.TotalTimeMs / 100) % 4;

    mouseCursorTexture.RenderOnScreen(
    new Rectangle(Input.MousePos.X, Input.MousePos.Y, 60 * 2 / 3, 64 * 2 / 3),
    new Rectangle(64 * mouseAnimationStep, 0, 60, 64));

    SpriteHelper.DrawSprites(width, height);

    }


    // أستدعاء الدالة update لحركة الأطارات frame 60 مرة لكل ثانية تقريباً
    protected override void Update(GameTime gameTime)
    {

    if (gameScreens.Count > 0 &&
    gameScreens.Peek().Quit)
    RemoveCurrentGameScreen();
    // ازالة مكان للذاكرة عند الخروج من القائمة الحالية
    if (gameScreens.Count == 0)
    {

    if (this.GetType() != typeof(TestGame))

    Exit();
    }

    base.Update(gameTime);
    } // للتحديث الرسم



    protected override void Draw(GameTime gameTime)
    {
    ClearBackground();
    // لمسح الشاشة لأضافة رسم المكونات والصور والتأثيرات effect
    // هنا يتم رسم التأثيرات الشيدر على الشاشة الرئيسية
    BaseGame.GlowShader.Start();

    try
    {

    if (gameScreens.Count > 0)
    gameScreens.Peek().Run(this);
    }
    catch (Exception ex)
    {
    Log.Write("Failed to execute " + gameScreens.Peek().Name +
    "\nError: " + ex.ToString());
    }

    base.Draw(gameTime);

    // يتم أظهار الماوس
    if (inGame == false &&
    gameScreens.Count > 0)
    RenderMouseCursor();
    else
    {
    // في بداية اي لعبة يجب اظهار الماوس في الوسط
    Input.CenterMouse();
    }

    // وهنا يتم اظهار التاثير الثنائي والثلاثي البعد للشيدر على الشاشة
    glowShader.Show();
    }



    /// <summary>
    /// وهنا يتم اضافة بداية تحميل اللعبة
    /// </summary>

    public static void StartGame()
    {
    using (YourGame game = new YourGame())
    {
    game.Run();
    }
    GameSettings.Save();
    {
    {
    {















    وهذه نبذة مختصرة للقائمة الرئيسية عند الدخول للعبة من البداية

    وهذا مثال يوضح ذلك :
    http://rapidshare.com/files/28885845...NA.ccgame.html

    قبل تشغيل المثال يجب عليك تنزيل النسخة الأحدث من XNA 3.1 لتشغيلها بالشكل الصحيح ....

    او تحميل البرنامج : XNA Framework Redistributable 3.1

    http://www.microsoft.com/downloads/d...1-98eb3e799ef2

    والبقية الشرح على مراحل في هذا الموضوع هنا

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


    تعلم أساسيات لغة #C أولاً
    اذا لم تكن تعرف عن اوامر #C اساساً اليك السلسلة التعليمية وباللغة العربية لـ #C فقط
    واليكم الكتاب الكامل لتعليم #C باللغة العربية
    http://rapidshare.com/files/28890320..._____.rar.html

    والكتاب الكامل لتعليم XNA 3.0 باللغة الأنجليزية
    http://rapidshare.com/files/28890439...A_3.0.rar.html



    ترقبونا دائماً كل ما هو جديد من دروس
    XNA
    أخر تعديل بواسطة omarzonex في 06 / 10 / 2009 الساعة 11:57 AM


  2. #2
    عضو
    صور رمزية A.H.M
    تاريخ التسجيل
    Jun 2008
    المنطقة
    الاردن-ابو نصير
    العمر
    24
    ردود
    104
    شكراً يا اخي الدرس رائع
    ................................
    إذا أردت أن تعصي الله
    فاختبئ في مكان لا يراك الله فيه ..


    إذا أردت أن تعصي الله ..
    فلا تعصه فوق أرضه ..


    إذا أردت أن تعصي الله ..
    فلا تأكل من رزقه ..


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

    استخدمت الشرح بشكل سريع وبعيد عن الألغاز المستخدمة لدى جميع المبرمجين بشكل مبسط ومدلول العبارات البرمجية
    -----------------------------------------------------------------------
    namespace nameprojecthere.Sounds
    //xna هنا نكتب اسم كلس الصوت لأستخدامه في مكتبة الأستدعاء في
    {
    /// <summary>
    /// الصوت
    /// </summary>
    class Sound
    {

    /// <summary>
    /// XActمتغير فلترة الصوت عن طريق
    /// </summary>

    static AudioEngine audioEngine;
    /// <summary>
    /// استخدام مكتبة تحويل الصوت الى وايف
    /// </summary>

    static WaveBank waveBank;
    /// <summary>
    /// استخدام مكتبة تحويل الصوت
    /// </summary>

    static SoundBank soundBank;

    static AudioCategory musicCategory;

    /// <summary>
    /// اضافة متغيرات انواع الصوت
    /// </summary>
    /// <returns>Enum متغير </returns>

    public enum Sounds
    {
    Defeat,
    EMP,
    EnemyShoot,
    Explosion,
    GattlingShoot,
    Health,
    MgShoot,
    PlasmaShoot,
    Victory,
    GameMusic,
    Click,
    Highlight,
    } // اصوات المتغير



    /// <summary>
    /// من هنا يتم انشاء الصوت
    /// </summary>

    static Sound()
    {

    try
    {
    string dir = Directories.SoundsDirectory;
    audioEngine = new AudioEngine(
    Path.Combine(dir, "XnaShooter.xgs"));
    waveBank = new WaveBank(audioEngine,
    Path.Combine(dir, "Wave Bank.xwb"));

    // يجب اضافة اعلان عن متغير استخدام صوت معين عند الأستدعاء فقط
    // xna ويستعمل هذا المتغير داخل
    if (waveBank != null)
    soundBank = new SoundBank(audioEngine,
    Path.Combine(dir, "Sound Bank.xsb"));

    // أضافة متغير لمكونات الصوت مثل اعلاء حجم الصوت او ايقافه عند استدعاء المتغير
    musicCategory = audioEngine.GetCategory("Music");
    } // يتم اضافة اعلان متغير لمنعه من حدوث خطأ عشوائي
    catch (Exception ex)
    {
    // اضافة تحذير معين لحدوث خطأ في اصدار الصوت
    Log.Write("Failed to create sound class: " + ex.ToString());
    } // استثناء لحدوث أخطاء في أخراج الصوت
    }



    /// <summary>
    /// من هنا يتم تشغيل الصوت
    /// </summary>

    public static void Play(string soundName)
    {
    if (soundBank == null)
    return;
    // هنا وضع متغير التنبؤ بحدوث خطأ معين
    try
    {
    soundBank.PlayCue(soundName);
    } // ويتم تأكيد حدوث خطأ عند التنبؤ به بشكل اوتوماتيكي والأعلان عنه
    catch (Exception ex)
    {
    Log.Write("Playing sound " + soundName + " failed: " + ex.ToString());
    }
    }

    /// <summary>
    /// تعريف المتغير لتشغيل الصوت
    /// </summary>

    public static void Play(Sounds sound)
    {
    Play(sound.ToString());
    } //يتم تجهيز نوع الصوت


    /// <summary>
    /// هنا يتم برمجة بتغير نوعية الصوت
    /// </summary>

    public static void PlayDefeatSound()
    {
    Play(Sounds.Defeat);
    }

    /// <summary>
    /// يتم برمجة سرعة الصوت
    /// </summary>

    public static void PlayVictorySound()
    {
    Play(Sounds.Victory);
    }

    /// <summary>
    /// هنا يتم وضع تأثير انفجار للصوت
    /// </summary>

    public static void PlayExplosionSound()
    {
    Play(Sounds.Explosion);
    }



    /// <summary>
    /// من هنا يتم وضع تشغيل الموسيقى للعبة
    /// </summary>

    public static void StartMusic()
    {
    Play(Sounds.GameMusic);
    }

    /// <summary>
    /// هنا يتم ايقاف صوت الموسيقى
    /// </summary>

    public static void StopMusic()
    {
    musicCategory.Stop(AudioStopOptions.Immediate);
    }



    /// <summary>
    /// عمل ابديت للصوت عند التحديث لكل ثانية
    /// </summary>

    public static void Update()
    {
    if (audioEngine != null)
    audioEngine.Update();
    }

    /// <summary>
    /// gamepad تجربة الصوت الأبتدائي عند الضغط في التحكمات الكيبورد والماوس ان وجد
    /// </summary>

    public static void TestPlaySounds()
    {
    TestGame.Start(
    delegate
    {
    if (Input.MouseLeftButtonJustPressed ||
    Input.GamePadAJustPressed)
    Sound.Play(Sounds.Defeat);
    else if (Input.MouseRightButtonJustPressed ||
    Input.GamePadBJustPressed)
    Sound.Play(Sounds.Victory);
    else if (Input.KeyboardKeyJustPressed(Keys.D1))
    Sound.Play(Sounds.GameMusic);
    else if (Input.KeyboardKeyJustPressed(Keys.D2))
    Sound.Play(Sounds.EnemyShoot);
    else if (Input.KeyboardKeyJustPressed(Keys.D3))
    Sound.Play(Sounds.Explosion);
    else if (Input.KeyboardKeyJustPressed(Keys.D4))
    Sound.Play(Sounds.Health);
    else if (Input.KeyboardKeyJustPressed(Keys.D5))
    Sound.Play(Sounds.PlasmaShoot);
    else if (Input.KeyboardKeyJustPressed(Keys.D6))
    Sound.Play(Sounds.MgShoot);
    else if (Input.KeyboardKeyJustPressed(Keys.D7))
    Sound.Play(Sounds.GattlingShoot);
    else if (Input.KeyboardKeyJustPressed(Keys.D8))
    Sound.Play(Sounds.EMP);
    else if (Input.KeyboardKeyJustPressed(Keys.D9))
    Sound.Play(Sounds.Click);
    else if (Input.KeyboardKeyJustPressed(Keys.D0))
    Sound.Play(Sounds.Highlight);
    //موضع اماكن الضغط في التحكمات
    TextureFont.WriteText(2, 30,
    "Press 1-0 or A/B or left/right mouse buttons to play back " +
    "sounds!");
    });
    }
    }
    }

    -------------------------------------------------------------------------
    ملاحظة هامة :
    لقد وضعت الشرح هكذا لحفاظاً على التنسيق اذا كنت تريد ان تعمل نسخ ولصق الكود لتجربته لكي لا تظهر عندك أخطاء تذكر ....
    حاول ذلك وسوف ترى النتيجة جيدة عند لصقها في البرمجة المحرك xna


    تابعوا معنا الدرس القادم عما قريب ان شاء الله


  4. #4
    مشرف منبر Games Design
    صور رمزية general1
    تاريخ التسجيل
    Jun 2007
    ردود
    1,066
    الدرس رائع و جزاك الله خيرا
    Egypt


    I Love Direct-X

    سبحان الله و بحمده سبحان الله العظيم
    اللهم صلي وسلم و بارك علي سيدنا محمد

  5. #5
    عضو متميز
    صور رمزية ابو ياسر1
    تاريخ التسجيل
    Dec 2008
    المنطقة
    الرياض
    العمر
    32
    ردود
    1,347
    شكراً يا اخي على الدرس
    يقال ان العباس رضي الله عنه فقد بصره في اخر حياته
    فقال:
    ان ياخذ الله من عيني نورهما فان قلبي مضئ مابه ضرر
    ارى بقلبي دنياي واخرتي والقلب يبصر مالا يبصرالبصر.


    " عضو في نادي محبي البطاطا "



    ما أجمل المنابر بدون أطراف الحديث كم من الأخوة خسرناهم بسببه
    غائب للابد
    امحو ذنوبك في دقيقتين
    http://www.shbab1.com/2minutes.htm


  6. #6
    عضو متميز
    صور رمزية omarzonex
    تاريخ التسجيل
    Jan 2009
    المنطقة
    نبض قلبي- فلسطين
    ردود
    6,684
    الدرس الثالث :
    مرحبا أخواني في هذا الدرس نتعلم بالتفصيل أكثر مما سبق لتعميق الفكرة أكثر وأوضح ....
    بسم الله نبدأ /
    عند كتابة الكلاس للعبة يجب ان تحتوي على جملة 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);
    }





  7. #7
    عضو
    صور رمزية LordShadow
    تاريخ التسجيل
    Aug 2009
    المنطقة
    الجزائر
    ردود
    116
    وأخيرا واحد يساعد جنرال 1 لنشر الـ xna وتعلم مبادئه
    سبحان الله وبحمده * سبحان الله العظيم


  8. #8
    عضو نشيط
    صور رمزية Virtools
    تاريخ التسجيل
    Jul 2008
    المنطقة
    الإمارات العربية المتحدة
    العمر
    27
    ردود
    702
    بصراحة...

    ما فهمت شيء...

    لو تكتبه لي في الوورد أو pdf أكون شاكر

    لأني صدق ما فهمت شي

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

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

    ابقوا معنا في نزول الكتاب الجديد لتعليم xna

  10. #10
    عضو نشيط
    صور رمزية Virtools
    تاريخ التسجيل
    Jul 2008
    المنطقة
    الإمارات العربية المتحدة
    العمر
    27
    ردود
    702
    مثل ما تبي اخوي



    موفق وانتظر الدروس
    Back to Game Developing

  11. #11
    عضو متميز
    صور رمزية kakarot
    تاريخ التسجيل
    Dec 2007
    المنطقة
    الأردن
    ردود
    1,174
    بارك الله فيك الدرس من النظرة الأولى السريعة سهل نوعاً ما والكود ............ أقراءه بالتفصيل ثم اوفيك بالنتائج

    شكراً لك ولكتاب xna ^_^

  12. #12
    ممتاز الله يوفق مع اني عملت علي xna علي العاب 2d ولكن هناك برامج تتعامل مع ال 3d اقوي منها مثل اليونتي

  13. #13
    جزاك الله كل خير يا غالي
    ولكن ارجح عمل الدروس فى كتاب pdf او جمعها فى ملف doc افضل
    حتى يكون الموضوع بشكل افضل

  14. #14

Bookmarks

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

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