nixp.ru v3.0

22 октября 2017,
воскресенье,
21:58:34 MSK

DevOps с компанией «Флант»
Longobard написал 9 сентября 2005 года в 23:46 (467 просмотров) Ведет себя как мужчина; открыл 291 тему в форуме, оставил 2499 комментариев на сайте.

http://robocode.sourceforge.net/

собсно сабж.

Ни у кого нет желания посоревноваться? ;)

Curu3MyHg

угу, только сегодня в аську заслали:

Вертолетный симулятор/тренажер адаптировали для Австралии. Заказчик потребовал добавить стада кенгуру как деталь ландшафта. Исполнитель отнесся халтурно, сделал модель кенгуру и прилепил ее методом copy/paste на логику пехотинца, поменяв только модуль отрисовки. В результате, когда вертолет на приемке прошел над стадом кенгуру, оные рассредоточились, перегруппировались и на втором заходе сбили вертолет из ПЗРК.
myst
LONGOBARD
http://robocode.sourceforge.net/

собсно сабж.

Ни у кого нет желания посоревноваться? ;)

Не вопрос!

Longobard

итак, на след. выходных обмениваемся результатами.

P.S.: ессно можно спереть чужого бота (найти в инете хорошую реализацию и переименовать :) ). Но давайте все же будем честными, ок? ;)

myst

Не уверен, что до следующих сделаю. Работы много, я пока толко скачал. Но как только так сразу.

Longobard

ок

Longobard

Я тоже только начал, вот вчера на паре по инфе сочинял на бумажке стратегию, по которой должен работать идеальный бот.

decvar

сочинил? ;)

rgo

прикольно :)))

Вот такой робот телепортуется:

package test;
import robocode.*;
//import java.awt.Color;
/**
 * TestRobot - a robot by (your name here)
 */
public class TestRobot extends Robot
{
      
      public boolean kill_moving = false;
      public boolean kill_rotating = false;
      /**
       * run: TestRobot's default behavior
       */
      class Rotation extends Thread {
            TestRobot r;
            Rotation (TestRobot r) {
                  this.r = r;
            }
            public void run () {
                  out.println ("Hi.");
                  while (!r.kill_rotating) {
                        out.println ("Rotating...");
                        r.turnLeft (360 * (Math.random () - .5));
                  }
            }
      }
      class Moving extends Thread {
            TestRobot r;
            Moving (TestRobot r) {
                  this.r = r;
            }
            public void run () {
                  out.println ("Hi.");
                  while (!r.kill_moving) {
                        out.println ("Moving...");
                        r.ahead (100);
                        r.back (100);
                  }
            }
      }
      public void run() {
            Rotation r = new Rotation (this);
            Moving m = new Moving (this);
            
            r.start ();
            m.start ();
            while(true) {
                  try {
                        wait (10);
                  } catch (Throwable o) {
                        try {
                              kill_moving = kill_rotating = true;
                              r.join ();
                              m.join ();
                        } catch (Throwable t) {
                              return;
                        }
                        return;
                  }
            }
      }
      /**
       * 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());
      }
      
}

Но чего то мне не понять механизма действия телепорта. Написано ж в RobotPeer.java:

if (Thread.currentThread() != robotThreadManager.getRunThread())
      {
            throw new RobotException("You cannot take action in this thread!");
      }
rgo

Понял… Ни фига не телепортуется. Просто раунд завершается из-за этого исключения и начинается новый.