ورود و خروج
خوش آمدید، مهمان - لطفا برای ثبت نام اینجا و یا برای ورود اینجا را کلیک کنید.
آیا هنوز ایمیل فعال سازی اکانت برای ما ارسال نشده است؟
13 شهریور 1389,ساعت 05:15:55

لطفا برای ورود نام کاربری و رمز عبورتان را وارد نمایید
جستجو
* صفحه اصلی راهنمایی جستجو تقویم ورود عضویت
صفحه: [1] 2   پایین
چاپ صفحه
نویسنده موضوع: مباحث مربوط به بیس Agent2D  (دفعات بازدید: 1109 بار)
0 کاربر و 1 مهمان درحال دیدن موضوع.
Saman
Saman Ismael
مدیر انجمن ها
*****
آنلاین آنلاین

تعداد ارسال: 138

تشکر
-داده شده: 24
-دریافت شده: 53



WWW
« : 10 بهمن 1388,ساعت 01:41:19 »

در این قسمت مباحث مربوط به بیس Agent2D قرار خواهد گرفت.
خارج شده است
Saman
Saman Ismael
مدیر انجمن ها
*****
آنلاین آنلاین

تعداد ارسال: 138

تشکر
-داده شده: 24
-دریافت شده: 53



WWW
« پاسخ #1 : 10 بهمن 1388,ساعت 12:55:40 »

بیس Agent2D یکی از سورس کد های موجود در لیگ شبیه سازی فوتبال میباشد ، این بیس کد که توسط Hidehisa Akiyama اط سال 2005 انتشار یافت و متناسب با هر تغییری که در سرور شبیه سازی روی می دهد نسخه ی سازگار با آن نیز منتشر می شود.
برای راه اندازی و شروع به کار با Agent2D نیاز به نصب کتابخانه ای است که به آن وابسته است. کتابخانه ی librcsc_X.X.X ، این کتابخانه حاوی تمامی دستورات وفایل های ساختاری بیس می باشد.
--> برای دانلود کد بیس و کتابخانه به لینک زیر مراجعه کنید :

http://www.iranrobocup.com/forum/%D8%A8%DB%8C%D8%B3-%DA%A9%D8%AF-base-code/%D8%A2%D8%AE%D8%B1%DB%8C%D9%86-%D8%A8%DB%8C%D8%B3-%DA%A9%D8%AF-agent2d-%D9%85%D9%86%D8%AA%D8%B4%D8%B1-%D8%B4%D8%AF%D9%87/

* نصب کتابخانه librcsc_X.X.X :

با توجهبا اینکه این کتابخانه مبتنی بر سیستم های automake می باشد، لذا در ابتدا نیاز به وارد کردن دستور configure در ترمینال هستم. برای نصب کتابخانه مراحل زیر را دتبال کنید.

1. با استفاده از دستور cd به پوشه ی مربوط به کتابخانه رفته بدین طورت :

کد:
cd DIRNAME/librcsc_X.X.X/

2. در پوشه ی مربوط به کتابخانه ابتدا دستور زیر را برای set کردن ساختار maekfile با سیستم عاملتان وارد کنید.
کد:
./configure

3. بعد از اتمام process ، دستور زیر را برای نصب کتابخانه وارد کنید.
کد:
make


4. در حال حاضر کتابخانهفقط در پوشه ی مربوط به خودش یعنی librcsc_X.X.X نصب شده است، برای نصب header ها و setup کلی کتابخانه دستور زیر را وارد کنید :
کد:
make install

حال کتابخانه نصب نصب شده است، فایلهای
کد:
.iso
ار میتوانید در پوشه ی
کد:
/usr/local/lib
مشاهده کنید.
خارج شده است
Saman
Saman Ismael
مدیر انجمن ها
*****
آنلاین آنلاین

تعداد ارسال: 138

تشکر
-داده شده: 24
-دریافت شده: 53



WWW
« پاسخ #2 : 10 بهمن 1388,ساعت 16:33:52 »

طریقه ی راه اندازی بیس Agent2D :
برای کامپایل و ایجاد باینری در Agent2D مراحا زیر را طی نمایید :

