المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : نصائح هامة جداً لكل مستخدمي الجيم ميكر المبتدئين وحتى المحترفين



شادي الفارس
09-05-2008, 02:14 AM
نصائح هامة جداً لكل مستخدمي الجيم ميكر

الكل يعلم أن برنامج الجيم ميكر يعد من أروع البرامج من حيث سهولة التعامل معه
والأكواد الجاهزة التي فيه تقريباً تكفي كي تصنع لعبة جميلة
فما عليك إلا اختيار الكود المناسب وسحبه وإسقاطه في مكانه حتى ينفذ الأمر بدلاً من تعب كتابة الأوامر
خلافاً لبرامج صناعة الألعاب الأخرى

طبعاً هذا ليس موضوعي الذي أقدمه فالكل يعرف ذلك :p

بالرغم من سهولة التعامل مع البرنامج هناك أخطاء قاتلة :wow: لا ينتبه لها المبرمجون ويهملونها
مما يسبب الأخطاء في اللعبة مما يسبب عدم اشتغال اللعبة بالشكل الصحيح أو عدم اشتغالها بالمرة
مما يصيب بالإحباط وأحياناً كثيرة تؤدي إلى إلغاء مشروع اللعبة نهائياً
هذا هو الموضوع
قد يقول البعض أنا أعرف هذا أو ذاك ولكن لا نعرف كل شيئ يسبب الخطأ
مثال بسيط كنت أقرأ شرحاً لدرس الأكواد هنا في المنتدى للأخ العزيز باتمان 2004
وقد كتب فيه :

والآن..كيف يمكنني كتابة كود في الجيم ميكر؟؟
قبل كتابة أي كود،اتبع التعليمات الآتية:
عند كتابة الكود قم بإضافته بالشكل التالي:
{
<code>;
<code>;
}
ملاحظات:-يمكنك الاستغناء عن القوسين العلويين ({}) ولكن ألغهما معاً ولا تلغ أحدهما فقط

وهذا حسب المثال خطأ قاتل حيث يتحول المسار البرمجي المفروض كاملاً
مع احترامي وتقديري للأخ باتمان :):):)
من هنا أتت فكرتي لكتابة هذا الموضوع لذكر مسببات الأخطاء كي نستفيد منها كلنا


طبعاً أنا لاأعرفها كلها لذلك أدعوكم أخواني كي تضيفوا في هذا الموضوع ما تعرفوه
من نصائح هامة
كما أرجوا تثبيت الموضوع كي نجعل من هذا الموضوع الركيزة الأساسية لكل من يريد أن يتعلم هذا البرنامج ويصبح محترفاً فيه


أرجوا أن تكون فكرتي قد وصلت
وإليكم ما أعرفه حتى الآن من نصائح وتحذيرات
علماً بأني كل يوم أكتشف أشياء جديدة كنت غافلاً عنها قبلاً وأقع فيها
بسم الله أبتدي:
س : هذان القوسان { } ما هي أهميتهما وهل يمكن الأستغناء عنهما ومتى نحتاجهما
ج :وظيفة القوس الأول هي للدلالة على بداية تنفيذ مجموعة من الأوامر والقوس الآخر للدلالة على نهاية الأمر
يمكنك الأستغناء عنهما إذا كان مطلبك مثلاً كالتالي:
إذا حدث هذا فافعل كذا وإلا افعل ذاك
أما إذا كان مطلبك
إذا حدث هذا فافعل {كذا وكذا وكذا} وإلا افعل { ذاك وذاك}
هنا يجب أن تضع القوسين إجبارياً
ولفهم ذلك بشكل أوضح إليك المثال التالي



أردت عمل أوبجكت لكلمة السر بحيث ما إن أشغل اللعبة حتى يظهر مستطيل يطالبني
بكتابة كلمة السر فإن كانت صحيحة تظهر عبارة ok وأنتقل للغرفة التالية
وإن كانت كلمة السر خاطئة تظهر عبارة no ويغلق البرنامج



a = get_string(' password','')


Oke = 'shadi'


if a = Oke


show_message ('ok')


room_goto_next()


else


show_message ('no')


game_end()
طبعاً هذا خطأ برمجي قاتل بسببه ستظهر رسالة خطأ وتغلق اللعبة
لأن البرنامج سيجد كلمة else غير مسبوقة ب if
وذلك لأن الشرط if بنظر البرنامج انتهى بتنفيذ الأمر الذي بعده
الصحيح هو ما يلي


a = get_string(' password','')


Oke = 'shadi'


if a = Oke


{


show_message ('ok')


room_goto_next()


}


else


game_end()
في المثال الثاني قمت بإضافة القوسين { } وبذلك أخبر البرنامج أنه إذا كانت كلمة السر المدخلة صحيحة قم بإظهار رسالة صح و انتقل للغرفة التالية وإلا أغلق البرنامج
بمعنى مبسط أن البرنامج سيقوم بتنفيذ كل الأوامر المحصورة بين قوسين على أنها تكمل بعضها بعضاً
الخلاصة : إذا أردت تنفيذ أكثر من أمر دفعة واحدة فعليك حصرها بين هذين القوسين حصراً { } وليس( ) ولا<> فلكل منها دوره وأهميته

