Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ взаимодействие программ

Автор: compiler 9.04.2007 20:56

Добрый день!
есть программа она предлагает другим какоето
не так
представьте игру в 21 очко...
как реализовать взаимодействие между программами.. (при этом изначально главная программа не знает количество игроков...)
наверно надо как-то через внешний файл...
Заранее благодарен!

Автор: мисс_граффити 9.04.2007 21:00

игра, если не ошибаюсь, состоит в том, что человек получает карты и решает, брать ли еще одну. выигрывает тот, сумма очков которого ближе к 21, но не превышает. так?
а где здесь две программы умещаются? В чем функции каждой из них?

Автор: compiler 9.04.2007 21:05

игра не совсем эта, это для примера...
Есть прога которая сдаёт карты.. А есть прога/проги которые играют
Все программы могут быть написанные разными людьми и здорово было бы если они и компилировались отдельно... а взаимодействовали при самом выполнении..

Автор: volvo 9.04.2007 21:09

Механизм Unit-ов для этого и разрабатывался, чтобы компилировать отдельно разные части программы, возможно, создаваемые разными людьми...

Единственное, что надо - общий интерфейс, определяющий взаимодействие частей программы между собой, но от этого никуда не денешься в любом случае, даже если делать разные программы.

Автор: compiler 9.04.2007 21:23

Цитата(volvo @ 9.04.2007 17:09) *

Механизм Unit-ов для этого и разрабатывался, чтобы компилировать отдельно разные части программы, возможно, создаваемые разными людьми...

Единственное, что надо - общий интерфейс, определяющий взаимодействие между блоками, но от этого никуда не денешься в любом случае, даже если делать разные программы.

а где можно посмотреть наглядный пример...
я не совсем понял причем тут Unit-ы... как с ними работать(механизм для этой программы)

может как-то через файл... одна программа пишет другая читает...
в общем вот моя главная программа Прикрепленный файл  GAME0.0.5.PAS ( 1.63 килобайт ) Кол-во скачиваний: 538
и мои 2 "игрока"Прикрепленный файл  pl0.0.1.pas ( 471 байт ) Кол-во скачиваний: 545
Прикрепленный файл  2pl0.01.pas ( 428 байт ) Кол-во скачиваний: 538

Автор: Lapp 10.04.2007 2:03

Цитата(мисс_граффити @ 9.04.2007 18:00) *

а где здесь две программы умещаются? В чем функции каждой из них?

Допустим, несколько человек разрабатывают каждый свою программу, играющую в эту игру с применением ИИ. После этого нужно устроить турнир между этими программами и посмотреть, чья выиграет. При этом надо организовать взаимодействие этих программ от хода к ходу..
compiler, я правильно понял вопрос?
Цитата(compiler @ 9.04.2007 18:23) *

может как-то через файл... одна программа пишет другая читает...
Да, через файл, если речь идет о ТР. Только надо все продумать. Можно, чтоб каждая прога писала в свой файл: одна использует файл f1.dat, другая в f2.dat, третья в f3.dat и т.д. Каждая программа ждет появления файла предыдущего игрока. Как только он появляется - это значит, ее ход. Она его читает и стирает. Обрабатывает данные, ходит (то есть записывает данные в свой файл). Следующая видит, что эта сходила, и т.д.
32-битные компиляторы могут предоставить другие средства - сокеты, например.. Также есть механизм семафоров.. Но тебе пока будет достаточно обмена через файлы, мне кажется.

Автор: volvo 10.04.2007 2:46

compiler,
что именно должна возвращать программа? Через код возврата можно вернуть целое число 0 .. 255, если этого тебе достаточно, то можно организовать последовательный запуск программ через Exec, и последующий анализ DosExitCode (туда пишется значение n, которое программа возвращает через Halt(n))...

Хотя все-таки было бы проще ИИ каждого игрока скомпилировать в TPU файл и присоединить их все к программе-тестеру...

Автор: compiler 14.04.2007 22:38

Добрый день
Lapp понял правильно...
Из новых предложеных вариантов я ничего не понял sad.gif //возращать значение до 255 не то...

где можно посмотреть пример реализации предложеной Lapp-ом и/или обьяснение к другим вариантам..