1. ورود به پوشه ی بیس کد با استفاده از دستورcd :
کد:
cd DIRNAME/agent2d_X.X.X

2. طبق معمول به دلیل استفاده از automake ، به دستور configure نیاز است :
کد:
./configure


3. حال تنها دستور make را وارد ترمینال کنید :
کد:
make
خارج شده است
Saman
Saman Ismael
مدیر انجمن ها
*****
آنلاین آنلاین

تعداد ارسال: 138

تشکر
-داده شده: 24
-دریافت شده: 53



WWW
« پاسخ #3 : 10 بهمن 1388,ساعت 17:05:54 »

ساختار Agent2D ( قسمت اول ) :

به طور عمده فایل های موجود در Agent2D متشکل از دو نوع هستند، فایل هایی که با پیشوند role آمده اند و فایل هایی که با پیشوند bhv آمده اند. role ها در واقع همان سیستم تصمیم گیری ای است که به صورت پیشفرض در آن مد نظر گرفته شده است.

- Role ها :

در Agent2D ، شش نوع role کاربردی وجود دارد که که عبارتند از :

1. role_center_back : مربوط به دو بازیکن دفاعی ( بازیکن 3 و 4 ) که نقش دفاعهای وسط را بر عهده داند.
2.role_side_back : مربوط به بازیکنان دفاع که در گوشه قرار دارند ( بازکنان 2 و 5 ).
3.role_defensive_half : مربوط به بازیکن شماره ی 6 که هافبک وسط میباشد.
4.role_offensive_half : مربوط به بازیکنان هافبک که در گوشه قرار دارند ( 7 و 8 ).
5.role_side_forward : مربوط به بازیکنان گوشه ی حمله ، یا به اصطلاح بازیکنان بال حمله، ( بازیکنان 11 , 10 )
6.role_center_forward : مربوط به بازیکن نوک حمله، یعنی بازیکن شماره ی 9 که در وسط بالها قرار داند.

تمامی فایلهای role ها متشکل از 3 قسمت هستند. که عبارتند از :

1. execute : این تابع که در حقیقت تابع اصلی فایل های role می باشد، متشکل از یک سیستم ساده است ،
کد:
void
RoleSample::execute( rcsc::PlayerAgent * agent )
{
    bool kickable = agent->world().self().isKickable();
    if ( agent->world().existKickableTeammate()
         && agent->world().teammatesFromBall().front()->distFromBall()
         < agent->world().ball().distFromSelf() )
    {
        kickable = false;
    }

    if ( kickable )
    {
        doKick( agent );
    }
    else
    {
        doMove( agent );
    }

}
همانطور که مشاهده میکنید، این تابع ، تابع مادر فایل است، که با یک if اصلی مشخص میکند که آیا توپ kickable هست یا خیر. در کد زیر شرطی که چک میشود بدین صورت است :
کد:
   if ( agent->world().existKickableTeammate()
         && agent->world().teammatesFromBall().front()->distFromBall()
         < agent->world().ball().distFromSelf() )
اگر این شرط درست باشد یعنی توپ قابل ضربه بود، متغیر kickable دارای مقدار true و اگر نبود، دارای مقدار false می شود.
سپس با توجه به kickable بودن توپ دو تابع وابسته یعنی doMove و doKick در تابع execute فراخوانی میشود.
کد:
   if ( kickable ) /// if ball is kickable call doKick
    {
        doKick( agent );
    }
    else  ///and if ball is kickable call doMove, it called in else
    {
        doMove( agent );
    }

2. تابع doKick : تابع doKick زمانی به کار میرود که توپ kickable باشد، یعنی قابل ضربه زدن برای عامل باشد.
 اگر در این تابع دقت کنید متوجه یک switch میشوید که در آن به کار رفته است،
