lesson 7 #7

Open
alexander wants to merge 1 commits from lesson_7 into master
Owner
  1. Создайте класс Date с полями день, месяц, год и методами доступа к этим полям. Перегрузите оператор вывода для данного класса. Создайте два "умных" указателя today и date. Первому присвойте значение сегодняшней даты. Для него вызовите по отдельности методы доступа к полям класса Date, а также выведите на экран данные всего объекта с помощью перегруженного оператора вывода. Затем переместите ресурс, которым владеет указатель today в указатель date. Проверьте, являются ли нулевыми указатели today и date и выведите соответствующую информацию об этом в консоль.

  2. По условию предыдущей задачи создайте два умных указателя date1 и date2.

    • Создайте функцию, которая принимает в качестве параметра два умных указателя типа Date и сравнивает их между собой (сравнение происходит по датам). Функция должна вернуть более позднюю дату.
    • Создайте функцию, которая обменивает ресурсами (датами) два умных указателя, переданных в функцию в качестве параметров.

Примечание: обратите внимание, что первая функция не должна уничтожать объекты, переданные ей в качестве параметров.

  1. Создать класс Deck, который наследует от класса Hand и представляет собой колоду карт. Класс Deck имеет 4 метода:

    • vold Populate() - Создает стандартную колоду из 52 карт, вызывается из конструктора.
    • void Shuffle() - Метод, который тасует карты, можно использовать функцию из алгоритмов STL random_shuffle
    • vold Deal (Hand& aHand) - метод, который раздает в руку одну карту
    • void AddltionalCards (GenericPlayer& aGenerlcPlayer) - раздает игроку дополнительные карты до тех пор, пока он может и хочет их получать
      Обратите внимание на применение полиморфизма. В каких методах применяется этот принцип ООП?
  2. Реализовать класс Game, который представляет собой основной процесс игры. У этого класса будет 3 поля:

    • колода карт
    • рука дилера
    • вектор игроков

Конструктор класса принимает в качестве параметра вектор имен игроков и создает объекты самих игроков. В конструкторе создается колода карт и затем перемешивается.
Также класс имеет один метод play(). В этом методе раздаются каждому игроку по две стартовые карты, а первая карта дилера прячется. Далее выводится на экран информация о картах каждого игра, в т.ч. и для дилера. Затем раздаются игрокам дополнительные карты. Потом показывается первая карта дилера и дилер набирает карты, если ему надо. После этого выводится сообщение, кто победил, а кто проиграл. В конце руки всех игроков очищаются.

  1. Написать функцию main() к игре Блекджек. В этой функции вводятся имена игроков. Создается объект класса Game и запускается игровой процесс. Предусмотреть возможность повторной игры.
1. Создайте класс Date с полями день, месяц, год и методами доступа к этим полям. Перегрузите оператор вывода для данного класса. Создайте два "умных" указателя today и date. Первому присвойте значение сегодняшней даты. Для него вызовите по отдельности методы доступа к полям класса Date, а также выведите на экран данные всего объекта с помощью перегруженного оператора вывода. Затем переместите ресурс, которым владеет указатель today в указатель date. Проверьте, являются ли нулевыми указатели today и date и выведите соответствующую информацию об этом в консоль. 2. По условию предыдущей задачи создайте два умных указателя date1 и date2. * Создайте функцию, которая принимает в качестве параметра два умных указателя типа Date и сравнивает их между собой (сравнение происходит по датам). Функция должна вернуть более позднюю дату. * Создайте функцию, которая обменивает ресурсами (датами) два умных указателя, переданных в функцию в качестве параметров. *Примечание: обратите внимание, что первая функция не должна уничтожать объекты, переданные ей в качестве параметров.* 3. Создать класс Deck, который наследует от класса Hand и представляет собой колоду карт. Класс Deck имеет 4 метода: * vold Populate() - Создает стандартную колоду из 52 карт, вызывается из конструктора. * void Shuffle() - Метод, который тасует карты, можно использовать функцию из алгоритмов STL random_shuffle * vold Deal (Hand& aHand) - метод, который раздает в руку одну карту * void AddltionalCards (GenericPlayer& aGenerlcPlayer) - раздает игроку дополнительные карты до тех пор, пока он может и хочет их получать Обратите внимание на применение полиморфизма. В каких методах применяется этот принцип ООП? 4. Реализовать класс Game, который представляет собой основной процесс игры. У этого класса будет 3 поля: * колода карт * рука дилера * вектор игроков Конструктор класса принимает в качестве параметра вектор имен игроков и создает объекты самих игроков. В конструкторе создается колода карт и затем перемешивается. Также класс имеет один метод play(). В этом методе раздаются каждому игроку по две стартовые карты, а первая карта дилера прячется. Далее выводится на экран информация о картах каждого игра, в т.ч. и для дилера. Затем раздаются игрокам дополнительные карты. Потом показывается первая карта дилера и дилер набирает карты, если ему надо. После этого выводится сообщение, кто победил, а кто проиграл. В конце руки всех игроков очищаются. 5. Написать функцию main() к игре Блекджек. В этой функции вводятся имена игроков. Создается объект класса Game и запускается игровой процесс. Предусмотреть возможность повторной игры.
alexander added 1 commit 2021-07-11 20:12:32 +00:00
This pull request can be merged automatically.
You are not authorized to merge this pull request.
You can also view command line instructions.

Step 1:

From your project repository, check out a new branch and test the changes.
git checkout -b lesson_7 master
git pull origin lesson_7

Step 2:

Merge the changes and update on Gitea.
git checkout master
git merge --no-ff lesson_7
git push origin master
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: alexander/geekbrains_oop_cpp#7
No description provided.