Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

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

icq: 512-765
skype: alexp.frl
По умолчанию

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

rainbow - Google Search - Mozilla Firefox 2017-10-28 18.24.32.jpg
Alex11223 вне форума   Ответить с цитированием
Старый 28.10.2017, 19:34   #3
19skip19
Пользователь
 
Регистрация: 18.10.2017
Адрес: Львов
Сообщений: 10
Репутация: 10
По умолчанию

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

icq: 512-765
skype: alexp.frl
По умолчанию

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

http://www.programmersforum.ru/announcement.php?f=31
Alex11223 вне форума   Ответить с цитированием
Старый 28.10.2017, 19:41   #5
19skip19
Пользователь
 
Регистрация: 18.10.2017
Адрес: Львов
Сообщений: 10
Репутация: 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 в 19:53.
19skip19 вне форума   Ответить с цитированием
Старый 28.10.2017, 19:52   #6
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 17,368
Репутация: 3353

icq: 512-765
skype: alexp.frl
По умолчанию

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

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

Последний раз редактировалось Alex11223; 28.10.2017 в 19:54.
Alex11223 вне форума   Ответить с цитированием
Старый 30.10.2017, 11:39   #7
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,613
Репутация: 5352
По умолчанию

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

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

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

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

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

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

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

(mast<<4) + value

Последний раз редактировалось alexzk; 30.10.2017 в 12:18.
alexzk вне форума   Ответить с цитированием
Старый 30.10.2017, 12:19   #9
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 17,368
Репутация: 3353

icq: 512-765
skype: alexp.frl
По умолчанию

Цитата:
Сообщение от alexzk Посмотреть сообщение
масть старший полубайт, значение - младший полубайт
зачем такие сложности?
Alex11223 вне форума   Ответить с цитированием
Старый 30.10.2017, 12:24   #10
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,613
Репутация: 5352
По умолчанию

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


06:17.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru