Создаем диалоговое окно

пункт &Порог с названием PUnit (свойство Name в Инспекторе объектов). Для него не надо создавать вложенного подменю.

Дважды щелкните на этом пункте — C++Builder автоматически создаст метод реакции на его выбор, а уже из этого метода будет вызываться форма InputForm.

Логическое отрицание

Однако игровому порогу желательно задавать новое значение не в процессе партии, а только после ее окончания. Этот момент отслеживался в методах обработки броска кубика и передачи хода (помните оператор return?) Новая проверка будет похожей, однако показывать вторую форму надо, только если игра закончена, в противном случае (партия продолжается) следует сообщить об этом игроку и завершить работу метода.

Проверку завершения игры мы выполняли методом Referee.GameFinish(). Но теперь б,лок условного оператора должен быть выполнен, только если игра не завершена. Как это записать?

В Си++ помимо логических операций «&&» и «¦¦», для каждой из которых требуются два операнда, имеется также операция логического отрицания «!» (НЕ), которая записывается всегда слева от единственного операнда, то есть она работает как стандартная функция с единственным параметром, только не требует скобок. В рассматриваемом случае выражение, значением которого будет true, если игра продолжается, запишется так:

! Referee.GameFinish()

При вычислении такого выражения сначала будет получено значение Referee.GameFinish() (если игра продолжается, это будет false), а затем к нему будет применена операция !, и значение false изменится на противоположное значение true.

h01631.jpg

Операцию «!» корректно применять только к логическим значениям типа boot. Результатом !true будет false, результатом ifalse — true.

Вызов новой формы

Чтобы вызвать вспомогательную (не главную — она вызывается автоматически) форму создаваемой программы, надо использовать метод этой формы Show():

InputForm->Show() ;

163