|
0 / 0 / 0
Регистрация: 01.12.2019
Сообщений: 2
|
|
Пьяница в с++01.12.2019, 21:10. Показов 646. Ответов 0
Доброго времени суток, нашёл на просторах киберфорума такой интересный код для игры пьяница, в котором существую правила игры, и в котором все делается автоматически. Прошу о такой вещи как, можно ли после игры вывести сам процесс игры, т.е ходы, и как вообще проходила игра. Спасибо за внимание!
#include <algorithm> #include <cstdlib> #include <ctime> #include <iostream> #include <iterator> #include <vector> ///////////////////////////////////////////////////////////////////////////////////////// typedef int T_card_value; typedef std::vector<T_card_value> T_card_deck; ///////////////////////////////////////////////////////////////////////////////////////// enum T_game_result { FIRST_IS_DRUNKARD, SECOND_IS_DRUNKARD, BOTH_ARE_BITTER_DRUNKARDS }; ///////////////////////////////////////////////////////////////////////////////////////// void make_rand_hands ( T_card_deck & deck, T_card_deck & hand_first, T_card_deck & hand_second ) { std::random_shuffle ( deck.begin (), deck.end () ); auto deck_half_it = deck.begin() + deck.size() / 2; std::copy ( deck.begin (), deck_half_it, std::back_inserter ( hand_first ) ); std::copy ( deck_half_it, deck.end (), std::back_inserter ( hand_second ) ); } ///////////////////////////////////////////////////////////////////////////////////////// void print_hand( T_card_deck const & hand ) { std::copy ( hand.begin (), hand.end (), std::ostream_iterator< T_card_value > ( std::cout, "\t" ) ); } ///////////////////////////////////////////////////////////////////////////////////////// bool card_is_higher_than ( T_card_value A, T_card_value B ) { return A == 0 && B == 9 || A > B; } ///////////////////////////////////////////////////////////////////////////////////////// void transform_hand_of_winner_and_other ( T_card_deck & hand_of_winner, T_card_deck & hand_other ) { std::rotate ( hand_of_winner.begin (), hand_of_winner.begin () + 1, hand_of_winner.end () ); hand_of_winner.push_back ( hand_other.front() ); hand_other.erase ( hand_other.begin() ); } ///////////////////////////////////////////////////////////////////////////////////////// void play_with_hands_and_set_result_and_turns _counter ( T_card_deck & hand_first, T_card_deck & hand_second, T_game_result & game_result, int & turns_counter ) { static const int TURNS_TOTAL_MAX = 106; for( int i = 0; i < TURNS_TOTAL_MAX; ++i ) { card_is_higher_than ( hand_first .front(), hand_second .front() ) ? transform_hand_of_winner_and_other ( hand_first, hand_second ) : transform_hand_of_winner_and_other ( hand_second, hand_first ); if ( hand_first .empty() || hand_second .empty() ) { game_result = hand_first.empty() ? FIRST_IS_DRUNKARD : SECOND_IS_DRUNKARD; turns_counter = i + 1; return; }//if }//for game_result = BOTH_ARE_BITTER_DRUNKARDS; } ///////////////////////////////////////////////////////////////////////////////////////// int main() { std::locale::global(std::locale("")); const int card_values[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; srand(unsigned(time(0))); T_card_deck deck; std::copy ( card_values, card_values + sizeof( card_values ) / sizeof( card_values[0] ), std::back_inserter( deck ) ); T_card_deck hand_first; T_card_deck hand_second; make_rand_hands ( deck, hand_first, hand_second ); std::cout << "Карты первого игрока:" << std::endl; print_hand( hand_first ); std::cout << std::endl << std::endl << "Карты второго игрока:" << std::endl; print_hand( hand_second ); T_game_result game_result = T_game_result(); int turns_counter = 0; play_with_hands_and_set_result_and_turns _counter ( hand_first, hand_second, game_result, turns_counter ); std::cout << std::endl << std::endl; if( game_result == BOTH_ARE_BITTER_DRUNKARDS ) { std::cout << "Оба горькие пьяницы."; } else { std::cout << ( game_result == FIRST_IS_DRUNKARD ? "Первый" : "Второй" ) << " игрок остался пьяницей за " << turns_counter << " ходов."; }//else std::cout << std::endl; system("pause"); }
0
|
|
| 01.12.2019, 21:10 | |
|
Ответы с готовыми решениями:
0
Написать программу, моделирующую карточную игру "Пьяница" и определяющую, кто из двух игроков выигрывает Смоделировать карточную игру "Пьяница" Реализация карточной игры "Пьяница" |
| 01.12.2019, 21:10 | |
|
Помогаю со студенческими работами здесь
1
Карточная игра "Пьяница" Игра "Пьяница" Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|