Artificial Intelligence - هوش مصنوعی  
انجمن را در گوگل محبوب کنيد :

بازگشت   Artificial Intelligence - هوش مصنوعی > روبوکاپ > شبیه ساز فوتبال دوبعدی


 
تبليغات سايت
Iranian Association for the Advancement of Artificial Intelligence
ارسال تاپيک جديد  پاسخ
 
LinkBack ابزارهاي تاپيک نحوه نمايش
قديمي ۰۴-۱۴-۱۳۸۹, ۰۲:۲۴ بعد از ظهر   #1 (لینک دائم)
Administrator
 
آواتار Astaraki
 
تاريخ عضويت: خرداد ۱۳۸۷
محل سكونت: تهران-کرج!
پست ها: 3,465
تشكرها: 754
16,307 تشكر در 3,125 پست
My Mood: Mehrabon
ارسال پيغام Yahoo به Astaraki
Thumbs up آموزش و آشنایی با شبیه سازی فوتبال دو بعدی

آموزش و آشنایی با شبیه سازی فوتبال دو بعدی


اولین بار ایده ی برگزاری مسابقات فوتبال ربات ها توسط آقای مک ورث مطرح شد. در ابتدا توجه زیادی به این موضوع نشد تا اینکه آقای مک ورث به همراه چند تن دیگر مسایقاتی به نام Robot J-League در ژاپن برگزار کردند. پس از آن در پاییز سال 1993 میلادی تعدادی از محققان آمریکایی که از قبل در زمینه ی هوش مصنوعی فعالیت داشتند به این مسابقات علاقه نشان دادند و از آن پس آنرا Robot World Cup Initiative یا به طور خلاصه Robocup نامیدند.

در سال 1995 آقای کیتانو ( یکی از همکاران در برگزاری لیگ قبلی ) پیشنهاد داد تا اولین Robot World Cup Soccer Games and Conferences در سال 1997 برگزار شود.

اکنون مهم ترین هدف در این مسابقات هوش مصنوعی و مسائل مرتبط با آن است.

پس از آن ، فدراسیون Robocup تشکیل شد و پس از بررسی این هدف را به عنوان هدف اصلی فدراسیون در نظر گرفت:

By mid-21st century, a team of fully autonomous humanoid robot soccer
players shall win the soccer game, comply with the official rule of the FIFA,
against the winner of the most recent World Cup

در نیمه ی قرن بیست و یکم ، یک تیم شامل ربات های فوتبالیست انسان نما باید یک بازی فوتبال را به طور کامل طبق قوانین رسمی FIFA با قهرمان آخرین جام جهانی برگزار شده ، انجام دهد و از آن تیم ببَرد.

اولین سرور شبیه سازی فوتبال دو بعدی در سپتامبر سال 1993 با یک زبان برنامه نویسی به نام MWP نوشته شد که محدودیت هایی به همراه داشت به عنوان مثال بازیکنان را در صفحه ی کنسول به صورت کاراکتر نشان میداد.

اولین نسخه ی سرور ( نسخه ی 0 ) که پایه ی اصلی سرور های کنونی است در جولای سال 1994 به کمک زبان برنامه نویسی LISP و به شکل بک نرم افزار سرویس گیرنده - سرویس دهنده طراحی شد. این نرم افزار برای اتصال به کلاینت ( سرویس گیرنده ) ها از پروتکل TCP/IP استفاده می کرد.

در آگوست 1995 ، نسخه ی اول به زبان ++C به عنوان نسخه 1 بازنویسی شد.

پس از آن این نرم افزار ها که اصطلاحاً آن ها را server می نامیم در کنفرانس ها و مسابقات مختلف مورد بررسی قرار گرفت و تغییراتی در آن ایجاد شد از جمله ساختن log بازی ، رعایت قانون آفساید و ... و تا کنون 14 نسخه از این سرور ارائه شده است.

این نرم افزار تحت لیسانس GNU ( که الیته این اصطلاح غلط است چون تحت GFDL است که مربوط به GNU می شود ) قرار دارد.
همچنین این نرم افزار ، یک نرم افزار متن باز یا OpenSource است که همین امر باعث پیشرفت سریعتر سرور شده است و اکنون شاهد سرور 14 با قابلیت ارائه ی کارت زرد و قرمز به بازیکنان هستیم.
Astaraki آفلاين است   پاسخ با نقل قول
از Astaraki تشكر كرده است:
aftabgardan (۰۶-۲-۱۳۹۰)

  #ADS
نشان دهنده تبلیغات
تبليغگر
 
 
 
تاريخ عضويت: -
محل سكونت: -
سن: 2010
پست ها: -
 

نشان دهنده تبلیغات is online  
قديمي ۰۴-۱۴-۱۳۸۹, ۰۲:۲۵ بعد از ظهر   #2 (لینک دائم)
Administrator
 
آواتار Astaraki
 
تاريخ عضويت: خرداد ۱۳۸۷
محل سكونت: تهران-کرج!
پست ها: 3,465
تشكرها: 754
16,307 تشكر در 3,125 پست
My Mood: Mehrabon
ارسال پيغام Yahoo به Astaraki
Wink نرم افزار شبیه ساز این لیگ

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

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

همانطور که گفته شد این برنامه تحت GFDL قرار دارد و یک نرم افزار متن باز است و همین امر باعث پیشرفت سریع سرور و انتشار نسخه های بی شماری از آن گشته است که البته در نسخه های جدیدتر سعی شده است این نرم افزارِ شبیه ساز بیشتر به واقعیت نزدیک شود. هم اکنون سرور 14 منتشر شده است که ویژگی کارت زرد و قرمز نیز به آن اضافه گشته است.

هر تیم باید 12 برنامه ی خود را ( که 11 تای آنها برای بازیکنان است و یکی برای مربی تیم ) به کمک پُرت 6000 به سرور متصل کند( در واقع 12 برنامه ی ما همان سرویس گیرنده ها هستند و نرم افزار شبیه ساز همان سرویس دهنده ). این ارتباط به کمک پروتکل UDP/IP برقرار میگردد ؛ در نتیجه برنامه ی تیم ها می توانند به هر زبانی که پروتکل فوق را می شناسند ، نوشته شوند.

هر برنامه در واقع مغز هر بازیکن محسوب می شود که اطلاعات را از سرور دریافت می نماید و پس از تجزیه و تحلیل های لازم ، تصمیم نهایی را به سرور می فرستد تا توسط مشخصات بازیکن در سرور و به کمک توابع سرور پیاده سازی شود( به عنوان مثال برنامه یا مغز بازیکن اطلاعاتی را از سرور دریافت می کند و متوجه می شود که توپ در اختیار خودش است و خودش نزدیک دروازه ی حریف است و دروازه ی حریف خالی است ، سپس پیغامی به سرور ( برنامه ی شبیه ساز ) می فرستد با این عنوان که بازیکن در جهت D و با قدرت P توپ را شوت کند ، سپس سرور این پیغام را تجزیه تحلیل می کند و با در نظر گرفتن همه ی عوامل از جمله میزان انرژی بازیکن ، سرعت توپ و ... این عمل را پیاده سازی می کند ).

پیام ها به کمک یک رشته ی کاراکتری از سرور دریافت و یا به آن ارسال می شوند. نمونه ای از این پیغام ها به صورت زیر است:

Client to Server: (move X Y)
Server to Client: (init Side Unum PlayMode)
and etc

پیغام اول که از طرف برنامه ی ما به سرور فرستاده می شود می گوید که بازیکنی که این برنامه مربوط به او است از نقطه ی فعلی به نقطه ای با مختصات X و Y حرکت کند که X بین 52.5- تا 52.5 و Y بین 34- تا 34 است.

باید توجه داشت که بردار X ها ( بردار افقی ) در جهت زمین تیم حریف است ( یعنی مختصات در زمین ما منفی و در زمین تیم حریف مثبت است ) و همچنین بردار Y ها ( بردار عمودی ) همواره رو به بالا است ( یعنی مختصات پایین زمین منفی و مختصات بالای زمین مثبت است. ) و نقطه ی وسط زمین ، نقطه ی میدأ دستگاه مختصات است.

پیغام دوم که از طرف سرور به برنامه ی ما است در اول بازی پس از اتصال برنامه ی بازیکن به سرور فرستاده می شود ، که side مشخص می کند که تیم این بازیکن در سمت راست یا چپ زمین بازی می کند ، Unum شماره ی بازیکن رو بیان می کند که بین 1 تا 11 است و PlayMode حالت بازی را بیان می کند که معمولاً BeforeKickOff است مگر اینکه برنامه های شما بعد از شروع بازی به سرور متصل شوند.

برای آشنایی بیشتر با این پیغام ها ، می توانید به راهنمای نرم افزار شبیه ساز مراجعه نمایید.

پیام های یا در واقع دستوراتی که بازیکن باید انجام دهد دو نوع هستند ، آنهایی که می توانند چند بار در یک سیکل شبیه سازی ( هر سیکل 100 میلی ثانیه است که در طول مدت آن همه ی اشیای موجود در زمین بی حرکت می مانند و اگر قرار باشد تغییری در حرکت اشیای متحرک از جمله توپ و بازیکنان ایجاد شود ، در حرکت به سیکل بعد انجام می شود. البته در بعضی از حالت های بازی ، با اینکه سیکل بازی تغییر نمی کند اما بازیکنان می توانند بعضی از کارها را انجام دهند.) انجام شوند و آنهایی که تنها یک بار می توانند در یک سیکل انجام شوند. ( به عنوان مثال دستور شوت تنها می تواند یک بار در یک سیکل انجام شود اما دستور تغییر زاویه ی دید می تواند چند بار و یا به همراه دستورات دیگر در یک سیکل انجام شود. )

هر نیمه ی بازی 3000 سیکل شبیه سازی ( یعنی حدود 5 دقیقه ) است و در صورتی که نتیجه ی بازی دو تیم مساوی شود ، سرور به صورت خودکار وارد نیمه ی با قانون گل طلایی می شود که در سرور جدید 1000 سیکل است و اگر در این نیمه نیز نتیجه مساوی شد ، دوباره بازی با قانون گل طلایی انجام میگیرد و اگر دوباره نتیجه مساوی شد ، سرور به طور خودکار وارد حالت پنالتی می شود.

همچنین برنامه ای به نام مانیتور وجود دارد که اطلاعات را از طریق پرت 6000 از سرور دریافت می کند و مسابقه را به صورت گرافیکی نمایش می دهد.

پس از اینکه نرم افزار سرور را ببندید ، در همان محل اجرای این نرم افزار دو فایل با پسوند های rcl. و rcg. ذخیره می شوند که log آن بازی نام دارند.

در فایل با پسوند rcl ، تمام رشته های ارسال شده به سرور با شماره ی سیکل و شماره ی برنامه ( شماره ی بازیکن ) نوشته شده است.
در فایل rcg ، تمام رشته های ارسال شده به برنامه های بازیکنان نوشته شده است.

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

برای کسب اطلاعات بیشتر می توانید به راهنمای سرور مراجعه نمایید.
Astaraki آفلاين است   پاسخ با نقل قول
از Astaraki تشكر كرده است:
aftabgardan (۰۶-۲-۱۳۹۰)
قديمي ۰۴-۱۴-۱۳۸۹, ۰۲:۲۷ بعد از ظهر   #3 (لینک دائم)
Administrator
 
آواتار Astaraki
 
تاريخ عضويت: خرداد ۱۳۸۷
محل سكونت: تهران-کرج!
پست ها: 3,465
تشكرها: 754
16,307 تشكر در 3,125 پست
My Mood: Mehrabon
ارسال پيغام Yahoo به Astaraki
Smile

با نحوه ی نصب نرم افزار های RCSSServer ، RCSSMonitor و RCSSLogplayer بر روی سیستم عامل لینوکس Fedora Core 9 آشنا میشیم.

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

در صفحه ی ظاهر شده پس از صفحه ی پارتیشن بندی که مربوط به نصب بسته ها است ، سه گزینه ی زیر را تیک دار کنید:
Office and Productivity
Software Development
Web Server
و در پایین صفحه گزینه ی Customize now را انتخاب و next را فشار دهید.

در صفحه ی ظاهر شده ، باید این بسته ها ( پکیج ها ) را انتخاب نمایید:

Development -> Development Tools -> rpmdevtools-6.6-1.fc9.noarch ( in "Optional packages" list )
Development -> Development Tools -> rpmlint-0.82-3.fc9.noarch ( in "Optional packages" list )
Development -> Fedora Packager
Development -> Java Development
Development -> KDE Software Development
Base System -> Base -> tcsh-6.15-4.fc9.i386 ( in "Optional packages" list )
Servers -> Server Configuration Tools

حال می توانید به راحتی نرم افزار شبیه ساز را بر روی این لینوکس نصب نمایید. دوستانی که از لینوکس Ubuntu استفاده می کنند ، می توانند جهت کسب اطلاعات بیشتر به اینجا مراجعه نمایند.

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

من نسخه ی 13 نرم افزار شبیه ساز را برای نصب انتخاب کردم. البته شما می توانید نسخه های قدیمی تر را نیز به همین روش نصب نمایید. البته به شرط اینکه نسخه های قدیمی ، نسخه ی سورس سرور باشند. در ضمن باید دقت داشته باشید در نسخه های قدیمی قبل از سرور بسته ای به نام RCSSBase نصب می شد که در نسخه های جدید به همراه سرور نصب می شود. پس باید دقت داشته باشید که اگر نسخه ای قدیمی دریافت می کنید base را هم دریافت نمایید. همچنین بهتر است که همه ی نرم افزار های base و server و monitor و logplayer از یک نسخه باشند.
نسخه های قدیمی تر از نرم افزار شبیه ساز را می توان در اینجا پیدا کرد.

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

حالا برویم به سراغ نصب :

ابتدا همه ی فایل ها موجود در دایرکتوری rcss13 را از اینجا دانلود کنید.