کد:
void
RoleSample::doKick( rcsc::PlayerAgent * agent )
{
    switch ( Strategy::get_ball_area( agent->world().ball().pos() ) ) {
    case Strategy::BA_CrossBlock:
    case Strategy::BA_Stopper:
    case Strategy::BA_Danger:
    case Strategy::BA_DribbleBlock:
    case Strategy::BA_DefMidField:
    case Strategy::BA_DribbleAttack:
    case Strategy::BA_OffMidField:
    case Strategy::BA_Cross:
    case Strategy::BA_ShootChance:
    default:
        Bhv_BasicOffensiveKick().execute( agent );
        break;
    }
}

 برای درک بهتر نیاز است که سری به فایل strategy.cpp بزنیم، اگر در strategy.cpp دقت کنید تابعی در آن وجود دارد به نام get_ball_area که یک ورودی از نوع Vector2D میگیرد.
کد:
Strategy::BallArea
Strategy::get_ball_area( const rcsc::Vector2D & ball_pos )
{
    if ( ball_pos.x > 36.0 )
    {
        if ( ball_pos.absY() > 17.0 )
        {
            rcsc::dlog.addText( rcsc::Logger::TEAM,
                                __FILE__": get_ball_area: Cross" );
            return BA_Cross;
        }
        else
        {
            rcsc::dlog.addText( rcsc::Logger::TEAM,
                                __FILE__": get_ball_area: ShootChance" );
            return BA_ShootChance;
        }
    }
    else if ( ball_pos.x > -1.0 )
    {
        if ( ball_pos.absY() > 17.0 )
        {
            rcsc::dlog.addText( rcsc::Logger::TEAM,
                                __FILE__": get_ball_area: DribbleAttack" );
            return BA_DribbleAttack;
        }
        else
        {
            rcsc::dlog.addText( rcsc::Logger::TEAM,
                                __FILE__": get_ball_area: OffMidField" );
            return BA_OffMidField;
        }
    }
    else if ( ball_pos.x > -30.0 )
    {
        if ( ball_pos.absY() > 17.0 )
        {
            rcsc::dlog.addText( rcsc::Logger::TEAM,
                                __FILE__": get_ball_area: DribbleBlock" );
            return BA_DribbleBlock;
        }
        else
        {
            rcsc::dlog.addText( rcsc::Logger::TEAM,
                                __FILE__": get_ball_area: DefMidField" );
            return BA_DefMidField;
        }
    }
    else if ( ball_pos.x > -36.5 )
    {
        if ( ball_pos.absY() > 17.0 )
        {
            rcsc::dlog.addText( rcsc::Logger::TEAM,
                                __FILE__": get_ball_area: CrossBlock" );
            return BA_CrossBlock;
        }
        else
        {
            rcsc::dlog.addText( rcsc::Logger::TEAM,
                                __FILE__": get_ball_area: Stopper" );
            return BA_Stopper;
        }
    }
    else
    {
        if ( ball_pos.absY() > 17.0 )
        {
            rcsc::dlog.addText( rcsc::Logger::TEAM,
                                __FILE__": get_ball_area: CrossBlock" );
            return BA_CrossBlock;
        }
        else
        {
            rcsc::dlog.addText( rcsc::Logger::TEAM,
                                __FILE__": get_ball_area: Danger" );
            return BA_Danger;
        }
    }

    rcsc::dlog.addText( rcsc::Logger::TEAM,
                        __FILE__": get_ball_area: unknown area" );
    return BA_None;
}
تابع get_ball_area در حقیقت یک سیستم قسمت بندی زمین است که با توجه به هر قسمت در زمین، یک نام از enum ای که نامش BallArea میباشد، به آن اختصاص داده می شود. در حقیقت خروجی این تابع نام قسمتی است که توپ ( ورودی ) در آن قرار دارد.

همانطور که مشخص است ورودی این تابع در doKick مختصات توپ است، و با توجه به هر قسمت زمین که در یک case قرار گرفته شده است، دستوراتی که مختص آن ناحیه ایت ، توسط عامل انجام می شود.

