روبو کد یه بازی برنامه نویسی جالب، مفید و متنباز هست.داخل این بازی شما با زبان جاوا باید روبات های کوچک رو برنامه نویسی کنید تا برن با بقیه روبات ها بجنگن!این روبات ها، تانک های شش چرخ کوچکی به ابعاد 48*48 پیکسل هستند که داخل زمین بازی(زمین جنگ) باید با برنامه نویسی شما عقب یا جلو برن، وقتی یک روبات دیگه رو دیدن به طرفش شلیک کنن و ...
مواد و وسایل لازم:
- یک کامپیوتر رومیزی
- ماشین مجازی جاوا برای سیستم عاملتون
- روبو کد
- اگر میخواید یک روبات بسازید باید سینتکس جاوا رو بلد باشید.البته اگر یکی از زبان هایی که خویشاوندی نزدیکی با سی داره رو بلد باشید، مثل سی یا سی پلاس پلاس یا سی شارپ باز هم کارتون راه میوفته. مخصوصا سی شارپ که سینتکسش کپی همون جاوا هست
توجه کنید که نیازی به JDK و کامپایلر جاوا ندارید چون روبو کد همراه خودش یک کامپایلر جاوا(ECJ) داره. اما اگر JDK روی سیستمتون نصبه میتونید انتخاب کنید که برای کامپایل کردن از JDK استفاده کنید.اگر ماشین مجازی جاوای شما آماده هست روبو کد رو از لینک زیر دانلود کنید و با ماشین مجازی جاوا اجراش کنید.برای نصب نیازی به دسترسی ادمین یا ریشه ندارید چون روبو کد توی پوشهی شخصیتون(home) نصب میشه.
حجم: ۱۶ مگابایت
نسخه ۱.۹.۴.۲
خب حالا اگر نصبش کردید داخل پوشه robocode،داخل پوشهی شخصیتون دنبال robocode.sh یا robocode.bat یا robocode.command بگردید و اجراش کنید.وقتی اجراش میکنید این صفحه رو باید ببینید(شاید یک مقدار فرق داشته باشه):
خب حالا باید یک جنگ جدید رو شروع کنید تا کم و کیف بازی دستتون بیاد.از منوی Battle گزینهی New رو بزنید تا یک پنجره برای شروع یک جنگ جدید واستون باز بشه:
روبو کد همراه خودش چند تا روبات به عنوان نمونه همراه با سورس کد داره.چند تا از اونا رو اضافه کنید. یک روبات به اسم Interactive وجود داره که میتونید خودتون با موس و صفحه کلید کنترلش کنید. با دکمه start battle جنگ رو شروع کنید.
اگر میخواید جنگ سریعتر تموم بشه Frame rate رو موقتا بالا ببرید یا پنجرهی روبو کد رو کوچک کنید تا با حداکثر سرعت جنگ انجام بشه.
وقتی جنگ تموم بشه یک پنجره باز میشه که نتایج رو نشون میده.امتیاز هایی که روبات ها گرفتن، چقدر زنده موندن، تیر یک روبات چقدر خطر داشته و ... ،و بر اساس همینا روبات ها رو رتبه بندی میکنه.
توی جنگ بعدی هفت تا روبات Interactive اضافه کنید و با هفت تا روبات بقیه روبات ها رو کتلت کنید :)
جنگ جهانی
یک مسابقه جهانی به نام RoboRumble وجود داره که با استفاده از کامپیوتر خود کاربران،روبات ها باهم مسابقه میدن و رتبه بندی میشن.الآن که من این مطلب رو مینویسم این چند نوع مسابقه وجود دارن:
- روبو رامبل(یا مسابقه تک به تک): داخل این مسابقه دو تا روبات هم وزن به صورت تصادفی انتخاب میشن تا باهم داخل چند دور(راند) سروکله بزنن، این دوتا روبات داخل یک کلاس وزنی انتخاب میشن، مثلا یک نانوبات باید با یک نانوبات دیگه درگیر بشه نه با یک مگابات!
- میلی رامبل(مسابقه گروهی): ده تا روبات به صورت تصادفی انتخاب میشن و داخل زمین جنگ همه علیه همه میجنگن!
- تیم رامبل(مسابقه تیمی): دو تا تیم بصورت تصادفی علیه همدیگه میجنگن، هر تیم میتونه حداکثر ۵ تا روبات داشته باشه.
- دوئل دوتایی ها یا TwinDual: دو تا تیم دونفره بصورت تصادفی انتخاب میشن تا سنگاشون رو باهم وا بکنن!
- لیگ کلاه یا Hat League: دو تا تیم مجزا که همدیگه رو نمیشناسن بصورت تصادفی انتخاب میشن تا با دوتا تیم دیگه به همین صورت در گیر بشن!راستش من در این مورد نظری ندارم.
فواید بازی
من خودم یک برنامه نویس مبتدی هستم و این فواید که اینجا ذکر میکنم منبع معتبر نداره بلکه استدلال ها و اندیشه های احتمالا ناقض خودم هست.
به نظر من مهمترین فایده بازی افزایش مهارت حل مسئله یا همون مهارت برنامه نویسی(و الیته نه کد نوشتن) هست.شما برای ساخت یک روبات باید مسائل مختلفی رو حل کنید و بعد اونا رو به کد جاوا تبدیل کنید.طبیعا روبات حریف(یا روبات های حریف) نمیان جلوی لوله روبات شما که بهشون شلیک کنین و مطمئنا اونها هم چندتا گلوله به طرف روبات شما شلیک میکنن.شما باید همه اینها رو مدیریت بکنید.
یک مسئله دیگه سرعت هست، روباتتون باید سرعت خوبی داخل شناسایی حریف و شلیک به اون باشه. علاوه بر این وقتی مهاجم شلیک میکنه شما باید سعی کنید گلوله به روباتتون نخوره! پس قبل از اینکه دیر بشه باید جاخالی بدید! و در یک کلام، روبات سریعتر بهتره.
مسئلهی آخری که به ذهنم میرسه بهینه سازی اندازهی روباتتون هست، منظورم اندازهی کد کامپایل شده هست.اگر بخواید داخل روبو رامبل شرکت کنید همونطور که گفتم روبات شما در مسابقه های تک به تک بر اساس وزنشون دسته بندی میشن.فکر کنم یه چیزی شبیه مسابقه کشتی باشه!اگر وزن روبات کمتر از ۲۵۰ بایت باشه یک نانوبات حساب میشه، اگر کمتر ۷۵۰ بایت باشه یک میکروبات حساب میشه و... . این غیر معمول نیست که چند ساعت وقت بزارید تا فقط یک بایت از اندازه روباتتون کم کنید!
چطور یک روبات برای خودم بسازم؟
اینجا یک آموزش به زبان انگلیسی توی روبو ویکی وجود داره.داخل روبات های نمونه روبو کد یک روبات به اسم MyFirstRobot وجود داره که باید سورسش رو بخونید. همچنین از منوی Help گزینهی Robocode API رو انتخاب کنید تا API روبو کد رو بخونید.
روبات های بیشتر
داخل robowiki.net میتونید روبات افراد مختلف را دریافت کرده و استفاده کنید. بعضی از آنها متنباز و یا آزاد و بعضی هم متن بسته هستند.علاوهبر دریافت روبات، ویکی روبو کد،یک محل برای ارتباط کاربرها و به اشتراک گزاری الگوریتم ها، استراتژی ها و ایده ها هم هست. از اینجا میتونید یک ربات قوی،پرحجم والبته بدون کد منبع را دریافت کنید.
روبات خودم
خودم یک روبات به اسم «روبات شمالی» یا «روبات شمال» نوشتم که از نظر وزن یک نانوبات محسوب میشود و قصد ندارم اندازهاش از 250 بایت بیشتر بشود.تحت مجوز خود روبو ویکی منتشرش کردم.از اینجا دریافتش کنید! باهاش بجنگید و کدش را بخوانید :)
اگر روباتی درست کردید که سرش به تنش می ارزد همینجا بهم خبر بدید و بهم بفرستیدش تا یک مقدار باهاش سروکله بزنیم :)