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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
Erzhan_ast
1 / 1 / 0
Регистрация: 09.11.2010
Сообщений: 44
#1

Карточные игры - C++

06.03.2011, 17:05. Просмотров 2021. Ответов 2
Метки нет (Все метки)

Всем привет!
Я не так давно начал программировать, и постоянно возникают проблемы с написанием более сложных программ.
В общем надо написать семестралку, тема - карточные игры. то есть написать какую нибудь карточную игру на с++. Выбрал игру, которая очень распространена в Казахстане, называется белка. Проблемы возникли с самого начала(
1)Надо создать колоду из 32 карт, от 7 до туза. т.е обычная колода, только без шестерок.
2)Затем ее надо размешать(соответственно чтобы карты не повторялись, в чем собственно у меня и возникла проблема).
4)Потом 4 игрокам раздается по 8 карт.
Желательно конечно, чтобы резервирование памяти происходило динамически, но это в принципе не так уж и важно)
Остальное думаю смогу сделать сам, надеюсь что кто нибудь откликнется и сможет помочь) заранее всем спасибо!
P.S. если что то упустил из виду когда объяснял проблему - извините, и скажите что дополнить
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.03.2011, 17:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Карточные игры (C++):

Спецсимволы - карточные масти - C++
Кто подскажет, как их выводить в консоле правильно ?

Сборка ПК "для себя" - игры, игры, игры! Киев, бюджет 8300 грн с монитором. - Игровой компьютер
Всем доброго времени суток. 1. Бюджет примерно 8300 грн (с монитором) 2. Украина, г. Киев, намерен покупать на http://rozetka.com.ua/...

Собираю компьютер для игры в GTA 5 а так же в игры 2015 года - Игровой компьютер
Хочется поиграть в гта 5 на минимальных настройках, в 30-40 фпс У меня имеется: Видеокарта AMD Radeon HD 5670 1GB GDDR5 Блок...

Огромная проблема с компьютером не читает игры, при запуске из игры выбрасывает. - Windows
ПРивет всем, у меня проблема с компьютером, когда я загружаю игры на компьютер и начинаю в них играть, из игры неожиданно выбрасывает и...

Доработка игры - добавить выбор стратегий для игры с компьютером - C++ Builder
Такая проблема: есть написанная игра, туда нужно добавить выбор стратегий для игры с компьютером. Как это сделать, подскажите, пожалуйста?

Компьютер вырубается примерно после часа игры в требовательные игры - Компьютерное железо
Кароче проблема такая - комп вырубается примерно после часа игры в требовательные игры, но может и раньше. 4 раза такая фигня уже была....

2
dimon1984
40 / 38 / 0
Регистрация: 22.01.2011
Сообщений: 670
06.03.2011, 17:15 #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
// cardaray.cpp
// класс игральных карт
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
 
enum Suit { clubs, diamonds, hearts, spades };
// от 2 до 10 обычные числа
const int jack = 11;
const int queen = 12;
const int king = 13;
const int ace = 14;
/////////////////////////////////////////////////////////////
class card
{
  private:
    int number;
    Suit suit;
  public:
    card ( ) // конструктор
      { }
    void set ( int n, Suit s ) // установка значения
      { suit = s; number = n; }
    void display ( );          // показ карты
};
/////////////////////////////////////////////////////////////
void card::display ( )
{
  if ( number >= 2 && number <= 10 )
    cout << number;
  else
  {
    switch ( number )
    {
      case jack: cout << 'J'; break;
      case queen: cout << 'Q'; break;
      case king: cout << 'K'; break;
      case ace: cout << 'A'; break;
    }
  }
  switch ( suit )
  {
    case clubs: cout << static_cast<char>( 5 ); break;
    case diamonds: cout << static_cast<char>( 4 ); break;
    case hearts: cout << static_cast<char>( 3 ); break;
    case spades: cout << static_cast<char>( 6 ); break;
  }
}
/////////////////////////////////////////////////////////////
int main ( )
{
  card deck [ 52 ];
  int j;
 
  cout << endl;
  for ( j = 0; j < 52; j++ )   // создаем упорядоченную колоду карт
  {
    int num = ( j % 13 ) + 2;
    Suit su = Suit ( j / 13 );
    deck [ j ].set ( num, su );
  }
  // показываем исходную колоду
  cout << "Исходная колода:\n";
  for ( j = 0; j < 52; j++ )
  {
    deck [ j ].display ( );
    cout < "  ";
    if ( !( ( j + 1 ) % 13 ) ) // начинаем новую строку после каждой 13-й карты
      cout << endl;
  }
  srand ( time ( NULL ) );     // инициализируем генератор случайных чисел
  for ( j = 0; j < 52; j++ )
  {
    int k = rand ( ) % 52;     // выбираем случайную карту
    card temp = deck [ j ];    // и меняем ее с текущей
    deck [ j ] = deck [ k ];
    deck [ k ] = temp;
  }
  // показываем перемешанную колоду
  cout << "\nПеремешанная колода:\n";
  for ( j = 0; j < 52; j++ )
  {
    deck [ j ].display ( );
    cout << "  ";
    if ( !( ( j + 1 ) % 13 ) ) // начинаем новую строку после каждой 13-й карты
      cout << endl;
  }
  return 0;
}
1
Erzhan_ast
1 / 1 / 0
Регистрация: 09.11.2010
Сообщений: 44
06.03.2011, 17:31  [ТС] #3
dimon1984, спасибо за код, отличный, переделал под 32 карты как мне надо и все работает. Теперь возник к этому вопрос по поводу мастей: как к каждой карте определить масть? попробовал несколько вариантов, пока что не получается. буду дальше пробовать, но если есть возможность еще помочь - буду очень благодарен.
вот тот же самый код, только переделанный под 32 карты:
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
// cardaray.cpp
// класс игральных карт
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
 
