[درس] بدء ++C لبرمجة الألعاب
سم الله الرحمن الرحيم
اولا مبارك عليكم شهر رمضان المبارك و الله يعوده عليكم بكل خير و محبة و سلام :)
و حبيت اقولكم لعبة Sonic Xtreme NeXT قريب و تنزل نسخة الألفا :) و انا طلعت من فريق البرمجة لأني الحين قاعد اتعلم الDirectX و الحين انا صرت مدير العلاقات العامة Community Manager و مصمم الموقع :) و كاتب قصص :)
عشان جذي انا تفرغت لكم و بحط دروس مني لكم للبدء برمجة ألعاب في الـ ++C :) و إنشاء الله بس اخلص تعلم برمجة الـ ++C بالدايركت اكس احط دروس :)
مقدمة عن الـ ++C :
لغة ال++C صممها بيارن ستروسترب
http://www.bell-labs.com/history/uni...-10608-EM.jpeg
في مختبرات Bill Gates كتحسين للغة الـ C خصوصا لغة الـ C ليست كاملة ككمال ++C. اشتغل عليها المهندس بيارن سنة 1979. بس ليش قرر المهندس بيارن تطوير لغة الـ ++C على حساب الـ C ؟؟؟
لأن الـ C لغة سريع جدا جدا جدا و قوية في نفس الوقت. فقد ظاف المهندس بيارن الكثير من المميزات إلى الـ C كالـ Functions و الـ Refrences و الـ Operator overfloating. و أول إطلاق رسمي تجاري للـ ++C كان في أكتوبر سنة 1985. الإسم الأول للغة الـ ++C كان The New C و تم تغييره إلى C with classes ثم إلى ++C .
بس ليش شركات الألعاب العملاقة مثل EA و Capcom و Blizzard تختار لغة صعبة بحتة لتصميم لعبة ؟
تخيل انك قاعد تصمم لعبة بلغة الآلة :
11010101010101010000111100
اكيد راح تكون اقوى لعبة بالعالم كله من الناحية البرمجية ، و راح تكون أسرع لعبة و أقوى لعبة أقوى من Final Fintasy و Resident Evil و Age of Empires. بس منو الفاظي اللي يبي يبرمج بلغة الآلة ؟؟:D
لكن تخيل تبي تبرمج اللعبة بلغة انزل من رتبة لغة الآلة برتبة او رتبتين!!! راح تكون بنفس القوة و السرعة و لكن اقل بقليل جدا :) و اهي الـ ++C :)
هذا سبب اختيار الشركات العملاقة للغة الـ ++C :
1-لغة سريعة : فالبرامج المكتوبة جيدا تكون سريعة بسرعة مذهلة !! احد من اهداف الـ ++C هو التشغيل على اكمل وجه. و لغة الـ ++C تتفاهم مع الهاردوير من غير عميل. يعني على طول من إيدك لي الكمبيوتر :)
2-مرونة اللغة : الـ ++C لغة ثنائية النماذج ، يعني يمكن تسوي برنامج بأكثر من طريقة و فيها تقدر تبرمج باستخدام الكائنات
3-لغة مدعومة جيدا: حيث هذه اللغة مدعومة جيدا من كل النواحي : الفيزيا ، 2دي ، 3دي و محركات الأصوات.
ماذا بعد ؟؟؟
لتستفيد من هذا الموضوع تحتاج لشيء واحد مجاني فقط !!!
Compiler و آخر و اقوى Compiler متوفر اهو DEV-C++ bloodshed و اهو مجاني بالكامل لا تسجيل و لا هم يحزنون و هذا رابط التنزيل مباشرة :) :
http://dw.com.com/redir?pid=10498828...-10498828.html
يالله نبدا بالدرس الاول بإذن الله :)
الدرس الأول : العمل مع المتغيرات و الثوابت :
1-كتابة أول برنامج لك في الـ ++C:
اكتب هذا الكود و سو له compile :
كود:
//Game Over
//Very first C++ program
#include <iostream>
int main()
{
std::cout << "Game Over!" << std::endl;
return 0;
}
نلاحظ اول سطرين السلاش ، و اهي علامة التعليق. باختصار الكومبايرلر ما يعطي هالأسطر اي أهمية و يتجاهلها. هذي الأسطر تفيدك إذا تحب تكتب تعليق قبل loop او شي عشان يذكرك :)
السطر الثالث انا ادخلت مكتبة iostream و اهي تنطق جذي :
آي أو ستريم
هذي المكتبة اهي تعطيك بالتحكم اب كائن cout و cin (يأتي شرح cin بالمستقبل بإذن الله)
السطر الرابع و اللي يحتوي على int main اهو هيكل البرنامج :) حيث int اختصار integer و اهو عدد صحيح ، و هذا يعني ان البرنامج يعمل و يرد بقيمة صحيحة ، و القوس } و { اهم بدء و إنهاء الوظيفة int main
السطر الخامس و اهو يعرض Game Over ، حيث cout تنطق ك: c out ، و مثل ما قريتها "out" و هذا يعني يطلع شي للخارج و اهو سطر Game Over و هنا نستخدم المشغل الخارجي :
>> و هذا يعني المعلومات خلف هذا السهم تابعة للكائن cout
السطر الأخير و اهو return 0; اهو يعني إنهاء البرنامج بدون اي مشكلة
2- العمل مع name space std
تخيل انت كل ساعة تبي تكتب الكائن cout راح تحتاج إلى كتابة std، تتوقع ما لها حل ؟؟ لها حل :) و اهي namespace std و اهو يجنبك بكتابة std كل مره :)
كود:
//Game Over 2.0
//Using namespace std;
#include<iostream>
using namespace std;
int main()
{
cout << "Game over" << endl;
return 0;
}
3- مشغلات العمليات الحسابية الأساسية :
علامة الضرب بالسي بلس بلس اهي : *
علامة القسمة : /
علامة الجمع : +
علامة الطرح : -
و في علامة زيادة للعمليات الحسابية و اهي % و اهي علامة للقسمة لكن تقسم على عدد على عدد ما يقبل القسمة عليه و يعطيك قيمة صحيحة بدون اي كسور او ارقام عشرية
يعني مثلا لو تفتح الآلة الحاسبة و تقسم 7 على 3 راح تعطيك
2.3333333333333333333333333333333
فهالعلامة تفيدك في حالة انك تبي حاصل العملية عدد صحيح :)
هذا برنامج توضيحي :
كود:
#include<iostream>
using namespace std;
int main()
{
cout << "7 + 3= " << 7 + 3 << endl;
cout << "7 - 3= " << 7 - 3 << endl;
cout << "7 * 3= " << 7 * 3 << endl;
cout << "7 / 3= " << 7 / 3 << endl;
cout << "7 % 3= " << 7 % 3 << endl;
return 0;
}
4- استقبال البيانات من المستخدم باستخدام الكائن cin
عرفنا كيفية اخراج معلومات على الشاشة ، الحين لازم نعرف اشلون نستقبل بيانات من المستخدم :)
أنواع المتغيرات
:
1- int : و هو عادة يكون عدد
2- char : و اهو حروف
3- bool : و اهو لعملية true or false
إعلان المتغيرات يكون كالتالي
كود:
int score;
char playAgain;
bool shieldsUp;
و بعدين تقدر تتلاعب بقيمة المتغير مثل ما تحب يعني مثلا تبي تعين قيمة البدء للمتغير fine من 7 يكون كالتالي :
و تعيين المتغير يكون قبل البدء باستخدامه ، يعني مو تسوي عملية حسابية تشمل المتغير مثلا number و بعدها العملية تعين المتغير number.... لأ المتغير يكون اولا :)
و لا تتعب نفسك تعين المتغيرات اول البرنامج ، تقدر تعين المتغير قبل ما تستخدمه :)
هذا برنامج يعرض متغيرات بدون التلاعب فيها :) :
كود:
//Declaring variables
#include <iostream>
using namespace std;
int main()
{
int score = 0;
int health = 6565.3;
int ammo = 5;
cout << "\nYour score is " << score << endl;
cout << "\nYour health is " << health << endl;
cout << "\nYour ammo is " << ammo << endl;
return 0;
}
الحين ايي دور إدخال البيانات ، طبعا قبل لا المستخدم يدخل بيانات لازم يكون في متغير تنحفظ داخله البيانات :)
كود:
//Getting data from the user
#include <iostream>
using namespace std;
int main()
{
int money;
cout << "\nHow much money you have ?" << endl;
cin >> money;
cout << "\nYou have << money << " in your account " << endl;
}
لاحظت اولا الـ n\ هذا يقول للبرنامج اكتب هالشي بسطر يديد :)
ثانيا : عينت المتغير money و قيمته الإفتراضية صفر ، فلما يدخل المستخدم قيمة راح تكون المعادلة :
money + 0
و شوف اسهم الـ cin تتجه إلى المتغير هذا يعني البرنامج ياخذ قيمة الإدخال و يعطيها للمتغير :)
تمرين اليوم :
سو لي برنامج ياخذ رقم من المستخدم و يجمعه مع 100 و يطلع النتيجة
مساعدة :
1- استخدم متغير واحد بإسم number
2-استخدم الكائن cout و cin
إذا خلصت البرنامج حط الكود اهني وانا اختبره :)
ملاحظة : إذا كنت تعاني من مشكلة سرعة إغلاق التطبيق اظف المكتبة
اظف هالكود قبل return 0;
فيصبح شكل البرنامج العام :
كود:
#include<iostream>
#include<conio.h>
using namespace std;
int main()
{
cout << "Monatada.com" << endl;
getch();
return 0;
}
رد: بدء ++C لبرمجة الألعاب
مشكور أخوي على الموضوع القيم ... القليل منا يعتمد على السي ++ مباشرة في هذة الايام. انتقل الجميع إلى محركات خاصة لصناعة الألعاب. مقدمة سريعة رائعة و شرح مميز ... تابع إلى النهاية :biggthump
لاني اريد أعرف شو النهاية :D
رد: [درس] بدء ++C لبرمجة الألعاب
شكرا على هذا درس ^^
فهو مفيد جدا جدا وخاصة انه للغة C++ تعتمد عليها الكثير من برامج
-------------------------------
بنسبة للعبتكم سونيك ؟ ليه أخترتو سونيك ؟ ليه مافكرتو تصممون ؟ شخصية خاصة ؟ TradeMark
ولا انت أشتركتو مع Sega ?
رد: [درس] بدء ++C لبرمجة الألعاب
السلام عليكم ... الله يبارك فيك
ما شاء الله هذه السلسلة إذا اكملتها سوف تأخذ الكثير من الأجر لأن الكثير هنا بودهم أن يتعلم برمجة الألعاب بواسطة C++ من خبير ,,,
و موفقين في لعبة سونيك و انا كلي لهفة لأحصل على نسخة الديمو
رد: [درس] بدء ++C لبرمجة الألعاب
العفو جميعا و بالنسبة للعبة سونيك خلصنا تقريبا الrendring للشخصيات و النسخة ألفا يتم التحضير لها
:)
و بالنسبة للدرس ما راح اكمل إلا إذا شفت واحد خلص التمرين
:D
رد: [درس] بدء ++C لبرمجة الألعاب
مشكور على الدروس و ان متابع انشاء الله لاني ضعيف بالسي! ..... نسبياً:D
الحين عندي سؤال و هو شو فائدة ال std؟
ممكن استخدمها و ممكن اتجنب استخدامها استخدمها! حتى بدون اضافة using namespace std;
و البرنامج dev C++ الصراحة رهيب
رد: [درس] بدء ++C لبرمجة الألعاب
اقتباس:
المشاركة الأصلية كتبت بواسطة snake_x86
مشكور على الدروس و ان متابع انشاء الله لاني ضعيف بالسي! ..... نسبياً:D
الحين عندي سؤال و هو شو فائدة ال std؟
ممكن استخدمها و ممكن اتجنب استخدامها استخدمها! حتى بدون اضافة using namespace std;
و البرنامج dev C++ الصراحة رهيب
فعلاً لاحظت هذا الشيء ...
و
لازم يكون
كود:
#include <iostream.h>
يمكن الامور تغيرت لاني درست السي سنه 2002 :D
رد: [درس] بدء ++C لبرمجة الألعاب
اقتباس:
المشاركة الأصلية كتبت بواسطة Son Of UAE
فعلاً لاحظت هذا الشيء ...
و
لازم يكون
كود:
#include <iostream.h>
يمكن الامور تغيرت لاني درست السي سنه 2002 :D
صح هذا اللي كنت احاول اتذكره!
الحالة الاولة تنفع بس لو اضفت using namespace std;
اما الحالة الثانية تنفع بالحالتين!
رد: [درس] بدء ++C لبرمجة الألعاب
واو
مشكور جدا جدا
إن شاء الله اواصل معك حتى النهاية
سأحاول ان أطبق تمرينك ^_^
و سأضعه هنا بعد غد إن شاء الله
:D
*تم دخول الموضوع للـFavorites
:D
رد: [درس] بدء ++C لبرمجة الألعاب
آه يا لغة C++
كانت أمنيتي أتعلمها لكن مستقبلي المهني ما ساعدني
إن شاء الله أتعلمها عندكم
رد: [درس] بدء ++C لبرمجة الألعاب
مثل ما قلت لكم سبب .h اهو الدعم المتواصل للسي بلس بلس
يالله شباب وين الحل :D
رد: [درس] بدء ++C لبرمجة الألعاب
اقتباس:
المشاركة الأصلية كتبت بواسطة GOGENDANTESS
مثل ما قلت لكم سبب .h اهو الدعم المتواصل للسي بلس بلس
يالله شباب وين الحل :D
كذا بتقصو علينا انا قلت بخلي هذا الموضوع عندي في الارشيف لان ما عندي وقت ابدا بس ما دامك مصر انا رح احاول اتابع معك عل سريع و احل
رد: [درس] بدء ++C لبرمجة الألعاب
ممم .. اعتقد ان الموضوع يفيد الاعضاء على المدى الطويل وليس الان فلو توقفت فسوف تحرم الكثير من الناس من هذا الموضوع. حتى ولو لم يرد عليك أحد حاول ان تعطي ما عندك .. و كلنا نقدر الجهد المبذول. فأكثر الاعضاء حاول وضع دروس لتعليم البقية. ارجو عدم التقيد بوجود حل للتمارين ام لا ... :biggthump
رد: [درس] بدء ++C لبرمجة الألعاب
رد: [درس] بدء ++C لبرمجة الألعاب
شكراً على مجهودك ;) ... إستمر حتى النهاية :)