کرم های کامپیوتر

کرم های کامپیوتر

کلی مطلب داریم براتون درباره کامپیوتر و برنامه نویسی.

ربات تلگرامی ما
آخرین نظرات
  • ۱ ارديبهشت ۹۶، ۱۱:۰۲ - Farzaneh
    Ubuntu
  • ۲۸ فروردين ۹۶، ۰۱:۳۶ - younes RayanFar
    opensuse


روبو کد یه بازی برنامه نویسی جالب، مفید و متنباز هست.داخل این بازی شما با زبان جاوا باید روبات های کوچک رو برنامه نویسی کنید تا برن با بقیه روبات ها بجنگن!این روبات ها، تانک های شش چرخ کوچکی به ابعاد 48*48 پیکسل هستند که داخل زمین بازی(زمین جنگ) باید با برنامه نویسی شما عقب یا جلو برن، وقتی یک روبات دیگه رو دیدن به طرفش شلیک کنن و ....

مواد و وسایل لازم:

  • یک کامپیوتر رومیزی
  • ماشین مجازی جاوا برای سیستم عاملتون
  • روبو کد
  • اگر میخواید یک روبات بسازید باید سینتکس جاوا رو بلد باشید.البته اگر یکی از زبان هایی که خویشاوندی نزدیکی با سی داره رو بلد باشید، مثل سی یا سی پلاس پلاس یا سی شارپ باز هم کارتون راه میوفته. مخصوصا سی شارپ که سینتکسش کپی همون جاوا هست

توجه کنید که نیازی به JDK و کامپایلر جاوا ندارید چون روبو کد همراه خودش یک کامپایلر جاوا(ECJ) داره.  اما اگر JDK روی سیستمتون نصبه میتونید انتخاب کنید که برای کامپایل کردن از  JDK استفاده کنید.اگر ماشین مجازی جاوای شما آماده هست روبو کد رو از لینک زیر دانلود کنید و با ماشین مجازی جاوا اجراش کنید.برای نصب نیازی به دسترسی ادمین یا ریشه ندارید چون روبو کد توی پوشهی شخصیتون(home) نصب میشه.


حجم: 5.75 مگابایت

توضیحات:‌ روبو کد 1.9.2.6

لینک کمکی از گیت‌هاب

خب حالا اگر نصبش کردید داخل پوشه 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 بایت بیشتر بشه.تحت مجوز خود روبو ویکی منتشرش کردم.از اینجا دانلودش کنید! باهاش بجنگید و  سورسش رو بخونید :)

اگر روباتی درست کردید که سرش به تنش می ارزه همینجا بهم خبر بدید و بهم بفرستیدش تا یک مقدار باهاش سروکله بزنیم :)

نظرات (۲)

کد ها را در codepad.org وارد کرده و سپس لینک آن را در نظر قرار دهید

عالی بود من که عاشقش شدم....
فاروق کریمی زاده

منم :)

بهنام:
ولی من codingame.com رو ترجیح می دم
اولا که همه ی زبان ها رو داره؛ دوما مسئله های بیشتر و جالبی داره؛ سوما گرافیکش با حال تره
  • فاروق کریمی زاده
  • نه خیر آقا!
    روبو کد یه چیز دیگست...
    راستی دوستان اگر بات ساختیدیه جا آپلودش کنید همینجا بگید :))
    ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
    شما میتوانید از این تگهای html استفاده کنید:
    <b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
    تجدید کد امنیتی