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