Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Описание класса судьи TReferee
Описание класса СУДЬИ надо продолжить в файле Game.h, вслед за описанием класса TPlayer: class TReferee { public: TPlayerHuman, Computer; // две переменные типа TPlayer — игрока-человека и //игрока-компьютера TDiceDice; // переменная типа TDice— кубик void ComputerMove(); // ТРИ МЕТОДА: ход компьютера bool GameFinish(); //проверка на конец партии, метод возвращает значение true || false void NewGame (); //новая игра }; Вполне возможно, что в дальнейшем понадобятся и другие вспомогательные методы. Будем добавлять их по мере возникновения такой потребности. Способность предусмотреть и заранее точно определить, какие методы каждого класса будут реально востребованы в работе, считается признаком высокого профессионального мастерства программиста. Алгоритм реализация метода NewGameQ в файле Game.cpp (смотри рисунок 5) Сначала надо проинициализировать внутренние переменные каждого игрока, а затем определить, чья очередь хода. Для этого можно бросить кубик, и если на нем выпадут числа 1, 2 или 3, то надо сделать ход за компьютерComputerMove(), в противном случае — считать, что очередь хода человека и ожидать его действий(т.е. вернуться к игре и выполнить ход за человека, нажав кнопку или выбрав пункт меню Бросить Кубик), завершив работу метода. В описании класса судьи введена переменная Human, которая определена наследником класса TPlayer, поэтому переменной Human доступны все данные класса class TPIayer { public: int Scores, CurrentScores, WinNum; void Init(); }; Правило обращения к переменным класса: при работе со стандартными или автоматически созданными объектами C++Builder (окна и расположенные на них визуальные компоненты), представленными указателями, для доступа к их свойствам и методам надо использовать знак «->», а при работе с переменными собственных классов — символ «.» (подробно использование точки или -> описано выше в теории). Рис.5 Список переменных и методов, доступных HUMAN
На рисунке 5 при обращении к переменной классаHuman, после точки появляется список (система BuilderC++ таким образом контролирует использование принципов ООП). Если списка данных не появилось, следовательно надо проверить идентификаторы в описании классов При вводе объекта Dice, проверьте корректность Dice., в появившемся списке выберите методGetDiceValue() Текст метода приведен ниже: // Новаяигра void TReferee:: NewGame() { Human.Init(); Computer.Init(); if(Dice.GetDiceValue()< = 3) ComputerMove(); }
7.7.2. Алгоритм работы методаComputerMove() пока можно реализовать самым простым способом. Для простоты предположим, что компьютер во время своего хода всегда бросает кубик только один раз.
// Ходкомпьютера void TReferee:: ComputerMove() { Computer.CurrentScores = 0; // Пока на данном ходу не набрано никаких очков: // Если на кубике выпала не единица, то... if(Dice.GetDiceValueO! = 1) // Запомнить очки текущего хода иПодсчитатьочки Computer.CurrentScores = Dice.LastValue; Computer.Scores = Computer.Scores + Computer.CurrentScores;
// Так как теперь ход человека, надо обнулить очки его текущего хода: Human.CurrentScores = 0; }
|