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

Однако в законченном приложении повторение одних и тех же случайных чисел, конечно, недопустимо. Чтобы этого избежать, в C++Builder имеется специальная стандартная функция randomize(), которую надо вызвать один раз при начале работы программы, и тогда в дальнейшем все обращения к random() не приведут к генерации уже известной последовательности. Вызывать функцию randomize() удобнее всего в конструкторе главной формы, до вызова новой игры:

randomize();

Referee.NewGame() ;

Showlnfo() ;

Для работы этой функции в файле DiceUnit.cpp необходимо также выполнить подключение двух заголовочных файлов: *

^include <stdlib.h> ^include <time.h> •

Перезапустите программу. Теперь выбрасываемые значения никогда повторяться не будут.

Оператор цикла

Выбор алгоритма поведения компьютерного игрока

Если вы попробуете поиграть со своей программой, то вскоре убедитесь, что она будет как правило проигрывать. Это неудивительно, ведь логику работы компьютерного оппонента мы задали очень примитивно. Компьютер всегда отказывается от продолжения серии бросков и на каждом ходу довольствуется одним результатом.

Следующий этап в создании законченной программы — повышение силы игры компьютера. Чтобы его сила резко повысилась, необходимо в методе ComputerMove() класса TReferee реализовать более сильный алгоритм игры. Не вдаваясь в детали его создания, скажем, что близкая к самой лучшей стратегия выглядит так: кидать кубик, пока либо не наберется 20 и более очков, либо пока он не будет брошен пять раз (при дальнейшем бросании кубика риск получить «кол» и потерять накопленное становится слишком велик).

157