Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Tigran1998
0 / 0 / 0
Регистрация: 22.11.2016
Сообщений: 1
#1

Игра в покер С++(по Дейтелу) - C++

22.11.2016, 17:04. Просмотров 119. Ответов 0
Метки нет (Все метки)

Здравствуйте!
Написал программу по приведенной снизу задаче, но она только раз из 20 работает правильно, в остальные разы выдает глюк -бесконечное возвращение конечного результата. В ней нужно использовать ссылки.

Вот задача:
Тасование и раздача карт в покер, его надо модифицировать. Нужно написать такую программу, которая моделирует игру в покер так, чтобы функция раздачи карт раздавала на руки пятикарточный покер. Затем напишите следующие дополнительные функции:
a) Определите, находится ли на руках пара.
b) Определите, находятся ли на руках две пары.
c) Определите, находятся ли на руках три валета.
d) Определите, находятся ли на руках четыре туза.
e) Определите, находится ли на руках флеш (все пять карт одной
масти).
f) Определите, находятся ли на руках пять карт с последователь-
последовательными фигурами.

Модифицируйте программу так,
чтобы она могла моделировать сдающего. Пять карт сдающего сда-
сдаются рубашкой вверх, так что игрок не может видеть фигуры на
картах. Программа должна затем оценить карты на руках сдающего
и, основываясь на их качестве, сдающий должен засветить допол-
дополнительно одну, две или три дополнительные карты, чтобы заменить
соответствующее количество ненужных карт в исходной раздаче.
Затем программа должна оценить заново раздачу на руки.

Помогите, пожалуйста, чем сможете.
Вот код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#include<iostream>
#include<iomanip>
#include<stdlib.h>
#include<time.h>
#include<locale>
 
using namespace std;
 
void shuffle(int[][13]);
void deal(const int[][13],const char*[],const char*[]);
void bubbleSort(int*,const int);
 
int main()
{
    setlocale(0,"RUS");
 
    const char *suit[4]={"Черви","Бубны","Трефы","Пики"};
    const char *face[13]={"Туз","Двойка","Тройка","Четвёрка",
                    "Пятерка","Шестерка","Семерка",
                    "Восьмерка","Девятка","Десятка",
                    "Валет","Дама","Король"};
    int deck[4][13]={0};
    int card=1;
 
    for(int i=0;i<=3;i++)
        for(int j=0;j<=12;j++){
            deck[i][j]=card;
            card++;
        }
    srand(time(NULL));
 
    shuffle(deck);
    deal(deck,face,suit);
    cout<<endl;
 
    return 0;
}
 
void shuffle(int wDeck[][13])
{
    int row,column,hold;
    for(int card=1;card<=52;card++){
        for(int i=0;i<=3;i++)
            for(int j=0;j<=12;j++){
                row=rand()%4;
                column=rand()%13;
                hold=wDeck[i][j];
                wDeck[i][j]=wDeck[row][column];
                wDeck[row][column]=hold;
            }
    }
}
void deal(const int wDeck[][13],const char *wFace[],
    const char *wSuit[])
{
    int valets=0,aces=0,flesh=1,holdRow=0,posled=1,holdFace=0;
    const int arraySize=5;
    int razdacha[arraySize];
    for(int card=1;card<=5;card++){
        for(int row=0;row<=3;row++)
            for(int column=0;column<=12;column++)
                if(wDeck[row][column]==card){
                    if(row=holdRow)
                        flesh++;
                    holdRow=row;
                    for(int a=card+1;a<=5;a++)
                        for(int i=0;i<=5;i++)
                            for(int j=0;j<=12;j++)
                                if(wDeck[i][j]==a)
                                    if(wFace[j]==wFace[column])
                                        cout<<"У вас на руках пара:"<<endl
                                            <<wFace[column]<<" масти "<<wSuit[row]<<endl
                                            <<wFace[j]<<" масти "<<wSuit[i]<<endl;
                    if(column==10)
                        valets++;
                    if(column==0)
                        aces++;
                    razdacha[card-1]=column;
                }
    }
    
    bubbleSort(razdacha,arraySize);
 
    for(int i=0;i<arraySize;i++){
        if(razdacha[i]=holdFace)
            posled++;
        holdFace=razdacha[i];
    }
 
    if(valets==3)
        cout<<"У вас на руках 3 валета"<<endl;
    if(aces==4)
        cout<<"у вас на руках 4 туза"<<endl;
    if(posled==5)
        cout<<"У вас на руках 5 карт с последовательными фигурами"<<endl;
    if(flesh==5)
        cout<<"у вас на руках флеш"<<endl;
 
}
void bubbleSort(int *array, const int size)
{
    void swap(int *,int *);
 
    for(int pass=1;pass<size;pass++)
        for(int j=0;j<size-1;j++)
            if(array[j]>array[j+1])
                swap(&array[j],&array[j+1]);
}
 
void swap(int *element1Ptr, int *element2Ptr)
{
    int temp=*element1Ptr;
    *element1Ptr=*element2Ptr;
    *element2Ptr=temp;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2016, 17:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Игра в покер С++(по Дейтелу) (C++):

Задача по Дейтелу - C++
Правильно ли я понял задачу? Используя только технику программирования, изученную в этой главе (глава2), напишите программу, которая...

задача по Дейтелу - C++
Как напечатать такой трафарет * ** *** **** ***** ****** ******* ********

Покер - C++
Хочу написать простенькую покерную программу на с++. Нужна помощь с архитектурой. Напишите, пожалуйста, какие классы стоит реализовать....

Покер - C++
Прошу помощи. Болел - ничего не понял. Скоро экзамен, а я ничего не понимаю в С++. Дали примерные задачи, а я не понимаю как решать. Вот...

Покер - C++
Подскажите пожалуста где ошибка??????:help: компилятор выдает ошибки Ошибка 2 error LNK2005: &quot;int __cdecl compareCards(void const...

Задача Покер - C++
Даны 5 целых чисел. Среди них: если одинаковы 5, то вывести &quot;Impossible&quot;, иначе если одинаковы 4, то вывести &quot;Four of a Kind&quot;, иначе ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2016, 17:04
Привет! Вот еще темы с ответами:

Графический покер - C++
Доброго времени суток всем. Вот, немного запутался.... Есть игра покер...Нужно ее реализовать в упрощенном виде. Есть изображения...

Задача Покер - C++
Даны 5 целых чисел. Среди них: если одинаковы 5, то вывести &quot;Impossible&quot;, иначе если одинаковы 4, то вывести &quot;Four of a Kind&quot;, иначе ...

Кому интересно. Покер - C++
Вообщем, давно ничего не кодил и на днях накатал немного говно кода на тему Покера. Кому будет интересно, посмотрите и предложите если...

Моделирование игры в покер - C++
Недавно начал изучать С++,использую книгу Харви М. Детела Как программировать на С++.В конце одной из глав есть упражнение,в котором нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru