PDA

View Full Version : Robocode



hamed_9192
سه شنبه 19 خرداد 1388, 01:44 صبح
با سلام

دوستان تا حالا با برنامه robocode کار کردین؟
این برنامه پیشرفته شبیه سازی نبرد روبوت ها باعث میشه که برنامه نویسی جاوا به صورت یک
بازی در بیاد هم سرگرم کننده باشه و هم آموزشی و هم به نوعی باعث تقویت برنامه نویسی به زبان جاوا میشه . این برنامه قابل استفاده برای افراد علاقه مند به جاوا، دانشجویان ،دانش آموزان و حتی برنامه نویسان ماهر می باشد
روبوکد:روبوکد یک شبیه ساز نبرد روبوتیک ساده است که در حقیقت شما با برنامه نویسی روبوت خود ،روبات را برای جنگ با دیگر روبات ها می فرستید.روبوکد در وحله اول و به صورت پیش فرض رو بات هایی دارد که شما می توانید در مر حله اول از آنها استفاده کنیدو بعد با تغیرات دلخواه بر روی کدهای روبات و برنامه نویسی آن روبات خود را به میدان جنگ بفرستید و در نهایت بعد از پیشرفت و داشتن مهارت کامل در برنامه نویسی خودتان یک رو بات طراحی و به میدان مسابقه بفرستید تا روبات های دیگر را شکست دهد.
روبوکد در حقیقت با ایجاد یک سرگرمی و شوق شکست دادن دوستان تان در میدان مسابقه با رو بوت هایی که خودتان میسازید شمارا در امر برنامه نویسی جاوا به فردی ماهر تبدیل میکند.
قابل ذکر است این برنامه در دانشگاه های خارجی به عنوان یک نرم افزار مفید در امر یاد گیری برنامه نویسی جاوا تلقی می شود.
برای دریافت robocode
ا به لینک زیر بروید.
www.robocode.sourceforge.net

java_nith
سه شنبه 19 خرداد 1388, 06:10 صبح
مرسی‌ دوست عزیز
من این برنامه رو آوردم، ولی‌ چیز زیادی از آاش سر در نیاوردم
اگه می‌شه یه کم در مورد چجوری کار کردن باهاش
و چجوری بیشتر یاد گرفتن برنامه نویسی با این برنامه توضیح بدید

hamed_9192
سه شنبه 19 خرداد 1388, 14:57 عصر
با سلام

