4 / 4 / 1
Регистрация: 24.09.2012
Сообщений: 178
|
|
1 | |
Покер10.05.2013, 18:57. Показов 12835. Ответов 47
Метки нет (Все метки)
Хочу написать простенькую покерную программу на с++. Нужна помощь с архитектурой. Напишите, пожалуйста, какие классы стоит реализовать. Спасибо!
0
|
10.05.2013, 18:57 | |
Ответы с готовыми решениями:
47
Покер Покер Задача Покер Задача Покер |
4 / 4 / 1
Регистрация: 24.09.2012
Сообщений: 178
|
|
12.05.2013, 01:38 [ТС] | 2 |
Вот что я пока придумал...
Классы: - карта // объектами будут карты - колода // состоит из набора карт - игрок // хранит данные о фишках, возможных ходах и т.п. - стол // хранит информацию об игроках, текущем ходе, банке и т.п. - ИИ // н.к. Подскажите, пожалуйста, что добавить/убрать. После выложу прототипы классов. И ещё неплохо бы заранее придумать, как определть выиграшную комбинацию. Где об этом можно почитать по-подробнее? Заранее спасибо!
0
|
27 / 27 / 11
Регистрация: 26.10.2012
Сообщений: 101
|
||||||||||||||||
12.05.2013, 02:20 | 3 | |||||||||||||||
вот примеры:
вот тут с классами
1
|
4 / 4 / 1
Регистрация: 24.09.2012
Сообщений: 178
|
|||||||||||
12.05.2013, 23:11 [ТС] | 4 | ||||||||||
Большое спасибо!
Не по теме: Кстати, в первой программе классы определены именно так, как я и написал:p Попробую написать прототипы классов без "шпаргалки", поскольку только учу с++ и хочу всё сделать самостоятельно Добавлено через 7 часов 19 минут вот, что я пока написал. Гляньте, пожалуйста, и укажите на явные ошибки. Спасибо! Кликните здесь для просмотра всего текста
Кликните здесь для просмотра всего текста
Позже попробую написать более сложные классы: игрок и стол.
0
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
12.05.2013, 23:33 | 5 |
vlad_light, Я уже честно не помню но мне кажется намного проще сделать все в одном классе класс Poker например.
Как они у тебя взаимодействуют эти Card и Deck ???? Пиши все в одном головняка меньше будет. Добавлено через 14 минут Ладно я тебе уже помогу с архитектурой. Создай класс Poker в нем создай метод menu() - он будет выводить режими игры на 2 игрока либо с компом. Потом создай еще один метод game() в котором будет спрашиваться начать партию и выход из игры, если выбрать начать партию, то сдаются карты, значит придется создать метод для сдачи карт, а затем комп уже АИМ за него выберет скоко карт менять и тебе задаст вопрос какие карты ты хочешь поменять, значит создай метод для проверки комбинации и замены карт. Дальше уже ищем победителя, можно тот же самый метод "для проверки комбинации и замены карт вызвать только передать ему в качестве параметра допустим 1 (по умолчанию 0 будет) и сделать просто проверку определить кто победил (например в классе какой нибудь член победитель будет равен 0 если победил камп мы его ставим в один, если игрок то в 0), а затем уже просто в каком нить методе проверяем кто победил и выводим на экран победителя.
0
|
Каратель
|
|
12.05.2013, 23:44 | 6 |
нафига такой оператор сдался
Добавлено через 19 секунд разделяй и властвуй, учитывая что ваша репутация отрицательная я бы не стал доверять вашим советам Добавлено через 24 секунды что за вектор? для чего он? Добавлено через 3 минуты снова, нафига этот оператор? Добавлено через 27 секунд нафига пустой деструктор? Добавлено через 1 минуту ты серьёзно думаешь что напишешь алгоритм shuffle лучше чем он реализован в стандартной библиотеке?
1
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
12.05.2013, 23:57 | 7 |
vlad_light, Репутация это необъективно, главное это толковый совет, а я тебе советую все делать в одном классе ты не запутаешься и проще намного.
Хотя можно сделать традиционную иерархию дерево, но как ее можно сюда втулить? Корень(базовый класс) что будет? Делать проще в одном путаться не будешь, для данной программы это оптимальное решение. Сам подумай. Добавлено через 1 минуту Просто можешь делать вложенные классы. Добавлено через 4 минуты Да можно написать. есть так называемый эффективный алгоритм тосования колоды карт, там за одни проход цикла тасуется вся колода. (проход по всем картам количество итераци равно количеству карт) я уже этот алгоритм не помню, но он в Дейтелов есть.
0
|
4 / 4 / 1
Регистрация: 24.09.2012
Сообщений: 178
|
|
13.05.2013, 00:07 [ТС] | 8 |
0
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
13.05.2013, 00:28 | 9 |
vlad_light, Да ну что у тебя два класса Card и класс Deck, ну что тут за разделение Card это карта я так понял, а Deck это колода, ну и что? Deck у тебя толжно иметь Card ты можешь сделать Deck : public Card либо создать указатель на Card в самом Deck, И чем это тебе проще становиться от этого? Наоборот все запутано становиться. Как по мне так проще все в одном классе создать намного проще.
А дальше мне просто интересно какой же еще класс будет class Game наверно который должен иметь Deck? то есть Game : public Deck. Знаешь старина это то же самое что ты в одном классе все создаешь просто что разделение на классы и головомотня. Хотя кто его знает это просто мое ИМХО, я б не делил бы. Тем более программа на 400 строк, (я точно помню я не более 400, а может и 500 строк писал когда делал) Да не сомневайся, конечно он наверно не лучше чем в стандартной библиотеке, но там за один проход цикла все тасовалось и вроде даже и без rand() я щас точно не вспомню и лень ковырятся в файлах щас искать, что протормазонов кода потосуется колода как с rand(), это кода я первый раз делал, не зная про этот алгоритм нету, попробуй в гугле набрать эффективный алгоритм тасования колоды карт мб на него попадешь.
0
|
4 / 4 / 1
Регистрация: 24.09.2012
Сообщений: 178
|
|
13.05.2013, 00:44 [ТС] | 10 |
0
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
13.05.2013, 00:50 | 11 |
А как у тебя классы будут взаимодействовать? В каких отношениях у тебя находятся классы Deck и Card? Или это просто у тебя структуры данных? Deck - это колода, Card - это карта, а в колоде (Deck) должны быть карты (Card), значит Deck имеет Card, а как построить такое отношение? Есть два способа сделать Deck : public Card или Хронить объект на Card в Deck. Я сам просто не сильно шарю, да вринципе шарю норм, просто по другому не получается. Подумай!
0
|
vlad_light
|
13.05.2013, 00:58
[ТС]
#12
|
Не по теме: Ерунду пишешь!:rtfm:
0
|
ninja2
|
13.05.2013, 01:01
#13
|
Не по теме: Ладно ты не шаришь.
0
|
55 / 55 / 12
Регистрация: 01.12.2012
Сообщений: 456
|
|
13.05.2013, 01:49 | 14 |
0
|
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
||||||
13.05.2013, 02:09 | 15 | |||||
Я бы сделал как-то так. Соответственно разбив это на обьявление и имлементацию.
п.с. Тут не все. Так кратенький набросок.
1
|
4773 / 2582 / 894
Регистрация: 29.11.2010
Сообщений: 5,591
|
||||||
13.05.2013, 02:27 | 16 | |||||
Шаффл вообще не нужен -- нужно просто брать рандомную карту. Добавлено через 7 минут std::bitset поможет, кстати.
2
|
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
||||||
13.05.2013, 02:55 | 17 | |||||
2lemegeton
1. Ну один байт это если запретить выравнивание. 2. Card card(255). Это что за карта? 3. А теперь представьте. Ваш покер пользуется популярностью и Вы все улучшаете его и улучшаете. Кода все больше и больше. Время для переписывания все меньше и меньше. Как Вы думаете, Вы сразу сообразите что это
Каждый раз рандомить + хранить какая карта выбыла? Или все таки один раз перемешать.
0
|
4 / 4 / 1
Регистрация: 24.09.2012
Сообщений: 178
|
||||||
13.05.2013, 02:59 [ТС] | 18 | |||||
Например 4 бубен и король пик имеет вид (масти HDCS, ранг от 2 до А): ##...#23...KA23456...QKA 00....000...0000100....010 = 68719476738. Добавлено через 1 минуту Добавлено через 2 минуты
Не по теме: Вот, раскритиковали человека, а на самом деле очень умные вещи рассказывает. Просто мне до них ещё далеко, поэтому и не воспринимаю я такое...:-[
0
|
4773 / 2582 / 894
Регистрация: 29.11.2010
Сообщений: 5,591
|
|
13.05.2013, 03:02 | 19 |
Ок.
Я предлагаю сделать битсет, и хранить в нем все возможные карты. Перемешивать особо не выйдет. Да. Обязательная документация. Тот же смысл, что и Card card(255, 255).
0
|
4 / 4 / 1
Регистрация: 24.09.2012
Сообщений: 178
|
|
13.05.2013, 03:03 [ТС] | 20 |
2. Card card(255). Это что за карта?
такой, как я понял -- нету. И задаваться они будут в стиле Card card ((suit << 5) + rank), если я правильно понял код...
0
|
13.05.2013, 03:03 | |
13.05.2013, 03:03 | |
Помогаю со студенческими работами здесь
20
Графический покер Задача про покер Проверка на стрит(покер) Моделирование игры в покер Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |