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

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

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

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

13.03.2012, 10:36. Просмотров 696. Ответов 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++ игра в карты
Карточная игра из книги Лафоре C++
C++ Индексы элементов которые повторяются в двух массивах
Карточная игра C++
C++ Массив, где элементы не повторяются
C++ Карточная игра "Дурак"
Карточная игра 50 C++
Удалить столбцы, элементы которых повторяются C++
Игра в карты C++
При использовании rand числа постоянно повторяются C++
C++ Запись в файл слов, которые не повторяются
C++ Удалить из строки символы, которые повторяются

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
panicwassano
591 / 559 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
13.03.2012, 10:43     Карточная игра: карты повторяются #2
код выложите сюда
Robesper3411
 Аватар для Robesper3411
13 / 13 / 1
Регистрация: 20.02.2012
Сообщений: 433
Записей в блоге: 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
 Аватар для Robesper3411
13 / 13 / 1
Регистрация: 20.02.2012
Сообщений: 433
Записей в блоге: 1
14.03.2012, 11:27  [ТС]     Карточная игра: карты повторяются #4
Кажется разобрался - тема не актуальна.
Yandex
Объявления
14.03.2012, 11:27     Карточная игра: карты повторяются
Ответ Создать тему
Опции темы

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