اجزای سیستم تشکیل دهنده یک روبوکد:
میدان مسابقه_ ویرایشگر روبات
ساختار یک روبات:
دارای یک تفنگ چرخان _ رادار _ موتور
مجموعه دستور های یک روبات در روبوکد در Javadoc مربوط به API روبوکد قرار دارد.این دستور ها به روش های عمومی در robocode.Robot هستند.
حرکت دادن روبوت ، تفنگ و رادار
turnRight(double degree)و turn Left(double degree) روبات را با زاویه ای مشخص شده می چرخانند.
ahead(double distance)و back(double distance) روبات را به اندازه مسافت تعین شده و بر حسب پیکسل جلو و عقب می برد با این دو دستور اگر روبات با دیوار یا روبات دیگر بر خورد کند نابود میشود.
turnRadarRight(double degree)و turnRadarLeft(double degree) رادار موجود در بالای روبات را می چر خاند.
turnGunRight(double degree) و turnGunLeft(double degree)تفنگ را نیز صرف نظر از جهت قرار گرفتن روبات میچرخاند.
فرمان آتش: fire(double power(و fireBullet(double power )استفاده کنید.
بعد از نصب کردن رو بوکد واجرای آن میدان مسابقه ظاهر میشود ،برای ایجاد یک روبات از فرمان
file/new/robot استفاده کنید برنامه از شما نام روبات را می پرسد که نام کلاس جاوا نیز همان
خواهد بود که نام کلاس را به اختیار وارد کنید ،بعد از شما نام package را که کلاس روبات در آن قرار می گیرد میخواهد که به اختیار چند حرف وارد کنید بعد ویرایشگر روبوکد کد جاوای لازم برای کنترل این روبوت را نشان میدهد.در کد نشان داده شده قسمت هایی وجود دارد که قابل تغیر ،متناسب باکد هایی است که ما در آن قرار وی دهیم است مثلا در قسمت
public void onScannadRobot (ScannedRobotEvent e ) {
fire(1);{
ScannedRobotEvent پردازش میشود واین دستور باعث می شود که روبات در مسیر مستقیمی که رادار روبات شناسایی میکند شلیک کند.

برای آزمایش روباتی که ساختید اول کدی را که اصلاح یا نوشته اید باید تدوین کنید از فهرست ویرایشگر روبات دستور Compiler/compile را انتخاب کنید به میدان مسابقه باز گردید و دستور Battle/new را انتخاب کنید با این دستور پنجره ای باز میشود روبات جدیدی که ساختید و اسم آن را به اختیار هر چه گذاشته اید و یه حریف برای روبات خود انتخاب کنید با زدن finishمسابقه و نبرد آغاز میشود.
برای آموزش کامل روبو کد و دسترسی به کد های بیشتر به سایت زیر ماجعه کنید:
www.robocode.sourceforge.net

javad.kh
چهارشنبه 20 خرداد 1388, 15:00 عصر
مرسی حامد جون
جالب بود

hamed_9192
چهارشنبه 20 خرداد 1388, 16:54 عصر
با سلام
دوستان بعد از این که روبات های ساده ای ساختن و کار با روبوکد رو یاد گرفتین برای ساختن روبات های پیشرفته و پیچیده میتونین برای استفاده از API ها به javadoc مراجعه کنین که از این طریق فهرست های کمک میدان مسابقه و ویرایشگر روبات قابل دسترسی است.
موفق باشین

handinux
چهارشنبه 20 خرداد 1388, 19:23 عصر
جدن که پست جالبی بود.جناب hamed_9192 (http://barnamenevis.org/forum/member.php?u=99405) و بقیه دوستان تجربیات در این زمینه رو همینجا به اشتراک بگذاریم.ممنونم

hamed_9192
چهارشنبه 20 خرداد 1388, 21:43 عصر
با سلام
دوستان اگه روبات هایی خودتون نوشتین حتما کد هاشو بذارین تا بقیه هم استفاده کنن
یا اصلا با هم مسابقه بدن و کیفیت و قدرت برنامه نویسی روبات هاشون رو با هم مقایسه کنن.
در ضمن همون طور که دیدین در سایت مرجع روبوکد دارای لیگ مسابقه ای در سطح جهان هست و در بعضی از کشورها مثل چین و استرالیا دارای تیم مخصوصی هست.
بشانی رو بولیگ:http://user.cs.tu-berlin.de/~lulli/roboleague/

s4lish
پنج شنبه 21 خرداد 1388, 00:09 صبح
عجب چیز باحالیه..
حامد جان کاکا هستم.:قهقهه:

s4lish
پنج شنبه 21 خرداد 1388, 19:53 عصر
سلام .کد پایین .کد یکی از ربات های پیش فرض برنامه است .یکی اینو توضیح بده که یعنی چی؟

package sample;

import robocode.HitRobotEvent;
import robocode.Robot;
import robocode.ScannedRobotEvent;
import robocode.*;

import java.awt.*;

public class IRON extends AdvancedRobot {
boolean movingForward;

public void run() {
// Set colors
setBodyColor(Color.red);
setGunColor(Color.black);
setRadarColor(Color.red);
setBulletColor(Color.red);
setScanColor(Color.black);

// Loop forever
while (true) {
// Tell the game we will want to move ahead 40000 -- some large number
setAhead(40000);
movingForward = true;
// Tell the game we will want to turn right 90
setTurnRight(90);
// At this point, we have indicated to the game that *when we do something*,
// we will want to move ahead and turn right. That's what "set" means.
// It is important to realize we have not done anything yet!
// In order to actually move, we'll want to call a method that
// takes real time, such as waitFor.
// waitFor actually starts the action -- we start moving and turning.
// It will not return until we have finished turning.
waitFor(new TurnCompleteCondition(this));
// Note: We are still moving ahead now, but the turn is complete.
// Now we'll turn the other way...
setTurnLeft(180);
// ... and wait for the turn to finish ...
waitFor(new TurnCompleteCondition(this));
// ... then the other way ...
setTurnRight(180);
// .. and wait for that turn to finish.
waitFor(new TurnCompleteCondition(this));
// then back to the top to do it all again
}
}

public void onHitWall(HitWallEvent e) {

reverseDirection();
}

public void reverseDirection() {
if (movingForward) {
setBack(40000);
movingForward = false;
} else {
setAhead(40000);
movingForward = true;
}
}


public void onScannedRobot(ScannedRobotEvent e) {
fire(20);
}

public void onHitRobot(HitRobotEvent e) {

if (e.isMyFault()) {
reverseDirection();
}
}
}

hamed_9192
جمعه 22 خرداد 1388, 02:38 صبح
با سلام
دوست عزیز وقت زیادی نداشتم ولی سعی کردم اون نقاط کلیدی برنامه رو بگم.
امیدوارم که مشکلتون حل شه . اگه متوجه نشدین بیشتر توضیح میدم.
موفق باشین.http://h1.ripway.com/hamed9192/01.jpg

hamed_9192
جمعه 22 خرداد 1388, 02:49 صبح
01.jpg (http://wikisend.com/download/503806/01.jpg)


1.jpg (http://wikisend.com/download/549624/1.jpg)
http://barnamenevis.org/forum/%5BURL=http://wikisend.com/download/503806/01.jpg%5D01.jpg%5B/URL%5D