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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.92
clementine
Сообщений: n/a
#1

Блэкджек (21 очко) на Си++ - C++

25.01.2010, 14:21. Просмотров 3722. Ответов 4
Метки нет (Все метки)

Знаю, что здесь прежде чем просить совета, нужно предложить свои наработки, но вдруг у кого-то завалялся код этой игры, и его можно просто так выложить))
Если есть, поделитесь пожалуйста) Нужен простой код без графики, в консоли.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.01.2010, 14:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Блэкджек (21 очко) на Си++ (C++):

Принцип игры в 21 очко - C++
Если не сложно - то дайте алгоритм(не код), а то не пойму, с чего начинать.

Куда копать, игра 21 очко - C++
Подскажите как лучше реализовать. Нужно написать игру- 21 очко на с++ в консоли. Для игры между двумя людьми. 36 карт, туз -11 очков,...

Игра 21 очко - Delphi
Народ, помогите задать условие для противника в игре 21 очко.

21 очко (BlackJack) - C++ Builder
Здраствуйте! Очень нуждаюсь в помощи по игре на C++ 21 очко. Незнаю как сделать каждой карте свой вес(например 10 буби будет иметь 10...

Игра очко - Visual C++
Хочу написать игрушку "очко", можно как то изображения карт сохранить в dll

Игра 21 очко в консоле - C (Си)
Было ночью скучно Может кто скажет,чем дополнить можно? #include<stdio.h> #include <conio.h> #include <time.h> #include...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alexifromcob
Сообщений: n/a
25.01.2010, 23:28 #2
Извини за ошибки если есть, только недавно начал С++ изучать, ну вот примерно то, что ты просил :

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
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <windows.h>
using namespace std;
 
int K=-1;
char *title[]={"6","7","8","9","10","J","Q","K","A"};
 
struct Card
{
    unsigned int value:4;
    unsigned int mast:2;
    unsigned int ves:4;
};
#define size 36
 
class Coloda
{    
    Card card[size];    
public:
    Coloda()
    {
        for (int i=0;i<size;i++)
        {
            card[i].value=i%9;
            card[i].mast=i%4;
            if (card[i].value>=0 && card[i].value<=4) card[i].ves=card[i].value+6; 
            else if (card[i].value==8)
                card[i].ves=11;
            else
            {
                card[i].ves=card[i].value-3;
            }            
        }
    }    
    void PaintCard(bool comp,int value=0, int mast=0)
    {
        if (comp)
        {
        cout<<" ----- \n";
        cout<<"| *** |\n";
        cout<<"| *** |\n";
        cout<<"| *** |\n";
        cout<<" ----- \n";
        }else
        {
        cout<<" ----- \n";
        cout<<"|"<<char(card[value].mast+3)<<"    |\n";
        cout<<"|  "<<title[card[value].value]<<"  |\n";
        cout<<"|     |\n";
        cout<<" ----- \n";
        }
    }
 
    bool GetCard(int &Player,int &Comp,char ans='y')
    {        
        
                K++;
                Player+=card[K].ves;
                PaintCard(false,K,card[K].mast);
    
                K++;
                Comp+=card[K].ves;
                PaintCard(true,K,card[K].mast);
            
        
        Proverka(Player,Comp,false);
    }
 
    void Shuffle()
    {
        for (int i=0;i<size;i++)
        {
            int k=rand()%35;
            int tmp=card[k].value,tmp1=card[k].mast,tmp2=card[k].ves;
            card[k].value=card[i].value;
            card[k].mast=card[i].mast;
            card[k].ves=card[i].ves;
 
            card[i].value=tmp;
            card[i].mast=tmp1;
            card[i].ves=tmp2;            
        }
    }
    void Proverka(int Player, int Comp, bool end)
    {        
        if (end)
        {
            if (Player<21 && Player>Comp)
            {
                cout<<"Player wins! With "<<Player<<"\n";
                cout<<"Comp louse! With "<<Comp<<"\n";
            }
            else if (Player>21) 
            {
                cout<<"Player louse!\n";
                cout<<"Comp have "<<Comp<<"\n";
            }
 
            if (Comp<21 && Comp>Player)
            {
                cout<<"Comp wins! With "<<Comp<<"\n";
                cout<<"Player louse! With "<<Player<<"\n";
            }
            else if (Comp>21) 
            {
                cout<<"Comp louse!\n";    
                cout<<"Player have "<<Player<<"\n";
            }
        } else
            cout<<"Player have: "<<Player<<"\n";
    }    
 
    void Play(int& Player, int& Comp)
    {        
        char ans;
        cout<<"Press 'q' to exit\n";
        do
        {    
            cout<<"Continue play and get one card?(y/n)\n";
            cin>>ans;
            if (ans=='y')
                GetCard(Player,Comp);                
            else if (ans=='n')
            {                                
                Proverka(Player,Comp,true);                    
                break;
            }
        }while (ans!='q');    
    }
    
 
    void Print(int i)
    {        
cout<<title[card[i].value]<<" "<<char(card[i].mast+3)<<" ";//<<card[i].ves<<"\n";            
    }
    void PrintAll()
    {        
        for (int i=0;i<size;i++)
cout<<title[card[i].value]<<" "<<char(card[i].mast+3)<<" "<<card[i].ves<<"\n";            
    }
};
 
void main()
{    
    Coloda k1;
    srand(time(0));
    k1.Shuffle();
 
    int Player=0,Comp=0;        
        
                for (int i=0;i<2;i++)
                  k1.GetCard(Player,Comp);
            
 
        k1.Play(Player,Comp);
 
 
}
Mr.Loner
42 / 42 / 4
Регистрация: 23.01.2010
Сообщений: 152
25.01.2010, 23:52 #3
alexifromcob, не нашел где учитываются карты, которые вышли из колоды. Если это есть, покажи, пожалуйста.
0
clementine
Сообщений: n/a
26.01.2010, 07:02 #4
alexifromcob, спасибо за помощь)
сейчас буду смотреть, разбираться. Если найду ошибочки или буду вносить изменения, то выложу свой код))
Mr.Loner
42 / 42 / 4
Регистрация: 23.01.2010
Сообщений: 152
26.01.2010, 08:17 #5
Все, я понял.
Ммммм... Не красиво очень. k - глобальная переменная. Зря так сделал. Очень зря. Лучше сделать ее членом класса. Так будет логичнее.
А Play лучше наоборот убрать из класса и Proverka тоже.
Все-таки принципы ООП никто не отменял.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.01.2010, 08:17
Привет! Вот еще темы с ответами:

Создать игру 21 (очко) - PascalABC.NET
Помогите пожалуйста реализовать программу (21- очко), сам в этом мало чего понимаю.

Игра 21 очко - исправить ошибки - C (СИ)
Пишу программу игру 21 очко. Без этого case все работает, подскажите где ошибка. плз... уже целый день найти не могу ...

Игра 21 очко: Доработать проверку вводимых символов - C (СИ)
Здравствуйте. Вот есть игрушка в 21 очко. Всё хорошо работает, но стоит задача немного это доработать: 1) Нужно доработать проверку...

Игра "Очко с ящиками" - Turbo Pascal
При запуске игры на экране появляются 15 ящиков, под которыми спрятаны цифры. Пользователь имеет право открыть не более пяти ящиков, если в...


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

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

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