Что-то в таком духе(осторожно, хабр!), только с уклоном в алгоритмы:
1) сражаются 2 юнита
2) присутствует гравитация
Программа моделирования будет написана на C++, алгоритмы агентов будут вынесены в отдельные программы и будут получать/отправлять информацию об эволюции системы через stdin/stdout, будут написаны на Лиспе ибо он поддерживает инкрементальное программирование и рефакторинг без попоболи. Программа моделирования будет запускать программы-агенты и перенаправлять их ввод/вывод в fifo, через которые будет с ними общаться, либо 2-ой способ(для джейла, например): получать пути к fifo через входные параметры.
Но! При попытке реализации сабжа у меня случился фейл: перенаправление потоков ввода/вывода ведет себя совсем не так, как я ожидал.
Вот пример.
#include <iostream>
using namespace std;
int main ()
{
for (;;) {
int c1, c2;
cin >> c1 >> c2;
cout << "incoming! " << c1 << " " << c2 << endl;
}
}
$ g++ tst.cpp -o tstp
$ ./tstp
0
1
incoming! 0 1
2 3
incoming! 2 3
4 5 6 7 8
incoming! 4 5
incoming! 6 7
9
incoming! 8 9
C-c C-c
$
$ mkfifo in
$ ./tstp < in
$ echo 0 1 > in
incoming! 0 1
incoming! 0 1
incoming! 0 1
incoming! 0 1
incoming! 0 1
incoming! 0 1
incoming! 0 1
incoming! 0 1
incoming! 0 1
...
Если перенаправлять поток внутри программы, результат такой же.