كما أنبه لو وضعت قوساً مفتوحاً فيجب أن تضع القوس الآخر بمعنى أن تغلق القوس وتنهي مجموعة الأوامر
أرجوا أن تكون الفكرة قد وصلت واعذروني إذا طال الشرح

قم بتحميل الملف test من المرفقات وجرب القرق بنفسك

شادي الفارس
09-05-2008, 02:22 AM
الخطأ القاتل الثاني

قمت بتجهيز مثالين في المرفقات
أحدهما يعمل وهو صحيح والآخر لا يعمل
مع أنهما متشابهين في كل شيئ
نفس الأكواد ونفس الحجم وكل شيئ
قم بتحميل الملف المرفق altaslsl وحاول أن تعرف أين مكمن الخطأ
إذا عرفت مكمن الخطأ بنفسك وأصلحته فأنا أشهد بمهارتك وخبرتك:kiss:

وإذا لم تعرف وهذا طبيعي جداً فعد إلى الموضوع وأكمله
أنا لاأقلل من قيمة أحد ولكن أعتقد أن الكثيرين "أمثالي"كانوا يغفلون هذا الأمر أو لا يعرفونه:02:

الخطأ القاتل الثاني :wow:هو كما أحببت أن أسميه إهمال التسلسل في الأوامر :wow:

ملاحظة هذا الأمر كنت أقع فيه دائماً حتى اكتشفته بالصدفة اليوم :(وأحببت أن أعلمه لمن لا يعلمه

في الملف الذي لا يعمل قمت بوضع الأوبجكت control الذي يحمل المتغير global.shadi
بعد أ وضعت في الروم الأوبجكت test
أي أني وضعت في الروم الأوبجكت تيست أولاً ثم كونترول ثانياً

البعض قد يقول وما الفرق في ذلك هذا عادي جداً ولا يسبب مشكلة
ولكن العكس هو الصحيح
ساعطيكم فكرة بسيطة كما استنتجتها عن عمل برنامج الجيم ميكر

يقوم البرنامج بتنفيذ الأوامر المعطاة له حسب تسلسل كتابة الأوامر إن كانت أكواد
أو إسقاطها بواسطة السحب والإفلات إن كانت من المكتبات الجاهزة أو كانت أوبجكت وتضعها في الروم

عندما بدأت اللعبة قام البرنامج أولاً بقراءة الأوبجكت test لأني وضعته أولاً ولاحظ أني أطلب قيمة من المتغير global.shadi هنا لم يكن البرنامج قد قرأ الأوبجكت control الذي يحتوي على المتغير global .shadi
أي أن البرنامج لم يحفظ في ذاكرته بعد المتغير global.shadi هنا سيقول لك البرنامج بالعربي "مين شادي هذا ما بعرفوا خيو":33:ههه:silly::silly::silly: وبيبطل يشتغل :28:
الحل
يجب أن تعلن عن المتغير أولاً ثم العناصر التي سوف تستخدم هذا المنتغير لاحقاً
وذلك بالطرق التالية
أولاً إذا كنت في أول المشروع قم بعمل أوبجكت يحتوي على كل المتغيرات الثابتة التي تحتاجها وضعه أولاً
في الروم ثم بقية الأوبجكت لاحقاً
ثانياً إذا كنت في منتصف المشروع وتريد إضافة متغير قم بعمل الأوبجكت الذي يحتوي على المتغير
وضعه في الروم ثم اضغط عليه بزر الماوس الأيمن مع مفتاح ctrl من لوحة المفاتيح فتظهر نافذة منبثقة
اختر منها الأمر send to back

أرجوا أن تكون هذه المعلومة مفيدة
وانتظروا مني المزيد
كما أنتظر منكم مشاركاتكم حتى نستفيد كلنا ولكم جزيل الشكر

أخوكم في الله شادي الفارس

الحمد لله الذي لا يحمد على مكروه سواه

PrinceOfSorrow
09-05-2008, 11:04 AM
سلام عليكم ورحمة الله وبركاته

موضوع رووووووووووووووووووعة اخي العزيز
بصراحة ذكرت أشياء مهمة كنت انا في الماضي اعاني منها بل كانت تسبب لي اليأس
في كتابة الأكواد او فهمها في الجيم ميكر
حاليا قمت بفهم قانون المتغيرات والأوامر وبنسبة للقوسين اعتقد هما نفس
فكرة السهمين في control وهما (start block & end block) حيث تجمع جميع أوامر كأمر واحد (حسب فهمي شخصي واعتذر لو كنت مخطئ)

جزاك الله خيرا وشكرا لأرفاقك الأمثلة لتيسير على الأعضاء

شادي الفارس
09-05-2008, 03:50 PM
أخي برنس أولاً أشكرك على الرد وعلى الشكر وما قصرت
وبالنسبة للقوسين هما وجهان لعملة واحدة كما يقال
فهما يحلان محل السهمين عند كتابة الكود
وأنا نسيت أن أذكر ذلك في موضوعي شكراً لك على التذكير وعلى متابعة الموضوع
كما أتمنى منك المشاركة بما تعرفه كي ننتفع به جميعاً
شكراً يا الغالي وما قصرت