public class Game
{
bool InMenu; // هل البرنامج في القائمة الرئيسة؟
int MenuSelection; // الخيار الحالي في القائمة الرئيسة
int PlayerX; // إحداثي البطل على المحور السيني
int PlayerY; // إحداثي البطل على المحور الصادي
int PlayerLife; // طاقة البطل المتبقية
// هذا الإجراء يتم نداؤه في كل لقطة لمعالجة اللعبة
public void Game_Update()
{
if (InMenu)
{
if (KeyDown(Keys.Up))
MenuSelection = MenuSelection + 1;
if (KeyDown(Keys.Down))
MenuSelection = MenuSelection - 1;
if (KeyDown(Keys.Space))
{
if (MenuSelection == 0)
ExitGame(); // الخروج من البرنامج
else InMenu = false; // توجه إلى اللعبة
}
}
else // ليس في القائمة الرئيسية، إذن نحن في اللعبة
{
if (KeyDown(Keys.Left))
PlayerX = PlayerX - 1;
if (KeyDown(Keys.Right))
PlayerX = PlayerX + 1;
.
.
.
// كود كشف التصادم وتجميع الجواهر
.
.
// في النهاية
if (PlayerLife == 0)
InMenu = true; // مات البطل. عد إلى القائمة الرئيسية
}
}
}
public enum States
{
ContinueSameState,
MainMenu,
Gameplay,
Exit,
}
// هذا الصنف يمثل القائمة الرئيسية
public class MenuState : State
{
int MenuSelection; // الخيار الحالي في القائمة الرئيسة
public override States GameUpdate()
{
if (KeyDown(Keys.Up))
MenuSelection = MenuSelection + 1;
if (KeyDown(Keys.Down))
MenuSelection = MenuSelection - 1;
if (KeyDown(Keys.Space)) // ضغط زر المسافة، انتقل للحالة المناسبة
{
if (MenuSelection == 0)
return States.Exit; // الخروج من البرنامج
else return States.Gameplay; // توجه إلى اللعبة
}
else return States.ContinueSameState; // وإلا استمر في نفس الحالة
}
}
// هذا الصنف يمثل لعب مرحلة
public class GameplayState
{
int PlayerX; // إحداثي البطل على المحور السيني
int PlayerY; // إحداثي البطل على المحور الصادي
int PlayerLife; // طاقة البطل المتبقية
public override States GameUpdate()
{
if (KeyDown(Keys.Left))
PlayerX = PlayerX - 1;
if (KeyDown(Keys.Right))
PlayerX = PlayerX + 1;
.
.
.
// كود كشف التصادم وتجميع الجواهر
.
.
// في النهاية
if (PlayerLife == 0)
return States.MainMenu; // مات البطل. عد إلى القائمة الرئيسية
else return States.ContinueSameState; // وإلا استمر في نفس الحالة
}
}
GraphicsDevice.Clear(Color.Blue);
وفي 29 يونيو 2010 12:08 ص، أعرب ahmed ezz عن رأيه بالموقف كالآتي:
ولقد قمت بانهاء مهمة "وحدة التنقل بين أجزاء اللعبة" بشكل مبدئي كما شرح الاخ وساموهذا بالطبع بعد اذن الاخ ياسر ، فلعله في انشغال هذه الاياموفي 29 يونيو 2010 08:27 م، قال ياسر أبوبكر متحمساً:
ولكن لكي أكون صريحاً أكثر أرجو منك أو من أي عضو من الأعضاء الكرام قبل أن يقوم بتنفيذ مهمة غيره بأن يطلب منه الإذن في ذلك وينتظر منه الرد وبعد ذلك يقوم بالتصرف ... فلعل هذا الشخص يقوم بإجراء تعديلات أو بتجهيز كود كان قد تعب وأضاع كثير من الوقت في كتابته وإعداده ...وهذا يقودني لإقتراح بعض الأمور في هذا المشروع وسأضيفها في مشاركة أخرى