9. Программирование пользовательского интерфейса

GAME_FINISH_SCORE = 100;

Но если теперь откомпилировать программу, то для оператора

if( Referee.Human.Scores >= GAME_FINISH_SCORE )

появится сообщение,об ошибке Undefined symbol "GAME_FINISH_SCORE" (символ GAME_FINISH_SCORE не определен).

Действительно, ведь мы превратили константу QAME_FINISH_SCORE, доступную во всех частях программы (как и должно быть) во внутреннюю переменную, и для обращения к ней надо указать содержащую ее неременную Referee:

Referee.GAME_FINISH_SCORE а ошибочный оператор надо изменить на .

if(Referee.Human.Scores >= Referee.GAME_FINISH_SCORE)

< *

Вывод нового значения в диалоговом окне

Если игровой порог менялся, но при последующих вызовах формы I nputForm в поле ввода будет по-прежнему показываться число 100, это значит, что интерфейс сделан неправильно. Так даже нельзя понять, до какого количества очков ведется игра. Прежде всего в главную форму надо добавить новое поле надписи (назвать его можно GameFinish), а в реализацию метода Showlnfo() надо добавить вывод в это поле текущего порога:

GameFinish->Caption = POROG_STR + IntToStr( Referee.GAME_FINISH_SCORE );

Константа POROG_STR описывается, как обычно, в файле Text.h:

const AnsiString POROG_STR = "Игра ведется до ";

Для того чтобы значение Referee.GAME_FINISH_SCORE исходно показывалось в поле ввода Input формы InputForm, надо в методе PItemClickQ перед вызовом формы присвоить свойству Text поля Input соответствующее число, преобразованное в текстовый вид:

InputForm->Input->Text =

IntToStr(Referee.GAME_FINISH_SCORE) ;

Теперь понятно, где надо сохранить введенное значение — в'переменной Referee.GAME_FINISH_SCORE. И здесь же надо начать новую игру — ведь при проверке методом Referee. GameFinish() используется переменная Referee.GAME_FINISH_SCORE, и если ее увеличить по сравнению с текущим

166