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

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

Войти
Регистрация
Восстановить пароль
 
cactus09
Чайник
69 / 69 / 4
Регистрация: 15.02.2012
Сообщений: 475
#1

Случайная карта из колоды - C++

18.07.2012, 19:54. Просмотров 1123. Ответов 3
Метки нет (Все метки)

Решил сделать карточную игру "пьяница". В качестве заготовки пока просто сделать программу которая случайно выбирает из колоды карты(без повторов). Но столкнулся с проблемой, программа очень долго думает. Подскажите какой нибудь более хитрый алгоритм для быстрого сравнения на повторы.

Вот код:
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
#include <iostream>
 
using namespace std;
 
int main()
{                 
  char col[4][10]; //Колода карт
  int tmp; //Сама карта(6,Дама,Валет и т.д.)
  int mst; //Масть
  
 for(int i=0;i<4;i++){ //Каждый 9ый символ каждой строки содержит знак масти
   col[i][9]=3+i;      
   
   for(int j=0;j<5;j++){
    col[i][j]=j+6; //заполняем колоды картами до Вольта
   }
  col[i][5]='B'; //Волет
  col[i][6]='D'; //Дама
  col[i][7]='K'; //Король
  col[i][8]='T'; //Туз
  }
  
  for(int i=0;i<36;i++)
   while(1){
    srand(time(0));
    tmp=rand()%9;
    mst=rand()%4;
    
     if(col[mst][tmp]!='X'){
      cout<<i+1<<") MACT6 "<<col[mst][9];
      if(col[mst][tmp]>55){
       cout<<" KAPTA "<<col[mst][tmp]<<endl;}
      else{
       cout<<" KAPTA "<<int(col[mst][tmp])<<endl;}
  
    col[mst][tmp] = 'X';
    break;
   }
  }
   
  system("PAUSE");  
  return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.07.2012, 19:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Случайная карта из колоды (C++):

класс колоды карт и карты - C++
помогите найти ошибку не компелируется! #include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #include &lt;locale&gt; using...

Написать программу сортировки колоды карт - C++
Необходимо упорядочить колоду карт (36 листов) сначала по мастям (пики, трефы, бубны и черви), а внутри каждой масти – по старшинству карт...

Создать два производных класса от колоды карт - C++
Создать класс карта, имеющая ранг и масть. Карту можно перевернуть и открыть. Создать класс - колода карт, содержащий карты. Создать два...

Случайная буква - C++
Здравствуйте. Допустим у меня есть : char rendchar() { string Chars; Chars = &quot;abcdefg.....&quot; Как зделать чтобы из Chars...

случайная фраза - C++
нужна программа, которая будет считывать текст из файла и выводить одно случайное слово. если не трудно помогите пожалуйста

Двумерная Случайная Величина - C++
#include&lt;stdio.h&gt; #include &lt;iostream&gt; using namespace std; int main(){ //Функция моделирования многомерных данных,...

3
dima koz
23 / 17 / 1
Регистрация: 05.06.2012
Сообщений: 72
Записей в блоге: 5
18.07.2012, 20:32 #2
используйте контейнеры из stl. вашем случае либо map либо vector
0
greeezz
273 / 166 / 4
Регистрация: 10.07.2011
Сообщений: 441
18.07.2012, 21:01 #3
cactus09, Если вы выбрали карту из колоды значит там ее больше нет. Простейший алгоритм который может вам помочь это:
1. Перед началом игры перемешиваете колоду.
2. Вытаскиваете карты одну за другой из массива.

В результате ничего не надо сравнивать. Просто и быстро.

Пример как перемешать быстро карты.
C++
1
2
3
4
5
6
7
     for ( int i = 0; i < 52; i++ )
     {
        int j = rand() % 52;
        Card temp = deck[ i ];
        deck[ i ] = deck[ j ];
        deck[ j ] = temp;     
     }
1
cactus09
Чайник
69 / 69 / 4
Регистрация: 15.02.2012
Сообщений: 475
18.07.2012, 21:08  [ТС] #4
greeezz, Спасибо, как только раньше не додумался, видимо под конец дня совсем мозг перестал работать
0
18.07.2012, 21:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.07.2012, 21:08
Привет! Вот еще темы с ответами:

Реализовать иерархию классов для моделирования работы магазина, продающего колоды карт (по 36 и 52 карты) - C++
Задание: 1. Реализовать класс: Магазин колод карт. Добавить возможность добавлять новые колоды(при добавлении присваивать каждой...

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

Случайная последовательность чисел, генерируемой rand() функцией - C++
Как можно из псевдослучайно последовательности сделать случайную-последовательность числе, генерируемую rand() функцией?

Определить вероятность того, что случайная величина попадет в диапазон - C++
Здравствуйте,я учусь на программиста и мне дали задачу, которую я не понимаю вообще(( Вот задача: случайная величина определена как...


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

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

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