- •Ход работы:
- •7.1 Описание классов.
- •7.2 Определяем первый класс Кубик - tDice
- •7.3 Описание метода для объекта Кубик, имитирующий его бросок.
- •7.4. Описываем класс Игрок
- •7.6 Описание Конструктора tPlayer
- •7.7 Описание класса судьи tReferee
- •7.7.1. Алгоритм реализация метода NewGameQ в файле Game.Cpp (смотри рисунок 5)
- •7.7.3 Метод GameFinish() дает информацию окончена ли игра или нет.
- •8. Продолжаем работать с интерфейсом программы на форме Form1.( смотри рисунок 1)
- •Событие «Новая игра»
- •8.2 Новая игра: описание методов ShowInfo(),EndGameTest().
- •8.2.1. Описание метода ShowInfo()
- •8.2.2 Текстовые константы , новый пользовательский файл Text.H
- •8.2.3. Конструктор класса tForm1
- •8.2.4. Проверка завершения текущей партии метод EndGameTest().
- •9. Программный код пункта меню «Новая Игра»
- •2.— А что делать, если партия продолжается?
- •10. Программный код пункта меню «Бросить кубик»
- •10. Программный код пункта меню «Передать очередь хода»
- •11. Продолжаем работать с интерфейсом программы на форме Form1.( смотри рисунок 1)
- •11.1 Настраиваем командные кнопки
- •12 Программирование пользовательского интерфейса
- •13. Случайная генерация
8.2.2 Текстовые константы , новый пользовательский файл Text.H
Текстовые строки Си++ записываются в виде последовательности символов, заключенных в кавычки. Это так называемые текстовые константы, которые удобно описывать с помощью ключевого словаconstи выносить в отдельный заголовочный файл.
Ведь если понадобится перевести программу на другой язык, то тогда не надо будет искать в каждом файле текстовые константы и переводить их, стирая старое значение. Достаточно подготовить несколько заголовочных файлов и просто менять их по мере необходимости. В С++Builder есть гибкие возможности, позволяющие выполнять включение различных фалов и даже компиляцию отдельных частей кода в зависимости от некоторых условий — это так называемая условная компиляция.
Выделение текстовых констант в отдельный файл делается так.
1. Выполните команду File -> New->Other.. (Файл-> Создать), в открывшемся диалоговом окне на вкладке New выберите значок Text (см. рис.7) и щелкните на кнопке ОК. В Редакторе откроется новый файл File1.txt.
Рис. 6. Создание файла текстовых констант
2. Сохраните этот файл в каталоге проекта с помощью команды File->Save As (Файл -> Сохранить как), дав ему имя Text.h (произвольно выбранное название, обозначающее, что в этом файле будут располагаться текстовые константы).
3. Введите первую текстовую константу. При ее определении после ключевого слова const надо явно указать тип этой константы (по умолчанию считается, что тип константы — целое число (int), во всех остальных случаях этот тип требуется указывать:
const AnsiString LAST_DICE_STR = "Последний бросок был " ;
Пробел в конце текстовой константы вставлен, чтобы слово «был» не сливалось с последующей цифрой. Для того чтобы отличать текстовые константы от числовых, к названиям текстовых констант в конце обычно приписывается суффикс _STR.
4. Включите этот файл командной строкой #include "Text.h" в файл DiceUnit.cpp перед командой включения DiceUnit.h.
Хотя используемые в программе текстовые константы и вынесены в отдельный файл, некоторые строки задаются в C++Builder с помощью Инспектора объектов (например, заголовки окон или всплывающие подсказки). Непосредственно в тексте приложения они не хранятся и заменять их вручную при переходе к другому языку весьма неудобно. Для решения проблемы поддержки нескольких национальных языков на всех уровнях C++Builder в Интернете можно легко найти подходящие бесплатные компоненты.
Текстовую константу LAST_DICE_STR надо сцепить с переведенным в текстовый вид значением переменной LastValue, входящей в состав объекта Dice (такое обращение к LastValue запишется как Dice.LastValue). Однако сама переменная Dice не доступна напрямую в создаваемой программе, так как скрыта в классе TReferee. К ней можно обратиться так:
Referee.Dice Тогда полное обращение к LastValue запишется в виде:
Referee.Dice.LastValue
В этом выражении выделение элемента класса происходит два раза и выполняется, согласно правилам Си++,слева направо.Сначала в переменной Referee выделяется переменная Dice класса TDice: Referee.Dice , а затем в переменой Dice выделяется переменная LastValue.
Тогда сцепление текстовой константы LAST_DICE_STR и результата вызова функции !ntToStr() будет выглядеть следующим образом:
LAST_DICE_STR + IntToStr( Referee.Dice.LastValue )
Итоговую строку , полученную выше, необходимо показать на форме через свойство Caption объекта LastDice, который сразу покажет свое содержимое в соответствующем поле окна программы. Это свойство доступно через указатель
LastDice->Caption = LAST_DICE + IntToStr(Referee.Dice.LastValue );// Эту строку впишите в код метода ShowInfo():
void TForm1::ShowInfo()
{//здесь будет располагаться текст метода, с использованием текстовых констант из нового
// файла Text.h
LastDice->Caption = LAST_DICE_STR + IntToStr(Referee.Dice.LastValue );
}
Теперь надо описать еще четыре текстовые константы в текстовом файле и вписать код в метод
const AnsiString HUMAN_CURRENT_STR = "Во время хода человека пока набрано " ;
const AnsiString HUMAN_ALL_STR = "Всего человек набрал " ;
const AnsiString COMPUTER_CURRENT_STR = "Во время хода компьютера пока набрано ";
const AnsiString COMPUTER_ALL_STR = "Всего компьютер набрал " ;
Их использование в методе ShowInfo() будет выглядеть так:
LastHumanScore->Caption = HUMAN_CURRENT_STR +IntToStr( Referee-Human.CurrentScores );
HumanScore->Caption = HUMAN_ALL_STR + IntToStr(Referee.Human.Scores );
LastComputerScore->Caption = COMPUTER_CURRENT_STR +IntToStr( Referee.Computer.CurrentScores );
ComputerScore->Caption = COMPUTER_ALL_STR + IntToStr(Referee.Computer.Scores );
Метод Showlnfo() будет вызываться в программе довольно часто, так как именно он ответственен за вывод информации пользователю.