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

На основе классов реализовать карточную игру Блэк-Джек - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 5.00
vitalu
2 / 2 / 1
Регистрация: 25.06.2013
Сообщений: 47
18.12.2013, 14:53     На основе классов реализовать карточную игру Блэк-Джек #1
Написать программу, которая на основе классов реализует карточную игру Блэк-Джек.
Подскажите пожалуйста как реализовать данную игру в консоли...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
18.12.2013, 15:09     На основе классов реализовать карточную игру Блэк-Джек #2
я бы создал класс примеру player, в нём колода карт, к примеру просто 2 перечисления - enum {бубны, черви, крести, пики} и enum {2,3,4 .. туз}.
и матрицу [4][13] заполненную 0(в ней хранится текущее состояние карт, т.е. если 1 карта уже роздана, то записываем в соотв ячейку 1цу).
Потом методы класса связанные с картами, т.е. взять одну карту - при помощи rand() сгенерить 2 случайных числа и добавить в контрольную сумму(которую потом сравнивают с 21), сказать стоп - сравнение с 21 и соперником, и вывод результата, ну и соответственно создать соперника - тоже что и игрок, только перегрузить конструктор(чтобы значть, что это ИИ и с ним вызываются другие методы) остановка по условию что сумма к примеру >19 итп. Вот это всё потом запилить в цикл while(1)а там вызывать методы игрока в switch() ...навенгое такя бы делал и в процессе уже менял что-либо
vitalu
2 / 2 / 1
Регистрация: 25.06.2013
Сообщений: 47
18.12.2013, 16:52  [ТС]     На основе классов реализовать карточную игру Блэк-Джек #3
Написал вот так, все работает, но думаю есть вариант намного проще, подскажите пожалуйста......
Не судите строго, только учусь.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//Card.h
#pragma once
static int index=1;
class Card
{
public:
    Card(int);
    ~Card();
    void Sort();
    int Rozd();
    int RozdBank(); 
    int Symma(int);
    int Symma();
    int SymmaBank(int);
    int SymmaBank();
private:
    
