Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/32: Рейтинг темы: голосов - 32, средняя оценка - 4.75
16 / 16 / 0
Регистрация: 10.04.2011
Сообщений: 271
1

Задача на создание карточной игры.

20.08.2011, 12:46. Показов 6077. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Собственно, само задание звучит, как "Написать программу, которая на основе классов реализует карточную игру Блэк-Джек.".

Главная проблема в том, как реализовать взаимодействие между игроками и казино ( очередность ходов, и т.д. ). Что лучше применить в этом случае? Раньше не сталкивался с подобной проблемой.

з.ы. Вот наброски:

Заголовочный файл:
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
#pragma once // вызывает только 1 раз
#include<iostream> //( подключекние библиотеки )
 
using namespace std;
 
class Player
{
    char* name;
    int stavka;
    int point;
    int k;
    int exit, a;  // n - счетчик игроков. a - карта. 2-10 - обычные, 11,12,13 - картинки, 14-туз
public:
    int n;
    Player(const char*name);
    
    void show();
 
    void hod();
 
};
 
class kazino
{
    
    int h;
public:
    int n;
    int summ_stavka; 
    int point; 
    kazino(); 
    
};
Вопрос в том, как сделать, чтобы все объекты Player, после нажатия "следующий ход" одновременно выполняли некие действия ( а конкретнее - брали карты ).
Как написать подобную программу для одного игрока - понимаю прекрасно, но вот как всё это "склеить"?

Добавлено через 5 минут
Постараюсь выразить задачу попроще.

Допустим, есть класс:

class A
{ int n; };

Class B {
int summ_n;
number;
turn; };

При этом, объектов класса A может быть много ( счетчик - number ) и каждый ход ( счетчик ходов - turn ) n в каждом объекте класса А должно увеличиваться на определенную величину. Как создать такую простенькую программку?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.08.2011, 12:46
Ответы с готовыми решениями:

Создание карточной онлайн игры
Здравствуйте, я изучаю С++ по самоучителю, используя компилятор microsoft visual studio 6.0, почти...

Создание карточной игры по сети и интернету
Всем привет. Более менее освоил язык C# и хотел бы создать свое первое нормальное приложение....

GUI для карточной игры
Приветствую всех! Вот уже как месяц изучаю самостоятельно Python - немного разобрался с базовыми...

Unity Разработка карточной игры
Здравствуйте! Занимаюсь разработкой карточной онлайн игры на андроид. Хочу сделать игру-копию...

9
Заблокирован
20.08.2011, 12:59 2
см в сторону "клиент-сервер"
0
16 / 16 / 0
Регистрация: 10.04.2011
Сообщений: 271
20.08.2011, 13:00  [ТС] 3
Не понимаю, при чём здесь клиент-сервер.
0
Эксперт С++
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
20.08.2011, 13:58 4
Цитата Сообщение от Arimand Посмотреть сообщение
Вопрос в том, как сделать, чтобы все объекты Player, после нажатия "следующий ход" одновременно выполняли некие действия
Примерно так:
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
/////////////////////////////////////////////////////////////////////////////////////////
// как сделать, чтобы все объекты Player, после нажатия "следующий ход" одновременно 
// выполняли некие действия 
/////////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <iostream>
#include <set>
#include <string>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string  T_str;
/////////////////////////////////////////////////////////////////////////////////////////
class T_player
{
    T_str  name_;
    int    stavka_;
    int    point_;
    int    k_;
    int    exit_;  
    int    a_;   //карта. 2-10 - обычные, 11,12,13 - картинки, 14-туз
public:        
    T_player(const T_str&  name) : name_(name)
    {}
    //-------------------------------------------------------------------------------
    void show()
    {}
    //-------------------------------------------------------------------------------
    void hod()
    {
        std::cout << "пошел игрок "
                  << name_
                  << std::endl;
    }
    //-------------------------------------------------------------------------------
    bool  operator< (const T_player&  player) const
    {
        return  name_ < player.name_;
    } 
};
///////////////////////////////////////////////////////////////////////////////////////// 
typedef std::set<T_player>  T_players;
///////////////////////////////////////////////////////////////////////////////////////// 
class T_kazino
{        
    int        h_;
    T_players  players_;
public:
    T_kazino(const T_players&  players) : players_(players)
    {}
    //-----------------------------------------------------------------------------------
    int n_;
    int summ_stavka_; 
    int point_; 
    //-----------------------------------------------------------------------------------
    void hod()
    {
        std::cout << "Ходят все игроки казино:"
                  << std::endl;
 
        std::for_each
            (
                players_.begin(),
                players_.end(),
                std::mem_fun_ref(&T_player::hod)
            );
        std::cout << std::endl;
    }        
};
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    
    T_str  players_names_arr[] =
        {
            "Вася",
            "Потап",
            "Илистрат",
        };
 
    T_players  players
        (
            players_names_arr, 
            players_names_arr + sizeof(players_names_arr) / sizeof(players_names_arr[0])
        );
 
    T_kazino  kazino(players);
    kazino.hod();
}
1
16 / 16 / 0
Регистрация: 10.04.2011
Сообщений: 271
20.08.2011, 14:29  [ТС] 5
Благодарю, буду разбираться) Только вот ошибку выдает:

