начальный выбор через таверны? тогда вводишь логический массив, номер этоого массива соответствует какому-то герою (вообще-то у вас и так должен быть массив героев, и вот номера их должны совпадать). когда герой выбран, но в логическом массиве меняешь нет на да. а при выборе героя проверяешь какое значение в логическом массиве...
единственное плохо - может зациклится.
другой более запутанный вариант-
есть массив героев всего И штук.
выбираем случайное число от 1 до И ---- Х
выбор Х-го героя и присвоение его игроку
переобозначаем массив героев, то есть Х-ый герой ( в массиве)равен Х+1 герою
Х+1 равен Х+2 ( то есть осуществляем сдвиг на 1) и до последнего И-1 герой равен И герой
в конце переобозначаем: И=И-1
далее опять выбираем случайное число Х (то есть получили цикл равный количеству игроков)
Зачем делать для других новые карты...
... лучше устроить коту божественный почесон. :)