3. تابع doMove : این تابع ازاحاط ساختاری کاملا همانند تابع doKick میباشد، با این تفاوت که این تابع زمانی فراخوانی میشود که توپ قابل ظربه زدن نباشد ( false  == kickable ) باشد. این تابع به نوعی positioning ( موقعیت یابی ) عامل را در حین بازی مشخص میکند ( با استفاده از دستورات مختص هر ناحیه از زمین ).
کد:
void
RoleSample::doMove( rcsc::PlayerAgent * agent )
{
    rcsc::Vector2D home_pos = Strategy::i().getPosition( agent->world().self().unum() );
    if ( ! home_pos.valid() ) home_pos.assign( 0.0, 0.0 );

    switch ( Strategy::get_ball_area( agent->world() ) ) {
    case Strategy::BA_CrossBlock:
    case Strategy::BA_Stopper:
    case Strategy::BA_Danger:
    case Strategy::BA_DribbleBlock:
    case Strategy::BA_DefMidField:
    case Strategy::BA_DribbleAttack:
    case Strategy::BA_OffMidField:
    case Strategy::BA_Cross:
    case Strategy::BA_ShootChance:
    default:
        Bhv_BasicMove( home_pos ).execute( agent );
        break;
    }
}
« آخرین ویرایش: 10 بهمن 1388,ساعت 18:42:08 توسط Saman » خارج شده است
Saman
Saman Ismael
مدیر انجمن ها
*****
آنلاین آنلاین

تعداد ارسال: 138

تشکر
-داده شده: 24
-دریافت شده: 53



WWW
« پاسخ #4 : 28 بهمن 1388,ساعت 17:14:32 »

ساختار Agent2D ( قسمت دوم ) :

بعد از بررسی ساختار Role ها در agent2d به بررسی ساختار Behavior ها ( یا bhv)  می رسیم این نوع فایل ها با پیشوند bhv در agent2d شناخته می شوند و به طور کلی در agent2d دو نوع فایل bhv وجود دارد.
1. bhv ها ی تصمیم گیری
2. bhv های مهارتی

1.  bhvهای تصمیم گیری :
که عبارتند از فایلهایی که برای تصمیمی گیری عامل در حین بازی در Role ها فراخوانی میشود. مانند :
bhv_basic_move ، bhv_basic_offensive_kick
در این فایل ها توابعی وجود دارد که بطور معمول در Roleها فراخوانی میشوند. بطور مثال ما در اینجا فایل role_offensive_half را بررسی میکنیم :
کد:
void
RoleOffensiveHalf::doKick( rcsc::PlayerAgent * agent )
{
    switch ( Strategy::get_ball_area( agent->world().ball().pos() ) ) {
    case Strategy::BA_CrossBlock:
    case Strategy::BA_Stopper:
    case Strategy::BA_Danger:
    case Strategy::BA_DribbleBlock:
    case Strategy::BA_DefMidField:
    case Strategy::BA_DribbleAttack:
    case Strategy::BA_OffMidField:
    case Strategy::BA_Cross:
    case Strategy::BA_ShootChance:
    default:
        Bhv_BasicOffensiveKick().execute( agent );
        break;
    }
}

void
RoleOffensiveHalf::doMove( rcsc::PlayerAgent * agent )
{
    rcsc::Vector2D home_pos = Strategy::i().getPosition( agent->world().self().unum() );
    if ( ! home_pos.valid() ) home_pos.assign( 0.0, 0.0 );

    switch ( Strategy::get_ball_area( agent->world() ) ) {
    case Strategy::BA_CrossBlock:
    case Strategy::BA_Stopper:
    case Strategy::BA_Danger:
    case Strategy::BA_DribbleBlock:
    case Strategy::BA_DefMidField:
    case Strategy::BA_DribbleAttack:
    case Strategy::BA_OffMidField:
    case Strategy::BA_Cross:
    case Strategy::BA_ShootChance:
    default:
        Bhv_BasicMove( home_pos ).execute( agent );
        break;
    }
}

همانطور که در کد پیداست در Bhv_BasicMove ،عامل، مهارت های positioning را انجام میدهد. و در Bhv_BasicOffensiveKick مهارت های پا به توپ وجود دارد.