Error 2 error C2664: 'void std::mem_fun_ref_t<_Result,_Ty>::operator ()(_Ty &) const' : cannot convert parameter 1 from 'const T_player' to 'T_player &' c:\program files (x86)\microsoft visual studio 10.0\vc\include\algorithm 22
0
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
20.08.2011, 15:19 6
Цитата Сообщение от Arimand Посмотреть сообщение
Только вот ошибку выдает:
Error 2 error C2664: 'void std::mem_fun_ref_t<_Result,_Ty>::operator ()(_Ty &) const' : cannot convert parameter 1 from 'const T_player' to 'T_player &' c:\program files (x86)\microsoft visual studio 10.0\vc\include\algorithm 22
Замени 27 строчку на:
C++
1
void hod() const
0
Заблокирован
20.08.2011, 15:21 7
Цитата Сообщение от Arimand Посмотреть сообщение
Не понимаю, при чём здесь клиент-сервер.
Согласно задаче, клиенты действуют одновременно
0
4 / 4 / 0
Регистрация: 09.07.2010
Сообщений: 12
20.08.2011, 17:07 8
Интересно как в Блэк-Джэк можно играть одновременно?
0
19 / 19 / 5
Регистрация: 24.01.2011
Сообщений: 120
20.08.2011, 17:14 9
Цитата Сообщение от Gera777 Посмотреть сообщение
Интересно как в Блэк-Джэк можно играть одновременно?
ну насколько я понял идёт речь о игре клиент-клиент и сервер раздаёт карты
0
Эксперт С++
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
20.08.2011, 22:53 10
Вообще-то по смыслу задачи ход изменяет состояние игрока, поэтому типом T_players лучше взять вектор, а уникальным идентификатором игрока в казино считать его индекс в этом векторе:
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
/////////////////////////////////////////////////////////////////////////////////////////
// как сделать, чтобы все объекты Player, после нажатия "следующий ход" одновременно 
// выполняли некие действия 
/////////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <functional>
#include <iostream>
#include <string>
#include <vector>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string  T_str;
/////////////////////////////////////////////////////////////////////////////////////////
class T_player
{
    T_str  name_;
    int    stavka_;
    int    point_;
    int    k_;
    int    exit_;  
    int    a_;   //карта. 2-10 - обычные, 11,12,13 - картинки, 14-туз
public:        
    T_player(const T_str&  name) : name_(name)
    {}
    //-------------------------------------------------------------------------------
    void show()
    {}
    //-------------------------------------------------------------------------------
    void hod()
    {
        std::cout << "пошел игрок "
                  << name_
                  << std::endl;
    }
};
///////////////////////////////////////////////////////////////////////////////////////// 
typedef std::vector<T_player>  T_players;
///////////////////////////////////////////////////////////////////////////////////////// 
class T_kazino
{        
    int        h_;
    T_players  players_;
public:
    T_kazino(const T_players&  players) : players_(players)
    {}
    //-----------------------------------------------------------------------------------
    int n_;
    int summ_stavka_; 
    int point_; 
    //-----------------------------------------------------------------------------------
    void hod() 
    {
        std::cout << "Ходят все игроки казино:"
                  << std::endl;
 
        std::for_each
            (
                players_.begin(),
                players_.end(),
                std::mem_fun_ref(&T_player::hod)
            );
        std::cout << std::endl;
    }        
};
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    
    T_str  players_names_arr[] =
        {
            "Вася",
            "Потап",
            "Илистрат",
        };
 
    T_players  players
        (
            players_names_arr, 
            players_names_arr + sizeof(players_names_arr) / sizeof(players_names_arr[0])
        );
 
    T_kazino  kazino(players);
    kazino.hod();
}
0
20.08.2011, 22:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.08.2011, 22:53
Помогаю со студенческими работами здесь

Написание карточной игры с графикой
Добрый день! Уже и просили, есть карточная игра с графикой процесса какая-н для примера увидеть?...

Код для карточной игры
Добрых! Необходима ваша помощь. Изучаю пхп. Решил написать карточную игру &quot;21&quot; на этом языке. На...

Паттерн для карточной игры
Доброго времени, собираюсь написать в Windows Forms карточную игру, пока остановился на модели...

Вероятности для карточной игры
Привет. Высшую математику учил давно. Поэтому что то затупил. Задача такая у меня. Рассчитать...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru