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

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

Войти
Регистрация
Восстановить пароль
 
Robesper3411
14 / 14 / 1
Регистрация: 20.02.2012
Сообщений: 436
Записей в блоге: 1
#1

Карточная игра: карты повторяются - C++

13.03.2012, 10:36. Просмотров 722. Ответов 3
Метки нет (Все метки)

Проблема такая:
Написал игру "21(блэк джек)" в консоли, но возникла трудность - выдает карты повторно. При этом реализован таковой механизм:
1) Дан массив(значения очков за соответствующую карту)
i
C++
1
2
3
4
5
6
nt n[4][13]= {{2,3,4,5,6,7,8,9,10,2,3,4,11}, 
        {2,3,4,5,6,7,8,9,10,2,3,4,11},
        {2,3,4,5,6,7,8,9,10,2,3,4,11},
        {2,3,4,5,6,7,8,9,10,2,3,4,11}};
char *mast[4] = {"бубны", "червы", "пики", "трефы"};
char *nom[13] = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King", "As"};
При выдаче карты соответствующее значение массива n[4][13] обнуляется.
2) При повторной сдаче - проверяется на равенство нулю. Условие вроде прописано корректно.
3) Сама ошибка, несмотря на написанное выше - иногда сдает те карты, которые уже были.
Как это поправить?
Вложения
Тип файла: rar kurs.rar (8.13 Мб, 25 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2012, 10:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Карточная игра: карты повторяются (C++):

Карточная игра - C++
Здравствуйте! Есть карточная игра, нужно сделать программу для игры на компьютере и далее, чтобы можно было играть в интернете в нее...

Карточная игра 50 - C++
Разложим на столе 24 раскрытые карты: все карты с номерами от 1 до 6 обычной колоды, где туз считается за 1. Масти карт несущественны,...

Карточная игра из книги Лафоре - C++
помогите плиз с парой вопросов. заранее спасибо.(2 вопроса в комментариях) // cardaray.cpp // класс игральных карт #include...

Карточная игра "Дурак" - Ошибка загрузки dll карт - C++
Есть проект (вроде должен работать). Запуская в Visual Studio 2010 получаю ошибку "Ошибка загрузки dll карт". Самому исправить не...

Карточная игра "Дурак", вывод карт на экран - C++
Пишу курсовую, карточного "Дурака", столкнулся с проблемой выводом карт на экран. Нужно чтобы карты игрока выводились внизу по центру(в...

Карточная игра "Дурак" - C++
Народ есть у кого нибудь исходники "дурака",очень надо..

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
panicwassano
591 / 559 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
13.03.2012, 10:43 #2
код выложите сюда
Robesper3411
14 / 14 / 1
Регистрация: 20.02.2012
Сообщений: 436
Записей в блоге: 1
13.03.2012, 10:56  [ТС] #3
заголовочный файл karty.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int n[4][13]= {{2,3,4,5,6,7,8,9,10,2,3,4,11}, 
        {2,3,4,5,6,7,8,9,10,2,3,4,11},
        {2,3,4,5,6,7,8,9,10,2,3,4,11},
        {2,3,4,5,6,7,8,9,10,2,3,4,11}};
char *mast[4] = {"бубны", "червы", "пики", "трефы"};
char *nom[13] = {"2", "3", "4", "5", "6", "7", "8", "9", "10",
                    "Jack", "Queen", "King", "As"};
int x = 0;
int z = 0;
int koli();
int kolb();
int summ = 0;
int summb = 0;
int pobeda();
int bankir();
int igrok();
файл исходного кода 1.cpp:
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <windows.h>
#include "karty.h"
 
using namespace std;
using std::cin;
using std::cout;
using std::endl;
 
int perexod(char y)
{
    int i;
    if (y == 'y')
    {
        i = 0;
    }
    else
    {
        i = 1;
    }
    return i;
}
 
int xi(int x)
{
    summ = summ + x;
    return summ;
}
 
int xb(int x)
{
    summb = summb + x;
    return summb;
}
 
int koli()
{
    x++;
    return x;
}
 
int kolb()
{
    z++;
    return z;
}
 
int mass()
{
    cout << "\nМассив" << endl;
    for(int i = 0; i < 4; i++)
    {
        cout << mast[i]<< endl;
        for(int j = 0; j < 13; j++)
        {
            cout << nom[j] << ' ';
            cout << n[i][j] << ' ';
        }
        cout << endl;
    }
    return 0;
}
 
int ra = 0;
int count()
{
    ra=ra+1;
    return ra;
}
 
int str()
{
    int x;
    srand(clock());
    Sleep(500);
    x = rand()%4;
    return x;
}
 
int stb()
{
    int y;
    srand(clock());
    Sleep(500);
    y = rand()%13;
    return y;
}
 
int vybor(int n[4][13], int x, int y)
{
    int a;
    a = n[x][y];
    return a;
}
 
int igrok()
{
    char y;
    int i, j, v, temp;
    cout << "\nСдать?" << endl;
    cin >> y;
    //mass();
    //cout << "Счетчик общего количества карт - " << count();
    if( perexod(y) == 0 && xi(0) < 21 )
    {
        i = str(), j = stb(), v = vybor(n, i, j);
        if (v != 0)
        {
            cout << "\n", temp = n[i][j], n[i][j] = NULL, cout << mast[i] << ' ' << nom[j],
            cout << "\n" << koli(), cout << "\nСумма баллов игрока = " << xi(temp), igrok();
        }
        else
        {
            while( v!=0 )
            {
                i, j, v;    
            }
            cout << "\n", temp = n[i][j], n[i][j] = NULL, cout << mast[i] << ' ' << nom[j],
                    cout << "\n" << koli(), cout << "\nСумма баллов игрока = " << xi(temp), igrok();
        }
    }
    
    return x;
 
}
 
int bankir()
{
    cout << "\nХод банкира" << endl;
    int i, j, v, temp;
    while( xb(0) <= 19 )
    {
        i = str(), j = stb(), v = vybor(n, i, j);
        if (v != 0)
        {
            temp = n[i][j];
            n[i][j] = NULL;
            cout << "\n" << mast[i] << ' ' << nom[j];
            cout << "\nСумма баллов банкира = " << xb(temp) ;
            cout << "\n" << kolb();
        }
    }
    return z;
}
 
int pobeda()
{
    int x, y, i, j;
    i = koli();
    j = kolb();
    x = xi(0);
    y = xb(0);
    cout << "\nСумма баллов игрока = " << x << endl;
    cout << "\nСумма баллов банкира = " << y <<  endl;
    if ( x == 22 && i == 2)
    {
        if (y == 22 && j == 2)
        {
            cout << "Выиграл банкир" << endl;
        }
        else
        {
            cout << "Выиграл игрок" << endl;
        }
    }
    if ( x < 21 && y < 21 )
    {
        if ( x > y )
        {
            cout << "Выиграл игрок" << endl;
        }
        else
            cout << "Выиграл банкир" << endl;
    }
    else
    {
        if(x == 21 && y != 21 )
        {
            cout << "Выиграл игрок" << endl;
        }
        else
            cout << "Выиграл банкир" << endl;
    }
    return 0;
}
 
int igra(char y)
{
    if(perexod(y) == 0)
        igrok();
    return 0;
}
 
int main()
{
    char y;
    setlocale (LC_ALL, "rus");
    cout << "Начать игру?" << endl;
    cin >> y;
    igra(y);
    bankir();
    pobeda();
    return 0;
}
Robesper3411
14 / 14 / 1
Регистрация: 20.02.2012
Сообщений: 436
Записей в блоге: 1
14.03.2012, 11:27  [ТС] #4
Кажется разобрался - тема не актуальна.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.03.2012, 11:27
Привет! Вот еще темы с ответами:

C++ игра в карты - C++
Здравствуйте, помогите решить задачу реализующую игру в карты, в &quot;дурака&quot; с компьютером. В начале сдается по 6 карт и определяется...

Игра в карты - C++
Делаю игру, симулирующую игру в дурака в консоли. Пока вместо карт поставил просто числа. Большее число бьет меньшее)). Остановился на этом...

Сетевая карточная игра "Дурак" - C++
https://www.dropbox.com/home?preview=1igra_durak.rar

ввести порядковый номер карты из колоды и выводит в консоль масть и достоинство карты - C++
ввести порядковый номер карты из колоды и выводит в консоль масть и достоинство карты. Колода, начинается с двоек до туза, по очереди, для...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
14.03.2012, 11:27
Ответ Создать тему
Опции темы

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