Robocode: програмирай свой танк-робот на Java!

Поради спецификата на играта, вероятността неспециалист (тоест, непрограмист :)) да прояви интерес към нея клони към нула, затова няма да пестя термините. Накратко:

Същност: Заглавието би трябвало да си казва всичко, но за неспециалистите и онези, които не могат да разшифроват телеграфичния ми стил: Свръхстилизирана игра с танкове, като играчът не управлява пряко танка, а пише програма, която контролира движението и стрелбата - един вид ИИ. Подробности — по-долу.

Сайт: robocode.sourceforge.net (има и статия за нея в Уикипедия)

Авторски права: Свободна (Common Public License; щях да се радвам повече, ако беше GNU GPL)

Платформа: Java (всяка ОС за PC, на която може да се инсталира JRE 1.5 и нагоре)

Размер: ~7 MB в разархивиран вид; идва в JAR архив ~3 MB (разбира се, отделно може да се изтегли и изходния код)

Битките изглеждат ето така:
Screenshot - A battle in Robocode
(това е най-малкия възможен размер “бойно поле” - 400×400 пиксела, ботовете са част от демонстрационните, които идват с инсталацията)

Мултиплейър: Няма възможност за игра в мрежа, но танковете могат да се пакетират, така че с помощта на някакъв вид пренос на данни (e-mail, IM, memory stick…) можете да си спретнете съревнования с ботовете на приятелчетата. Хранилището съдържа адски много чужди танкове. Има и организирани състезания с класация, както и отделни задачи/предизвикателства.

Най-елементарния код на бот (генерираното по подразбиране съдържание при New » Robot, със зададени моя псевдоним и име на робот):

package daggerstab;
import robocode.*;
//import java.awt.Color;

/**
 * MainGauche - a robot by (your name here)
 */
public class MainGauche extends Robot
{
	/**
	 * run: MainGauche's default behavior
	 */
	public void run() {
		// After trying out your robot, try uncommenting the import at the top,
		// and the next line:
		//setColors(Color.red,Color.blue,Color.green);
		while(true) {
			// Replace the next 4 lines with any behavior you would like
			ahead(100);
			turnGunRight(360);
			back(100);
			turnGunRight(360);
		}
	}

	/**
	 * onScannedRobot: What to do when you see another robot
	 */
	public void onScannedRobot(ScannedRobotEvent e) {
		fire(1);
	}

	/**
	 * onHitByBullet: What to do when you're hit by a bullet
	 */
	public void onHitByBullet(HitByBulletEvent e) {
		turnLeft(90 - e.getBearing());
	}

}

Все още съм в процес на разучаване на играта, но дори и след това, при времето, което мога да ̀и отделя, представянето на танковете ми ще е на нивото на експортна версия на T-55 в ръцете на арабски танкист. :twisted: Все пак нямам нищо против да премеря сили с други хора на моето ниво.

Ако някой иска повече информация - сайта на играта или коментарите тук.

Вашият коментар