    int KolKart;
    int Mast[4];
    int* Dost;
    int *Kploda[4];
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
//Card.cpp
#include<iostream>
#include"Card.h"
using namespace std;
static int summa=0;
static int summabank = 0;
Card::Card(int kol){
    KolKart = kol;
    for(int i = 0; i<4; i++){
        Mast[i] = i+3;
    }   
    Dost = new int[kol / 4];
    for(int i = 0; i<(kol / 4); i++){
        Dost[i] = (kol / 4 == 13)? i+2 : i+6;
    }
    
    for(int i = 0; i<4; i++){
        Kploda[i] = new int [kol / 4];
    }
    for(int i = 0; i<4; i++){
        for(int j = 0; j<(kol / 4); j++){
            Kploda[i][j] = 0;
        }
    }   
}
Card::~Card(){
    delete[]Dost;
    for(int i = 0; i<4; i++)
        delete[]Kploda[i];  
}
void Card::Sort(){
    int m, n;
    for(int karta = 1; karta<=KolKart; karta++){
        m = rand()%4;
        n = rand()%13;
        while(Kploda[m][n]!=0){
            m = rand()%4;
            n = rand()%13;
        }
        Kploda[m][n] = karta;       
    }
}
int Card::Rozd(){
    int a;  
        for(int j = 0; j<=3; j++){
            for(int k = 0; k<=12; k++){
                if(Kploda[j][k]==index){
                    cout<<" "<<(char)Mast[j]<<" - ";    
                    a = Dost[k];
                    if(Dost[k]<=10)
                    cout<<Dost[k]<<endl;
                    else{
                        switch(Dost[k]){
                        case 11:
                            cout<<"J"<<endl;
                            break;
                        case 12:
                            cout<<"Q"<<endl;
                            break;
                        case 13:
                            cout<<"K"<<endl;
                            break;
                        case 14:
                            cout<<"A"<<endl;
                            break;
                        }
                    }
                }
            }           
        }   
    Symma(a);
    index++;
    return 0;
}
int Card::Symma(int a){
    
    if(a<=10)
        return summa+=a;
    else if(a==14)
        return summa+=11;
    else
        return summa+=10;
}
int Card::Symma(){
    return summa;
}
int Card::RozdBank(){
    int a;  
        for(int j = 0; j<=3; j++){
            for(int k = 0; k<=12; k++){
                if(Kploda[j][k]==index){
                    cout<<" "<<(char)Mast[j]<<" - ";
                    a = Dost[k];
                    if(Dost[k]<=10)
                    cout<<Dost[k]<<endl;
                    else{
                        switch(Dost[k]){
                        case 11:
                            cout<<"J"<<endl;
                            break;
                        case 12:
                            cout<<"Q"<<endl;
                            break;
                        case 13:
                            cout<<"K"<<endl;
                            break;
                        case 14:
                            cout<<"A"<<endl;
                            break;
                        }
                    }
                }
            }           
        }   
    SymmaBank(a);
    index++;
    return 0;
}
int Card::SymmaBank(int a){
    
    if(a<=10)
        return summabank+=a;
    else if(a==14)
        return summabank+=11;
    else
        return summabank+=10;
}
int Card::SymmaBank(){
    return summabank;
}
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
//main.cpp
#include<iostream>
#include"Card.h"
#include<time.h>
using namespace std;
 
void main(){
    srand((unsigned)time(NULL));    
    Card A(52);
    A.Sort();
    cout<<"Igrok\n";
    for(int i=1; i<=2; i++)
      A.Rozd();
    cout<<"Summa = "<<A.Symma()<<endl;
    cout<<"Bank\n";
    A.RozdBank();
    do{
        if(A.Symma()<21){
            cout<<"Vzat kartu (1) Stop (0) __ ";
            cin>>index;         
                if(index){
                    cout<<"Igrok\n";
                    A.Rozd();
                    cout<<"Summa = "<<A.Symma()<<endl;
                    if(A.Symma()==21){
                        cout<<"BLECK JACK\n";                       
                    }
                    else if(A.Symma()>21){
                        cout<<"Perebor\n";
                        cout<<"POBEDIL BANCK\n";
                    }
                }
                else{
                    do{
                            cout<<"Bank\n";
                            A.RozdBank();
                        if(A.SymmaBank()==21){
                            cout<<"Summa Banka = "<<A.SymmaBank()<<endl;
                            cout<<"BLECK JACK\n";
                        }
                        else if(A.SymmaBank()>21){
                            cout<<"Banck Perebor\n";
                            cout<<"Summa Banka = "<<A.SymmaBank()<<endl;
                            cout<<"POBEDIL IGROK\n";
                        }
                        else
                            cout<<"Summa Banka = "<<A.SymmaBank()<<endl;
                        }while(A.SymmaBank()<17);
                }
        }       
    }while(index&&A.Symma()<21);
 
    if(A.Symma()<=21 && A.Symma()>A.SymmaBank() )
        cout<<"POBEDIL IGROK\n";
    if(A.SymmaBank()<=21 && A.SymmaBank()>A.Symma() )
        cout<<"POBEDIL BANCK\n";
    if(A.SymmaBank()<=21 && A.Symma()<=21 && A.SymmaBank()==A.Symma())
        cout<<"ROVNO\n";
}
Shoshona
3 / 3 / 1
Регистрация: 03.06.2014
Сообщений: 439
01.07.2015, 12:52     На основе классов реализовать карточную игру Блэк-Джек #4
Я дико извеняюсь, но можите фул программу в архиве кинуть?
Yandex
Объявления
01.07.2015, 12:52     На основе классов реализовать карточную игру Блэк-Джек
Ответ Создать тему
Опции темы

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