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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.67
Arimand
14 / 14 / 0
Регистрация: 10.04.2011
Сообщений: 271
20.08.2011, 12:46     Задача на создание карточной игры. #1
Здравствуйте. Собственно, само задание звучит, как "Написать программу, которая на основе классов реализует карточную игру Блэк-Джек.".

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

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

Заголовочный файл:
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 в каждом объекте класса А должно увеличиваться на определенную величину. Как создать такую простенькую программку?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.08.2011, 12:46     Задача на создание карточной игры.
Посмотрите здесь:

Создание игры и софта C++
C++ Создание игры! Программисты ХЕЛП!!!
Создание игры - Змейка. C++
C++ Создание игры на Visual C++
Создание 3D игры на UDK используя C++ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Bers
Заблокирован
20.08.2011, 12:59     Задача на создание карточной игры. #2
см в сторону "клиент-сервер"
Arimand
14 / 14 / 0
Регистрация: 10.04.2011
Сообщений: 271
20.08.2011, 13:00  [ТС]     Задача на создание карточной игры. #3
Не понимаю, при чём здесь клиент-сервер.
Mr.X
Эксперт С++
 Аватар для Mr.X
2797 / 1573 / 246
Регистрация: 03.05.2010
Сообщений: 3,649
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();
}
Arimand
14 / 14 / 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
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
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
Bers
Заблокирован
20.08.2011, 15:21     Задача на создание карточной игры. #7
Цитата Сообщение от Arimand Посмотреть сообщение
Не понимаю, при чём здесь клиент-сервер.
Согласно задаче, клиенты действуют одновременно
Gera777
4 / 4 / 1
Регистрация: 09.07.2010
Сообщений: 12
20.08.2011, 17:07     Задача на создание карточной игры. #8
Интересно как в Блэк-Джэк можно играть одновременно?
JULIK-
18 / 18 / 2
Регистрация: 24.01.2011
Сообщений: 120
20.08.2011, 17:14     Задача на создание карточной игры. #9
Цитата Сообщение от Gera777 Посмотреть сообщение
Интересно как в Блэк-Джэк можно играть одновременно?
ну насколько я понял идёт речь о игре клиент-клиент и сервер раздаёт карты
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.08.2011, 22:53     Задача на создание карточной игры.
Еще ссылки по теме:

sdl,c++ создание 2D игры C++
Создание игры C++
C++ Создание игры

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

Или воспользуйтесь поиском по форуму:
Mr.X
Эксперт С++
 Аватар для Mr.X
2797 / 1573 / 246
Регистрация: 03.05.2010
Сообщений: 3,649
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();
}
Yandex
Объявления
20.08.2011, 22:53     Задача на создание карточной игры.
Ответ Создать тему
Опции темы

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