2. bhvهای مهارتی :
این نوع bhv ها همانطور که از پیداست در مهارت های شخصی عامل مورد استفاده قرار میگیرد. مانند :
bhv_basic_tackle ، bhv_danger_area_tackle و ...
خارج شده است
Desert Eagle
کاربر نیمه فعال
**
آفلاین آفلاین

تعداد ارسال: 64

تشکر
-داده شده: 10
-دریافت شده: 14


vah7id@rocketmail.com


WWW
« پاسخ #5 : 06 فروردین 1389,ساعت 18:39:11 »

ایجوری که نگاه میکنم همه جاشو بلدم . فقط یه سوال :  قشنگ

من سورس یلی تیم ها روی ایجنت رو هوندم . اکثرا از توابع  آماده بیس استفاده کردن برای نوشتن استراتژی هاشون . پس
خودشون چه توابعب مینویسن ؟؟! اصلا تابعی مینویسن ؟؟
خارج شده است

you are a small target in my wide desert
my team official site ( new adress ) : DesertEagle 2D Soccer Simulation Team
Saman
Saman Ismael
مدیر انجمن ها
*****
آنلاین آنلاین

تعداد ارسال: 138

تشکر
-داده شده: 24
-دریافت شده: 53



WWW
« پاسخ #6 : 06 فروردین 1389,ساعت 22:19:18 »

ایجوری که نگاه میکنم همه جاشو بلدم . فقط یه سوال :  قشنگ

من سورس یلی تیم ها روی ایجنت رو هوندم . اکثرا از توابع  آماده بیس استفاده کردن برای نوشتن استراتژی هاشون . پس
خودشون چه توابعب مینویسن ؟؟! اصلا تابعی مینویسن ؟؟

خیلی خوبه که همه جاشو بلدی!

ببین چندتا چیز :
یکی اینکه بیس agent2d بیسی نیست که بگی باگ نداره! و از لحاظ ساختار پیاده سازی هم زیاد جالب نیست.

دوم اینکه به نظر من کسی باید بیاد روی ایجنت کد بزنه که روی UvA یا حالا بیس های دیگه بتونه کد بزنه! یعنی بتونه یه تیم خوب روی بیس غیر agent2d بنویسه! و صد البته در حال حاضر فکر کنم 90% تیم هایی که من می شناسم تیم UvA خوبی هم داشتند، مثل LEAKINDROPS، RoboSampad و ...
با این حال من فکر میکنم بهترین بیس موجود در حال حاضر بیس WrightEagle هست، که یکی از واضحترین ویژگیهاش وجود kick_model هست که تونسته تا حدی باگ kick موجود در server رو بگیره.
خارج شده است
Desert Eagle
کاربر نیمه فعال
**
آفلاین آفلاین

تعداد ارسال: 64

تشکر
-داده شده: 10
-دریافت شده: 14


vah7id@rocketmail.com


WWW
« پاسخ #7 : 06 فروردین 1389,ساعت 22:27:31 »

فقط یه سوال موقع اجرای تیم مثلا رو uva فایل playerteam اجرا میشد ولی رو agent 2d فایل های role اجرا میشن .
میخوام بدونم این role ها اشاره به player ها میکنن یا چیزه دیگه ای ؟؟!!

مثلا role _ center _ forward رو میشه اینجوری نوشت ؟؟؟ البته رو uva
کد:
if(WM->getplayerNumber()==9)
{
اینجا استرتژی ها رو فراخونی میکنه و دستورات تو case ها
}

منظور این role ها چیه ؟؟ اشاره به بازیکن ها دارن یا به ؟؟؟!!
« آخرین ویرایش: 06 فروردین 1389,ساعت 22:31:02 توسط Desert Eagle » خارج شده است

you are a small target in my wide desert
my team official site ( new adress ) : DesertEagle 2D Soccer Simulation Team
Saman
Saman Ismael
مدیر انجمن ها
*****
آنلاین آنلاین

تعداد ارسال: 138

تشکر
-داده شده: 24
-دریافت شده: 53



WWW
« پاسخ #8 : 06 فروردین 1389,ساعت 22:57:27 »

