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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Чтение памяти не возможно http://www.cyberforum.ru/cpp-beginners/thread1046799.html
Начал изучаться ООП получил лабораторную, программа заупускается и на вводе размерности матрицы появляется ошибка. Табличка которая выходит после ввода размерности приложена. #include <iostream> #include <locale> using namespace std; class Matrix { private: float **Value;
C++ В матрице переставить строки в порядке убывания количества отрицательных чисел в строке Пожалуйста помогите написать программу! В матрице В переставить строки в порядке убывания количества отрицательных чисел в строке. http://www.cyberforum.ru/cpp-beginners/thread1046794.html
Длинное целое 100 дес знаков инициализировать C++
Длинное целое 100 дес. знаков. инициализировать себя из 1) строки символов 2)целого 3)уметь +=, -=, ==, != 4) уметь выводить себя в поток помогите пожалуйста написать, с комментариями (С++)
C++ Удалить из целочисленного одномерного массива все элементы, в записи которых все цифры различны
Удалить из целочисленного одномерного массива все элементы, в записи которых все цифры различны. Решить при помощи сдвига элементов. Помогите пожалуйста.
C++ 16-ричная система http://www.cyberforum.ru/cpp-beginners/thread1046772.html
всем привет. помогите составить логическую функцию которая определяет для одного числа(в 10 ричной системе). состоит ли оно полностью из букв в 16ричной системе
C++ марицы Составить следующие функции с матрицей. 1) функцию, которая для одного целого числа (не для одномерного массива и не для матрицы) определяет, является ли оно кратным числу К, где К и анализируемое число - два входных параметра функции 2)с помощью первой функции для каждой строки матрицы найти номер первого по порядку чётного числа и получить одномерный массив этих номеров. Кол-во элементов... подробнее

Показать сообщение отдельно
vitalu
2 / 2 / 1
Регистрация: 25.06.2013
Сообщений: 47
18.12.2013, 16:52  [ТС]     На основе классов реализовать карточную игру Блэк-Джек
Написал вот так, все работает, но думаю есть вариант намного проще, подскажите пожалуйста......
Не судите строго, только учусь.
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";
}
 
Текущее время: 05:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru