Olá, estou desenvolvendo um jogo de dados orientado a objetos em C++ e uma das regras do jogo consta em sortear 3 dados de um pote e, se eles forem amarelos, deixar eles reservados e, se não, sortear novamente outro dado. Estou com problemas na hora de definir quantos dados serão sorteados novamente, já que tenho que calcular o número de dados amarelos já sorteados (defini um status equivalente a onde dado está) e sortear mais x dados até completar 3 dados.
Segue abaixo o sorteio dos dados na classe Pote:
int Pote::retirarDado()
{
//aqui faz o sorteio do dado a ser retirado
//respeitando se ele ainda está no pote
srand(time());
int id;
do
{
id = rand() % 13; // sorteia 1 dos 13 dados
int face = dados[id].sortear(); // sorteia a face do dado que caiu
return face;
} while (dados[id].getStatus() != POTE);
//no final, retornar o indice do dado retirado
//(está -1 por enquanto)
return -1;
}
E aqui o método na classe Players para fazer o sorteio de quantos dados faltam:
void Players::jogar()
{
int tiros = , cerebrosTmp = ;
//Aqui o player joga a primeira vez
for (int i = 3; i > ; i--) {
pote.retirarDado();
}
while (tiros < 3)
{
//Escolhe se quer continuar jogando ou se
//quer teminar a rodada (caso não tenha levado 3 tiros)
if (/* botão de "continuar jogando" for apertado*/) {
// sortear do pote de acordo com o que falta na mesa
}
else {
tiros = ;
cerebros = cerebrosTmp;
}
}
}
Agradeço desde já a colaboração