فقط یه سوال موقع اجرای تیم مثلا رو uva فایل playerteam اجرا میشد ولی رو agent 2d فایل های role اجرا میشن .
میخوام بدونم این role ها اشاره به player ها میکنن یا چیزه دیگه ای ؟؟!!

مثلا role _ center _ forward رو میشه اینجوری نوشت ؟؟؟ البته رو uva
کد:
if(WM->getplayerNumber()==9)
{
اینجا استرتژی ها رو فراخونی میکنه و دستورات تو case ها
}

منظور این role ها چیه ؟؟ اشاره به بازیکن ها دارن یا به ؟؟؟!!

ببین اگه یکم بالاتر رو بخونی نوشتم، آره اشاره به نوع PlayerType خاص بازیکن میکنن. اینی هم که نوشتی اینجوری میشه:
کد:
if(wm.self().unum() == 9 ) { hello; // :D }

اگه میخوای دستورای مربوط به بازیکن شماره 9 رو بنویسی باید توی role_center_forward بنویسی، حالا توی خود این فایل برای هر قسمت زمین یه دستور میتونی بنویسی.

اینطوری فرض کن :

کد:
if ( playerT ==PT_ATTACKER ) { role_center_forward }
« آخرین ویرایش: 06 فروردین 1389,ساعت 23:00:01 توسط Saman » خارج شده است
Desert Eagle
کاربر نیمه فعال
**
آفلاین آفلاین

تعداد ارسال: 64

تشکر
-داده شده: 10
-دریافت شده: 14


vah7id@rocketmail.com


WWW
« پاسخ #9 : 07 فروردین 1389,ساعت 00:05:54 »

پس درست فهمیده یودم . آخه من می خوام بدنه اصلی agent 2d رو بیارم رو uva و میشه گفت دارم یه سری تبدیلات از agent2d
به uva رو انجام میدم . به هرحال ممنون از راهنماییت .  قشنگ

حالا بهم بگو فرق بین اینکه شماره 9 و شماره 4 ما تو یک استراتژی مثلا BA_Stopper باشند و توپ kickable باشه از نظر action چیه ؟؟؟!!
خب هر دوشون باید پاس یا دریبل یا کار دیگه ای کنن دیگه پس چرا چند تا role Huh?
« آخرین ویرایش: 07 فروردین 1389,ساعت 00:21:14 توسط Desert Eagle » خارج شده است

you are a small target in my wide desert
my team official site ( new adress ) : DesertEagle 2D Soccer Simulation Team
Saman
Saman Ismael
مدیر انجمن ها
*****
آنلاین آنلاین

تعداد ارسال: 138

تشکر
-داده شده: 24
-دریافت شده: 53



WWW
« پاسخ #10 : 07 فروردین 1389,ساعت 10:47:15 »

پس درست فهمیده یودم . آخه من می خوام بدنه اصلی agent 2d رو بیارم رو uva و میشه گفت دارم یه سری تبدیلات از agent2d
به uva رو انجام میدم . به هرحال ممنون از راهنماییت .  قشنگ

حالا بهم بگو فرق بین اینکه شماره 9 و شماره 4 ما تو یک استراتژی مثلا BA_Stopper باشند و توپ kickable باشه از نظر action چیه ؟؟؟!!
خب هر دوشون باید پاس یا دریبل یا کار دیگه ای کنن دیگه پس چرا چند تا role Huh?

به نظر من بدنه ی اصلی ایجنت رو بیاری روی UvA شاید خوب نباشه، یعنی اگر برای هر PlayerType یه ایده داری این کارو بکن، چون عموما تیم های UvA بیس اینجوری نیستن که برای هر PlayerType بردارن یه سری اکشن بنویسن، منم قبلا این کارو کردم ( البته اون موقع agent2d1.0.0 بود ) که زیاد تاثیر مثبت روی تیم نداشت.

فرق اینیهم که شما گفتی اینه که موقعی که داری دفاع میکنه تیمت؛ وقتی توپ توی BA_Stopprt هست باید به بازیکن role_center_forward ات بگی که "آقا نرو بلاک یا مارک کن فلانی رو! " ،گرفتی؟
« آخرین ویرایش: 07 فروردین 1389,ساعت 10:49:44 توسط Saman » خارج شده است
Desert Eagle
کاربر نیمه فعال
**
آفلاین آفلاین

تعداد ارسال: 64

تشکر
-داده شده: 10
-دریافت شده: 14


vah7id@rocketmail.com


WWW
« پاسخ #11 : 07 فروردین 1389,ساعت 17:33:18 »

آخه میدونی چیه تیم من دیگه محدود شده و این دیگه آخرشه و نمیدونستم چه کنم گفته این کارو کنم شاید ماثر باشه و با چند نفر مشورت کردم و با پیشنهادم موافق بودن . یعنی شما میگید بی خیال شم ؟؟؟!!  گریه کردن
خارج شده است

you are a small target in my wide desert
my team official site ( new adress ) : DesertEagle 2D Soccer Simulation Team
Saman
Saman Ismael
مدیر انجمن ها
*****
آنلاین آنلاین

تعداد ارسال: 138

تشکر
-داده شده: 24
-دریافت شده: 53



WWW
« پاسخ #12 : 07 فروردین 1389,ساعت 17:37:08 »

آخه میدونی چیه تیم من دیگه محدود شده و این دیگه آخرشه و نمیدونستم چه کنم گفته این کارو کنم شاید ماثر باشه و با چند نفر مشورت کردم و با پیشنهادم موافق بودن . یعنی شما میگید بی خیال شم ؟؟؟!!  گریه کردن

ببین این نظر من بود، کد UvA ام رو هم release کردم، فک کنم داریش اگه هم نداری میتونی دانلود کنی، ( البته اینو بدون که هیچ کد تصمیم گیری ای روش نیست، پاک است! :دی )
توی اون من این کارو کردم؛

سورس های مبتنی بر بیس کد UVA

برای خوارزمی 88 -> CmorQ
خارج شده است
Saman
Saman Ismael
مدیر انجمن ها
*****
آنلاین آنلاین

تعداد ارسال: 138

تشکر
-داده شده: 24
-دریافت شده: 53



WWW
« پاسخ #13 : 07 فروردین 1389,ساعت 17:42:31 »

آخه میدونی چیه تیم من دیگه محدود شده و این دیگه آخرشه و نمیدونستم چه کنم گفته این کارو کنم شاید ماثر باشه و با چند نفر مشورت کردم و با پیشنهادم موافق بودن . یعنی شما میگید بی خیال شم ؟؟؟!!  گریه کردن

و اینکه هیچ وقت نمیشه گفت یه کد به تهش رسیده! اگه توی همه ی مهارتها فکر میکنی تهش رسیدی! برو سراغ یه ایده ی بهتر و جدیدتر! ( البته این نظر من بود! )
خارج شده است
Desert Eagle
کاربر نیمه فعال
**
آفلاین آفلاین

تعداد ارسال: 64

تشکر
-داده شده: 10
-دریافت شده: 14


vah7id@rocketmail.com


WWW
« پاسخ #14 : 07 فروردین 1389,ساعت 18:13:11 »

سورس تیمتو خوندم کلشو اما تا حالا نشده با تیمیrun کنم ؟؟ چطوره تیم agent خودتو (shahed tech ( رو میزنه ؟؟  قشنگ

یعنی نظرت اینه که مهارت های فردی ایجنت رو ارتقا یا از نو خفن تر بنویسم ؟؟!  Huh? ( یه پاس جدید ؟؟ یه شوت جدید ؟؟ ) فکر بدی نیست و لی تا چه حد میتونه کمک کنه >؟؟؟
خارج شده است

you are a small target in my wide desert
my team official site ( new adress ) : DesertEagle 2D Soccer Simulation Team
برچسب ها:
صفحه: [1] 2   بالا
چاپ صفحه
پرش به :  

Powered by MySQL Powered by PHP
IranWebAward
Powered By SMF 1.1.x | Translate By YaranTOOS Group | Hosted By HostIran
Copyright © 2009-2010 By IranRobocup All rights reserved.
Valid XHTML 1.0! Valid CSS!