Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2017, 18:17   #1
19skip19
Пользователь
 
Регистрация: 18.10.2017
Сообщений: 10
По умолчанию Poker

Здравствуйте, пишу игру "покер". Нужно что бы выдавалось 2 карты, пробовал сделать не получается, выдается 2 одинаковые карты. Прошу помочь!
19skip19 вне форума Ответить с цитированием
Старый 28.10.2017, 18:25   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Посылаю лучи помощи.

rainbow - Google Search - Mozilla Firefox 2017-10-28 18.24.32.jpg
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 28.10.2017, 18:34   #3
19skip19
Пользователь
 
Регистрация: 18.10.2017
Сообщений: 10
По умолчанию

Я оценил оригинальность, но вот кроме оффтопа твое сообщение ничего не несет
19skip19 вне форума Ответить с цитированием
Старый 28.10.2017, 18:36   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну так и в вашем тоже мало полезного.

http://www.programmersforum.ru/announcement.php?f=31
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 28.10.2017, 18:41   #5
19skip19
Пользователь
 
Регистрация: 18.10.2017
Сообщений: 10
По умолчанию

Окей. Вот мой код:
Код:
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
	int a;
	for (int i = 1; i < 3; i++)
	{
		srand(time(0));
		a = rand() % 14;
		cout << a << endl;
		
		
	}
	system("pause");
	return 0;
}
Так как у меня выдача карт зависит от времени выдает две одинаковые карты. Что мне делать?

______________________
Используйте тег [CODE] (кнопка с решеткой # в форме сообщения) при вставке кода на форум.

Последний раз редактировалось Alex11223; 28.10.2017 в 18:53.
19skip19 вне форума Ответить с цитированием
Старый 28.10.2017, 18:52   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Почитать для чего нужен srand.

И еще если нельзя допускать повторы, то сохранять куда-то (массив, а лучше unordered_set, ну или если всего 2 значения, то можно просто int переменную) все сгенерированные значения и при генерации проверять нет ли там уже этого.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 28.10.2017 в 18:54.
Alex11223 вне форума Ответить с цитированием
Старый 30.10.2017, 10:39   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
И еще если нельзя допускать повторы, то сохранять куда-то (массив, а лучше unordered_set, ну или если всего 2 значения, то можно просто int переменную) все сгенерированные значения и при генерации проверять нет ли там уже этого.
вот с колодой карт это как раз тот случай, когда повторов в принципе быть не может (если речь не идёт о шулере, конечно )

поэтому для случая с колодой карт нужно поступать таким образом:
1) выделили массив для хранения карт (например, на 52 элемента).
2) заполнили массив картами по порядку (в цикле)
3) перемешали массив (правильно перемешали - см. пост как правильно тасовать карты )
4) взяли нужное число карт прямо с начала массива (если нужно потом продолжить раздавать карты - то удобно использовать переменную для индекса - сколько карт из массива уже забрали).

всё.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.10.2017, 11:16   #8
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
вот с колодой карт это как раз тот случай, когда повторов в принципе быть не может (если речь не идёт о шулере, конечно )

поэтому для случая с колодой карт нужно поступать таким образом:
1) выделили массив для хранения карт (например, на 52 элемента).
2) заполнили массив картами по порядку (в цикле)
3) перемешали массив (правильно перемешали - см. пост как правильно тасовать карты )
4) взяли нужное число карт прямо с начала массива (если нужно потом продолжить раздавать карты - то удобно использовать переменную для индекса - сколько карт из массива уже забрали).

всё.
А почему уж не std::queue + std::shufffle ? И вобщемта сразу все решилось, в т.ч. ограничение на размер колоды. Масть и значения закодировать, например, масть старший полубайт, значение - младший полубайт, итого выйдет

std::queue<unsigned char> для хранения, саму карту создавать типа

(mast<<4) + value

Последний раз редактировалось alexzk; 30.10.2017 в 11:18.
alexzk вне форума Ответить с цитированием
Старый 30.10.2017, 11:19   #9
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от alexzk Посмотреть сообщение
масть старший полубайт, значение - младший полубайт
зачем такие сложности?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 30.10.2017, 11:24   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от alexzk Посмотреть сообщение
А почему уж не std::queue + std::shufffle ? И вобщемта сразу все решилось
можно и так.
я же описывал БАЗОВЫЙ алгоритм, который можно реализовать без библиотек и шаблонов (практически всё, что нужно - это базовые типы и алгоритмы).
Понятно, что если можно использовать возможности C++, то можно использовать предложенные Вами расширения.
Это будет и короче и надёжней.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
HUD poker Pokerigra Фриланс 4 07.08.2017 11:35
Разработка софта для Online Poker Babka_v_kedah Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 22.02.2010 18:00
Работа с Poker-румом itsme Win Api 2 28.12.2009 19:06