این فایل ها را در لینوکس در دایرکتوری ( پوشه ای ) ذخیره کنید و نام آن را به عنوان مثال rcss13 بگذارید. حال یک ترمینال باز کنید. ( برای باز کردن ترمینال می توانید به منوی Application در نوار وظایف بالای صفحه ، System Tools بروید و بر روی terminal کلیک کنید.

حال با دستور cd به دایرکتوری rcss13 بروید. از این به بعد دستورات را از این دایرکتوری انجام می دهیم.

ابتدا همه ی فایل ها را از حالت فشرده خارج کنید:

كد:
$ tar -xvzf rcssserver-13.2.2.tar.gz
$ tar -xvzf rcssmonitor-13.1.0.tar.gz
$ tar -xvzf rcsslogplayer-13.1.1.tar.gz
ابتدا rcssserver را نصب می نماییم:

كد:
$ cd rcssserver-13.2.2
$ ./configure
در اینجا اگر بسته ی مورد نیازی بر روی سیستم عامل شما نصب نباشد و یا نسخه ی آن قدیمی تر از نسخه ی مورد نیاز باشد ، پیغام error دریافت خواهید کرد که به کمک آن می توانید نسخه ی مورد نیاز را از طریق قسمت به روز رسانی سیستم عامل لینوکس و یا از طریق اینترنت دریافت و نصب نمایید.
در صورتی که پیغام error دریافت نکردید ، فایل make ساخته می شود. حال به ادامه ی نصب می پردازیم:

كد:
$ make
در صورتی که هیچ پیغام خطایی دریافت نکردید ، به صورت زیر عمل کنید :

كد:
$ su root
Password:
# make install
حال نسخه ی سرور نصب شده است ، تنها کافی است با دستور exit از root خارج شوید. دقت داشته باشید برای دستور آخر احتیاج به سطح دسترسی کاربر root دارید که با دستور su این کار را کرده ایم. در صورتی که سطح دسترسی را به root تغییر ندهید ، پیغام خطا دریافت خواهید کرد.

حال نرم افزار های monitor و logplayer هم به صورت زیر نصب میگردند. ( اکنون در دایرکتوری rcss13 هستیم. )

كد:
$ cd rcssmonitor-13.1.0
$ ./configure
$ make
$ su root
Password:
# make install
# exit
$ cd ../rcsslogplayer-13.1.1
$ ./configure
$ make
$ su root
Password:
# make install
# exit
لطفاً ترتیب نصب را رعایت فرمایید ، در ضمن نباید فراموش کرد که اگر هر کدام از این نرم افزار ها نیز احتیاج به پکیج هایی داشته باشند که بر روی لینوکس شما نصب نباشد ، در مرحله ی configure پیغام خطا دریافت خواهید کرد.

حالا می توانید سرور و مانیتور را با هم ، با دستور rcsoccersim اجرا نمایید. برای اجرای جدا جدای آنها می توانید از دستور rcssserver برای اجرای سرور و از rcssmonitor برای اجرای نرم افزار مانیتور استفاده نمایید.

من پیشنهاد می کنم که پوشه ای به نام log بر روی لینوکس خود ایجاد کنید و همیشه با دستور cd وارد این پوشه شوید و سپس سرور را اجرا نمایید ، زیرا همه ی فایل های log بازی در یک جای مشخص ذخیره می شوند. ( همانطور که قبلاً گفتم ، فایل های log در محلی که سرور اجرا می شود ، ساخته می شوند. )

برای اجرای لاگ بازی ها هم می توانید از دستور زیر استفاده نمایید:
كد:
$ rcsslogplayer LogName.rcg
Astaraki آفلاين است   پاسخ با نقل قول
از Astaraki تشكر كرده است:
aftabgardan (۰۶-۲-۱۳۹۰)
قديمي ۰۴-۱۴-۱۳۸۹, ۰۲:۲۷ بعد از ظهر   #4 (لینک دائم)
Administrator
 
آواتار Astaraki
 
تاريخ عضويت: خرداد ۱۳۸۷
محل سكونت: تهران-کرج!
پست ها: 3,465
تشكرها: 754
16,307 تشكر در 3,125 پست
My Mood: Mehrabon
ارسال پيغام Yahoo به Astaraki
Cool

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

لینوکس در واقع سیستم عاملی بر پایه ی سیستم عامل یونیکس است. این سیستم عامل همانند سیستم عامل ویندوز می باشد البته با تفاوت های اساسی در پیکربندی شبکه ، امنیت شبکه ، سرعت اجرای برنامه ها ، تعداد نرم افزار ها و ...

از بیان تاریخچه ی این سیستم عامل و دیگر جزییات صرف نظر می کنم و تنها مطالب مهم را بیان می کنم. علاقه مندان می توانند کتاب مقدمه ای بر لینوکس را از اینجا دریافت و مطالعه نمایند.

ابتدا باید لینوکس را نصب نمایید ، برای این کار دو راه پیش رو دارید:
1- لینوکس را بر روی سیستم خود به صورت مستقیم نصب نمایید ( 1- نصب در کنار سیستم عامل دیگر ، 2- نصب سیستم عامل لینوکس به تنهایی بر روی یک سیستم )
2- یک نرم افزار شبیه ساز کامپیوتر یا Virtual Machine دریافت کنید ( که پیشنهاد من نرم افزار VMware Workstation است ) و بر روی آن لینوکس را نصب نمایید.

اگر از روش دوم استفاده می کنید که روش راحت تر و کم دردسرتری است ، تنها کافی است لینوکس مناسب خود را تهیه کنید ، راهنمای نصب آنرا با جستجو در اینترنت پیدا و مطالعه نمایید. ( البته مراحل نصب اکثر لینوکس ها مشابه است و فقط ظاهر تغییر می کند. ) تنها کافی است یک سیستم مجازی بسازید و به اندازه ی مورد نیاز مقدار فضای دیسک سخت و حافظه ی رَم را انتخاب نمایید. حال با اجرای این سیستم و گذاشتن سی دی یا دی وی دی لینوکس مربوطه داخل درایو، برنامه ی نصب لینوکس اجرا می شود و می توانید به کمک راهنمای نصب ، لینوکس را نصب نمایید.

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

اگر از روش اول استفاده می کنید در صورتی که بخواهید لینوکس تنها سیستم عامل شما باشد ( که کار بسیار قشنگی است ولی باید خیلی از عادت ها را فراموش کنید مثل اجرای فایل های exe و ... که البته ظاهراً این مشکلات هم رفع شده است ) همانند روش دوم عمل می کنید. اما دیگر اینجا به ساخت سیستم مجازی نیازی نیست ، تنها کافی است سی دی یا دی وی دی لینوکس مربوطه را داخل درایو قرار دهید تا سیستم با آن دیسک بوت شود و برنامه ی نصب اجرا گردد.

اما در صورتی که تمایل دارید لینوکس را در کنار سیستم عامل دیگری نصب نمایید ، تنها کافی است فضای لازم برای نصب لینوکس را خالی نمایید ، برای این کار به سیستم عامل دیگر خود بروید ، با نرم افزار مناسبی ( که من Partition Magic را پیشنهاد می کنم ) مقدار فضای لازم را خالی کنید به طوری که این قسمت از حافظه هیچ فرمتی نداشته باشد.
میزان فضای خالی لازم در سی دی نصب لینوکس و همچنین معمولاً در راهنمای نصب نوشته می شود.
پس از این کار وارد محیط نصب لینوکس شوید و در مرحله ی پارتیشن بندی گزینه ی "Use free space on selected drives and create default layout" را انتخاب نمایید. دقت داشته باشید در صورت وجود سیستم عامل دیگر تنظیمات مربوط به بوت هم برای شما ظاهر می شود که شما می توانید تعیین کنید که به صورت پیش فرض لینوکس بالا بیاید یا سیستم عامل دیگرتان.

در ضمن فراموش نکنید که همواره ابتدا سیستم عامل دیگر خود را نصب نمایید و بعد از آن لینوکس را مخصوصاً اگر سیستم عامل دیگر شما ویندوز است ، زیرا boot-loader ویندوز ، سیستم عامل لینوکس را نمی شناسد اما boot-loader لینوکس سیستم عامل های دیگر را می شناسد.

حال که نصب لینوکس به پایان رسید وارد سیستم عامل لینوکس می شویم ، سیستم عامل لینوکس شما در صورتی که با کارت گرافیک مشکلی نداشته باشد به صورت پیش فرض با حالت گرافیکی نصب و اجرا می شود ، در صورتی که تمایل دارید با محیط متنی کار کنید کافی است که با فشار دکمه های Alt+Ctrl و یکی از دکمه های F1 تا F6 وارد یکی از 6 محیط متنی لینوکس شوید.( و برای بازگشت به محیط گرافیکی Alt+F7 را فشار دهید. ) در ضمن می توانید در محیط گرافیکی پس از ورود به محیط کاربری خود ، با باز نمودن یک terminal از محیط متنی استفاده نمایید.

هنگامی که شما یک کاربر در لینوکس تعریف می کنید ، یک دایرکتوری یا فولدر یا پوشه در دایرکتوری home/ یا نام همان کاربر ایجاد می شود و از آن پس چه در محیط گرافیکی و چه در محیط متنی وارد محیط کاربری ، این کاربر شوید، مستقیماً در دایرکتوری مربوط به خودش قرار میگیرید ( البته بیان اینکه در محیط گرافیکی نیز در همین پوشه هستیم کمی پیچیده به نظر می رسد. ) به عنوان مثال اگر وارد محیط کاربری ، کاربر Ali شوید ، مستقیماً در دایرکتوری home/Ali/ قرار می گیرید.

حال لازم است کمی راجع به قرار گیری فایل ها در سیستم عامل لینوکس صحبت کنم ، بر عکس ویندوز که شما می توانید چند درایو داشته باشد ، در لینوکس آدرس ها به صورت درختی است یعنی یک دایرکتوری به نام ریشه وجود دارد که همه ی دایرکتوری ها و زیر دایرکتوری ها در آن قرار دارند. برای دسترسی به دایرکتوری ریشه کافی است از دستور / cd استفاده کنید.
در این دایرکتوری ، معمولاً دایرکتوری های زیر موجود هستند:

boot/ : شامل فرامین و فایل های مورد نیاز برای boot شدن است.
bin/ : شامل برنامه هایی است که از طریق terminal یا محیط متنی قابل اجرا هستند.
dev/ : شامل تمام فایل های مربوط به سخت افزار سیستم.
home/ : شامل تمام فهرست های خانگی ( دایرکتوری های کاربران ) به جز کاربر root
etc/ : شامل کل فایل های مربوط به پیکربندی سرویس های مختلف ، مدیریت کاربران و گروه ها است.
mnt/ و یا media/ : محلی است که می توان مثلاً CD ، فلاپی و Flash Memory و ... را روی آن سوار کرد.
lib/ : حاوی فایل های مورد نیاز هسته ی سیستم عامل و برنامه های کاربردی آن.
root/ : فهرست یا دایرکتوری خانگی کاربر root
sbin/ : حاوی فرامین مربوط به مدیریت سیستم.
temp/ : نگهداری فایل های موقتی.
var/ : حاوی فایل هایی برای ثبت وقایع سیستمی
proc/ : شامل تمام پروسه های در حال اجرا و مرتبط با هسته ی سیستم عامل.

البته ما بیشتر با دو دایرکتوری home/ و root/ سر و کار داریم.

دقت داشته باشید که می توان برای هر کدام از این دایرکتوری ها یک پارتیشن جدا تعریف کرد اما نحوه دسترسی به آنها از طریق همین فهرست یا دایرکتوری ریشه ( / ) است.

و نکته ی پایانی این جلسه در مورد کاربر root:
کاربر root اجازه ی هر تغییری را در سیستم عامل دارد ( بالاترین سطح دسترسی را دارد ) برای همین پیشنهاد می کنم به جز در مواقع ضروری وارد محیط کاربری ، کاربر root نشوید
Astaraki آفلاين است   پاسخ با نقل قول
از Astaraki تشكر كرده است:
aftabgardan (۰۶-۲-۱۳۹۰)
قديمي ۰۴-۱۴-۱۳۸۹, ۰۲:۴۶ بعد از ظهر   #5 (لینک دائم)
Administrator
 
آواتار Astaraki
 
تاريخ عضويت: خرداد ۱۳۸۷
محل سكونت: تهران-کرج!
پست ها: 3,465
تشكرها: 754
16,307 تشكر در 3,125 پست
My Mood: Mehrabon
ارسال پيغام Yahoo به Astaraki
پيش فرض دستورات مهم و پر کاربرد برای ما در محیط متنی لینوکس

البته برای آشنایی با تمام دستورات می توانید به دو فایل ضميمه مراجعه نمایید:

ابتدا یک terminal باز کنید ( که روش باز کردن آن قبلاً گفته شده است.) و یا وارد محیط متنی لینوکس شوید. دقت داشته باشید که ممکن است در بعضی از نسخه های جدید لینوکس ، محیط متنی اجرا نشود.

حال شما می توانید از دستورات زیر استفاده نمایید:
( توجه نمایید که همواره خط فرمان با $ یا # همراه است ، علامت # تنها برای کاربر root ظاهر می شود و علامت $ برای کاربران غیر از root ظاهر می شود. )

1. دستور cd : این دستور شما را از دایرکتوری جاری ( دایرکتوری یا پوشه ای که در آن قرار دارید ) به دایرکتوری مقصد که در جلوی این دستور تایپ می کنید می برد. به عنوان مثال:
کد:
$ cd /mnt/floppy
که شما را از دایرکتوری جاری که در آن هستید به دایرکتوری mnt/floppy/ منتقل می کند.
لازم است با این دایرکتوری ها هم آشنا شوید:
. : دایرکتوری جاری.
.. : دایرکتوری ماقبل. به عنوان مثال اگر پس از دستور فوق ، دستور .. cd را بزنید به دایرکتوری mnt/ منتقل می شوید. در ضمن در دایرکتوری ریشه این دستور همانند دستور . cd عمل می کند.
~ : دایرکتوری کاربر. برای کاربر root دایرکتوری کاربر root/ است.
/ : دایرکتوری ریشه.
مثال:
کد:
$ cd ~
$ cd ..
$ cd /
# cd .
2. دستور pwd : به شما نشان می دهد که در کدام دایرکتوری قرار دارید. برای مثال فرض کنید در دایرکتوری کاربر ali قرار دارید ، با زدن این دستور داریم:
کد:
$ pwd
/home/ali
3. دستور ls : لیست فایل ها و دایرکتوری های موجود در دایرکتوری جاری را به شما نشان می دهد. این دستور می تواند option هم داشته باشد. به مثال های زیر توجه کنید:
کد:
$ ls
$ ls -l
$ ls -a
$ ls -l -a
$ ls -la
در اولین خط ، این دستور تنها فایل ها و دایرکتوری های غیر مخفی را به صورت معمولی نشان می دهد.
در دومین خط ، این دستور فایل ها و دایرکتوری های غیر مخفی را به صورت لیست نشان می دهد.( علت این نحوه ی نمایش استفاده از l- در جلوی دستور است. به این جملات اضافی در جلوی دستور که معمولاً بعد از -- و یا - می آیند ، option می گویند. )
در سومین خط ، این دستور همه ی فایل ها و دایرکتوری ها را به صورت معمولی نشان می دهد.
دستور خط چهارم و پنجم یکی است و ترکیبی از دستور دوم و سوم است یعنی این دستورها همه ی فایل ها و دایرکتوری ها را به صورت لیست نشان می دهند. ( دقت کنید که می توان option های یک حرفی را که با - مشخص می شوند ، مانند بالا با هم ترکیب کرد. در ضمن توجه شود که گاهی ترتیب اِعمال option ها اهمیت دارد. )

حال که با option ها آشنا شدیم بهتر است یک option مهم که همه ی دستورات آن را دارند ، بیان کنم. h- و یا help-- ، که نحوه ی استفاده از آن دستور و همچنین option های آن دستور را معرفی می کند.

در اینجا از بیان دستورات cp ( برای کپی کردن ) ، mkdir ( برای ساخت یک دایرکتوری ) ، mv ( برای تغییر نام فایل و انتقال یک فایل یا دایرکتوری به دایرکتوری دیگر ) و rm ( برای پاک کردن فایل و دایرکتوری ) خودداری می کنم زیرا می توان آنها را به صورت گرافیکی انجام داد ولی اگر مایل به استفاده از آنها در محیط متنی هستید می توانید به فایل های فوق مراجعه نمایید.

4. دستور vi : در واقع این دستور با گرفتن آدرس یک فایل متنی در جلوی خودش ، آن فایل متنی را در محیط متنی باز می کند. به عنوان مثال:
کد:
$ vi /UvA-Base/src/PlayerTeams.cpp
که فایل PlayerTeams.cpp را باز می کند. لازم است با دستورات زیر در ویرایشگر متن vi آشنا شوید:
برای نوشتن در متن دکمه ی i یا دکمه ی insert را فشار دهید. برای خروج از حالت ویرایش دکمه ی Esc را فشار دهید.
در حالت غیر ویرایش می توانید از گزینه های زیر استفاده نمایید:
کد:
:q
از ویرایشگر خارج می شود. اگر تغییری در فایل داده اید و نمی خواهید فایل را ذخیره کنید ، کافی است علامت ! را به انتهای دستور فوق اضافه نمایید.
کد:
:w
تغییرات فایل را ذخیره می کند ، در صورتی که فایل ReadOnly باشد ، در بعضی از موارد با اضافه کردن علامت ! به آخر دستور فوق می توان فایل را با تغییرات ایجاد شده ذخیره کرد.
کد:
:x
تغییرات فایل را ذخیره می کند و فایل را می بندد.
کد:
/string
رشته ی مورد نظر را ( string ) در فایل جستجو می کند ، اگر تعداد تکرار آن در فایل بیش از یکی باشد ، می توان با زدن دکمه ی n ، موارد بعدی را یافت.

البته من پیشنهاد می کنم اگر از محیط گرافیکی استفاده می کنید ، به جای استفاده از ویرایشگر ساده ی vi از ویرایشگر gedit استفاده کنید ( با دستور gedit ). البته برای ویرایش و کار بر روی کد های مربوط به شبیه سازی فوتبال دو بعدی که در جلسه ی بعد کار بر روی آن را شروع خواهیم کرد ، من ویرایشگر NetBeans را معرفی می کنم.

5. دستور tar : ما اینجا از این دستور معمولاً به دو صورت زیر استفاده می کنیم:
کد:
$ tar -xvzf FileName.tar.gz
یا
کد:
$ tar -xvzf FileName.tgz
یا
کد:
$ tar -xvf FileName.tar
برای باز کردن یک فایل فشرده یا آرشیو شده.
و
کد:
$ tar -zcf FileName.tgz DirName
یا
کد:
$ tar -zcf FileName.tar.gz DirName
یا
کد:
$ tar -zcf FileName.tgz FileName
یا
کد:
$ tar -zcf FileName.tar.gz FileName
برای فشرده سازی یک دایرکتوری یا یک فایل.

6. دستور ++g : برای کامپایل کردن فایل های ++C ، البته در صورتی که gcc نصب باشد. اگر برنامه ی شما شامل چند فایل است ، باید نام همه ی آنها را با فاصله در جلوی این دستور بنویسید. پس از اجرای این دستور در صورتی که برنامه ی شما خطای کامپایل نداشته باشد ، فایل اجرایی a.out ساخته می شود. برای تغییر نام این فایل اجرای می توانید به صورت زیر عمل کنید:
کد:
$ g++ CPPandHeaderFilesName -o FileName.out
که یک فایل اجرایی به نام FileName.out می سازد.

7. دستور make : این دستور معمولاً برای نصب برنامه هایی که سورس آنها موجود است به کار می رود ، معمولاً باید قبل از این دستور ، دستور configure/. و بعد از آن make install را اجرا نمایید.

8. برای اجرای فایل های اجرایی و یا shell در لینوکس باید به کمک دایرکتوری جاری ( . ) آنرا اجرا نمایید ، به عنوان مثال اجرای فایل a.out :
کد:
$ ./a.out
فکر کنم تمام دستورات لازم رو بیان کردم ، برای کسب اطلاعات بیشتر می تونید به فایل های فوق مراجعه نمایید.
در ضمن باید بگم که دستورات مربوط به کار با شبکه نیز در این لیگ اهمیت دارد اما فعلاً از بیان آنها خودداری می کنیم زیرا فعلاً کار های مهم تری در پیش است.
فايل ضميمه
نوع فايل: pdf Linux Command Reference List.pdf (69.1 كيلو بايت, 193 نمايش)
نوع فايل: pdf Linux Manual[1].pdf (93.0 كيلو بايت, 180 نمايش)
Astaraki آفلاين است   پاسخ با نقل قول
از Astaraki تشكر كرده است:
aftabgardan (۰۶-۲-۱۳۹۰)
قديمي ۰۴-۱۴-۱۳۸۹, ۰۳:۳۹ بعد از ظهر   #6 (لینک دائم)
Administrator
 
آواتار Astaraki
 
تاريخ عضويت: خرداد ۱۳۸۷
محل سكونت: تهران-کرج!
پست ها: 3,465
تشكرها: 754
16,307 تشكر در 3,125 پست
My Mood: Mehrabon
ارسال پيغام Yahoo به Astaraki
Wink بیس ( Base )

بیس اصطلاحاً به سورس کد های معروفی گفته می شود که توسط تیم های مطرح منتشر می شوند و معمولاً دستورات سطح پایین تر را که مستقیماً با سرور مسابقه در ارتباط هستند را پیاده سازی کرده اند و برنامه نویسی الگوریتم های سطح بالاتر همچون الگوریتم شوت ، پاس و ... را به شما سپرده اند.

بیس های ایرانی و غیر ایرانی معروفی در زمینه ی شبیه سازی فوتبال دو بعدی منتشر شده اند اما بهترین بیس که همواره جهت آموزش از آن استفاده می شود ، UvA_Base است.

UvA_Base در سال 2003 توسط آقای Jelle Kok نوشته شد ، سپس توسط آقای مهدی نامی برای نسخه 12 و 13 سرور آماده شد که البته ایراداتی داشت که اینجانب آنها را رفع نمودم و شما می توانید نسخه ی بنده را از اینجا دریافت نمایید.

همچنین می توان گفت این بیس دارای کاملترین توضیحات نسبت به بیس های دیگر است که این مستندات را می توانید از لینک های زیر دریافت نمایید:

مستندات و توضیحات با فرمت PDF
مستندات و توضیحات با فرمت CHM
راهنمای کاربر

*** متنی که در زیر خواهد آمد ، خلاصه ای است از راهنمای کاربر بیس آقای کوک ***

الگوریتم پیش فرض این بیس این است که سریع ترین بازیکن به توپ ( بازیکن هم تیمی که سریع تر از همه به توپ می رسد. ) توپ را میگیرد و آنرا بدون توجه به فاصله اش از دروازه ی حریف به یکی از گوشه های آن شوت می کند. دیگر بازیکنان به نقطه ی استراتژیک خود ( نقطه ای که با توجه به محل اصلی ( خانه ) بازیکن و محل فعلی توپ محاسبه می شود. ) حرکت می کنند.

برنامه ی اصلی بازیکنان این تیم ( به جز دروازه بان ) در تابع deMeer5 ( موجود در فایل PlayerTeams.cpp ) نوشته شده است.

بیس به کلاس های متعددی تقسیم شده است که بعضی از آنها را در زیر به طور خلاصه معرفی می کنم:

- کلاس Connection : این کلاس با سوکت مورد نظر ارتباط برقرار می کند و از این طریق پیام ها را به سرور ارسال و یا از سرور دریافت می کند.

- کلاس SenseHandler : این کلاس پیام هایی را که از سرور می آیند ، دریافت و تجزیه می نماید. سپس اطلاعات را به کلاس WorldModel ارسال می نماید.

- کلاس ActHandler : این کلاس دستوراتی که برنامه می خواهد به سرور بفرستد را دریافت و به دو صورت در داخل یک ساختار داده ی صف ذخیره می نماید ( برای اینکه دستورات به ترتیب انجام گیرند ). سپس با تبدیل تک تک آنها به یک رشته ی کاراکتری ، آنها را به سرور ارسال می نماید.

- کلاس WorldModel : این کلاس شامل تمام اطلاعات زمین و اشیای موجود در آن ( همچون سرعت و موقعیت بازیکنان ، توپ و ... ) که بازیکن در آن لحظه آنها را مشاهده کرده است. ( اطلاعات نسبت به مشاهده ی هر بازیکن می تواند متفاوت باشد. ) بنابراین این کلاس حاوی متد های بسیار زیادی است که دسته بندی آنها را به جلسات آینده موکول می نمایم. ( این کلاس ، یکی از کلاس های مهم و پر کاربرد است. )

- کلاس Object : این کلاس شامل اطلاعاتی در مورد تمام اشیای موجود در زمین است که به شش دسته ی زیر تقسیم می شوند:

1- Object : یک کلاس کلی برای تعریف متغیر های تمامی اشیا همچون موقعیت شی و ...

1-1- FixedObject : شامل اشیا ثابت موجود در زمین همچون پرچم ها و خطوط می شود که از کلاس Object مشتق شده است و هیچ خاصیت اضافه تری نسبت به آن ندارد.

1-2- DynamicObject : این کلاس نیز از کلاس Object مشتق می شود و شامل اشیا متحرک زمین می شود و تنها ویژگی که به آن اضافه شده است ، سرعت است.

1-2-1- BallObject : یک زیرکلاس از کلاس اشیا متحرک است که اطلاعاتی را راجع به توپ به ما می دهد و نسبت به لایه ی بالاتر خود ( اشیا متحرک ) هیچ ویژگی اضافه تری ندارد.

1-2-2- PlayerObject : این کلاس نیز از کلاس اشیا متحرک مشتق شده است و حاوی اطلاعات بازیکنان ( چه هم تیمی و چه رقیب ) است. این کلاس به لایه ی بالاتر خود ویژگی هایی همچون زاویه ی گردن و بدن را اضافه کرده است. یک متغیر بولی در این کلاس وجود دارد که مشخص می کند بازیکن دروازه بان است یا خیر. باید دقت شود که بازیکن مورد نظر ما که اکنون در حال اجرای برنامه است ( مغز بازیکن ما ) از این کلاس استفاده نمی کند.

1-2-2-1- AgentObject : این کلاس از کلاس PlayerObject مشتق شده است که شامل اطلاعاتی در مورد بازیکن فعلی ما ( بازیکنی که این برنامه را اجرا می کند. ) است. اطلاعاتی که به این کلاس نسبت به کلاس بالاتر اضافه شده است شامل استمینا یا انرژی بازیکن و زاویه و کیفیت دید می شود.

- کلاس BasicPlayer : این کلاس حاوی تمام توانایی ها ( skills ) ای است که بازیکن ما ( بازیکنی که در حال اجراست ) می تواند آنها را انجام دهد. البته باید توجه داشت که اجرا این توانایی ها به حالت محیط اطراف نیز بستگی دارد. ( این کلاس ، یکی از کلاس های مهم و پر کاربرد است. )

- کلاس PlayerSettings : این کلاس حاوی پارامتر هایی است که کلاس BasicPlayer از آنها استفاده می کند. به عنوان مثال پارامتر dPassEndSpeed که بیش ترین سرعت توپ را هنگامی که توپ به هم تیمی پاس داده می شود ، مشخص می نماید.

- کلاس Player : این کلاس از کلاس BasicPlayer مشتق شده است و شامل متد هایی است که مشخص می کند در شرایط مورد نظر بازیکن ما چه عملی را انجام دهد. متد های موجود در این کلاس تقریباً از اکثر کلاس های موجود در بیس مانند WorldModel ، PlayerSettings و ... استفاده می نمایند.

- کلاس Formations : این کلاس حاوی اطلاعاتی در مورد فرمیشن ( چینش تیم ) های معتبر به همراه تابعی برای مشخص کردن مکان ( نقطه ی ) استراتژیک بازیکن است.

- کلاس ServerSettings : این کلاس حاوی تمام پارامتر هایی از سرور فعلی است که از آن استفاده می شود همانند پارامتر player_speed_max که نهایت سرعت یک بازیکن را مشخص می کند. مقدار دهی این پارامتر ها اولین بار توسط سرور بعد از اینکه بازیکن به سرور متصل شد انجام می شود.

- کلاس SoccerTypes : این کلاس حاوی تمام متغیر های شمارشی ( enumeration ) است که انوع مختلفی را که در زمین شبیه سازی فوتبال استفاده می شوند را معرفی می کنند. ( این کلاس ، یکی از کلاس های مهم و پر کاربرد است. )

- کلاس SoccerCommands : این کلاس تمام اطلاعات لازم جهت ساخت یک دستور که بتوان آنرا به سرور ارسال کرد را دارد.

- کلاس VecPosition : این کلاس حاوی نمایشی برای مختصات (x,y) است و همچنین حاوی متد هایی برای اعمال بر روی این مختصات است.

- کلاس Line : این کلاس شامل نمایشی برای خط ax+by+c=0 است و در آن می توان به دو صورت یک خط را تعریف کرد ، به کمک دو نقطه و یا با یک نقطه و یک زاویه. همچنین این کلاس حاوی متد های دیگری نیز هست.

- کلاس Circle : این کلاس شامل نمایشی برای یک دایره و متد هایی برای اعمال بر روی آن است.

- کلاس Rectangle : این کلاس شامل نمایشی برای یک مستطیل و متد هایی برای اعمال بر روی آن است.

برای کسب اطلاعات بیش تر می توانید به مقاله ی مربوطه مراجعه نمایید.

ويرايش شده توسط Astaraki; ۱۱-۱۲-۱۳۸۹ در ساعت ۱۲:۱۸ بعد از ظهر
Astaraki آفلاين است   پاسخ با نقل قول
از Astaraki تشكر كرده اند:
aftabgardan (۰۶-۲-۱۳۹۰), hadi1370 (۰۸-۱۷-۱۳۸۹)
قديمي ۱۰-۹-۱۳۸۹, ۰۱:۴۶ بعد از ظهر   #7 (لینک دائم)
عضو جدید
 
آواتار mohammadali
 
تاريخ عضويت: دي ۱۳۸۹
محل سكونت: IRan
پست ها: 8
تشكرها: 4
2 تشكر در 2 پست
پيش فرض

سلام
ای کاش اسم نویسنده ی این مقالات هم میگفتید!
من این مقالات رو نوشتم.
M A Taghvazadeh :: Home
mohammadali آفلاين است   پاسخ با نقل قول
از mohammadali تشكر كرده است:
Astaraki (۱۱-۱۰-۱۳۸۹)
قديمي ۱۱-۱۲-۱۳۸۹, ۱۲:۰۵ بعد از ظهر   #8 (لینک دائم)
عضو فعال
 
آواتار maaheno
 
تاريخ عضويت: مهر ۱۳۸۹
محل سكونت: كرج
پست ها: 11
تشكرها: 134
29 تشكر در 5 پست
پيش فرض

سلام ببخشید هنوز این یکی حل نشده
نقل قول:
نوشته اصلي بوسيله reyhane نمايش پست
شما می توانید نسخه ی بنده را از اینجا دریافت نمایید.
maaheno آفلاين است   پاسخ با نقل قول
قديمي ۱۱-۱۲-۱۳۸۹, ۱۲:۲۲ بعد از ظهر   #9 (لینک دائم)
Administrator
 
آواتار Astaraki
 
تاريخ عضويت: خرداد ۱۳۸۷
محل سكونت: تهران-کرج!
پست ها: 3,465
تشكرها: 754
16,307 تشكر در 3,125 پست
My Mood: Mehrabon
ارسال پيغام Yahoo به Astaraki
Wink

sorry، اصلاح شد
فايل ضميمه
نوع فايل: gz uva-base_ttu_version.tar.gz (535.4 كيلو بايت, 227 نمايش)
Astaraki آفلاين است   پاسخ با نقل قول
قديمي ۰۵-۱۴-۱۳۹۰, ۰۴:۴۱ بعد از ظهر   #10 (لینک دائم)
عضو جدید
 
آواتار morteza_m13612000
 
تاريخ عضويت: تير ۱۳۹۰
پست ها: 3
تشكرها: 1
0 تشكر در 0 پست
پيش فرض

سلام من از ubontu استفاده می کنم حالا که همه رو به روش بالا نصب کردم موندم چطور اجراش کنم و کجا باید برنامه نوشت
morteza_m13612000 آفلاين است   پاسخ با نقل قول
پاسخ



كاربران در حال ديدن تاپيک: 1 (0 عضو و 1 مهمان)
 
ابزارهاي تاپيک
نحوه نمايش

قوانين ارسال
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is فعال
شکلکها فعال است
كد [IMG] فعال است
كدهاي HTML غير فعال است
Trackbacks are فعال
Pingbacks are فعال
Refbacks are فعال




زمان محلي شما با تنظيم GMT +3.5 هم اکنون ۰۹:۳۱ بعد از ظهر ميباشد.


Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0 ©2007, Crawlability, Inc.

Teach and Learn at Hexib | Sponsored by www.Syavash.com and Product In Review

استفاده از مطالب انجمن در سایر سایت ها، تنها با ذکر انجمن هوش مصنوعي به عنوان منبع و لینک مستقیم به خود مطلب مجاز است

Inactive Reminders By Icora Web Design