enum Suit { clubs, diamonds, hearts, spades };
// от 7 до 10 обычные числа
const int jack = 11;
const int queen = 12;
const int king = 13;
const int ace = 14;
/////////////////////////////////////////////////////////////
class card
{
  private:
    int number;
    Suit suit;
  public:
    card ( ) // конструктор
      { }
    void set ( int n, Suit s ) // установка значения
      { suit = s; number = n; }
    void display ( );          // показ карты
};
/////////////////////////////////////////////////////////////
void card::display ( )
{
  if ( number >= 7 && number <= 10 )
    cout << number;
  else
  {
    switch ( number )
    {
      case jack: cout << 'J'; break;
      case queen: cout << 'Q'; break;
      case king: cout << 'K'; break;
      case ace: cout << 'A'; break;
    }
  }
  switch ( suit )
  {
    case clubs: cout << static_cast<char>( 5 ); break;
    case diamonds: cout << static_cast<char>( 4 ); break;
    case hearts: cout << static_cast<char>( 3 ); break;
    case spades: cout << static_cast<char>( 6 ); break;
  }
}
/////////////////////////////////////////////////////////////
int main ( )
{
  card deck [ 32 ];
  int j;
 
  cout << endl;
  for ( j = 0; j < 32; j++ )   // создаем упорядоченную колоду карт
  {
    int num = ( j % 8 ) + 7;
    Suit su = Suit ( j / 8 );
    deck [ j ].set ( num, su );
  }
  // показываем исходную колоду
  cout << "Исходная колода:\n";
  for ( j = 0; j < 32; j++ )
  {
    deck [ j ].display ( );
    cout << "  ";
    if ( !( ( j + 1 ) % 8 ) ) // начинаем новую строку после каждой 13-й карты
      cout << endl;
  }
  srand ( time ( NULL ) );     // инициализируем генератор случайных чисел
  for ( j = 0; j < 32; j++ )
  {
    int k = rand ( ) % 32;     // выбираем случайную карту
    card temp = deck [ j ];    // и меняем ее с текущей
    deck [ j ] = deck [ k ];
    deck [ k ] = temp;
  }
  // показываем перемешанную колоду
  cout << "\nПеремешанная колода:\n";
  for ( j = 0; j < 32; j++ )
  {
    deck [ j ].display ( );
    cout << "  ";
    if ( !( ( j + 1 ) % 8 ) ) // начинаем новую строку после каждой 13-й карты
      cout << endl;
  }
  return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.03.2011, 17:31
Привет! Вот еще темы с ответами:

После 10-15 минут игры в ресурсоемкие игры изображение на экране зависает - Видеокарты
Здравствуйте. Проблема моя в том, что после 10-15 минут игры в ресурсоемкие игры изображение на экране зависает. Спасает только...

Нужна помощь в написании игры Манкала. Принцип игры то понятен.. а вот написать.. - Visual Basic
Здравствуйте! Нужна помощь в написании игры Манкала. Принцип игры то понятен.. а вот написать.. Лунки можно обозначить цифрами..

После обновления nvidia при запуске игры слышен звук игры, но экран её не показывает - Windows 10
После обновления до windows 10 перестали запускаться игры, так вроде все работает отлично. Изначально при запуске Warcraft игра...

Для каждой игры определить словесный результат игры (выигрыш, проигрыш или ничья) - Delphi
Помогите решить задачу В одном массиве записано количество мячей, забитых футбольной командой в каждой из n игр, в другом – количество...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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