Jednorazowe losowanie znaku do gry

0

Witam.
Chcę zrobić losowanie ruchu gracza w grze kółko krzyżyk, tak by nie zaczynał zawsze np X tylko wylosowany znak a następnie już na przemian.
I właśnie nie wiem jak rozwiązać ten problem gdyż jak dodam kod losujący ciągle wywala mi jeden znak przez całą grę. Jak temu zaradzić?
Oto fragment kodu

 
    char sign;
      char array[2] = {'O','X'};
    sign = rand()%2;
   if(sign == 'O')
   {
  who_player =player2;

   }
   else if(sign == 'X')
   {
   who_player =player1;
   }
 sign = (sign == 'O') ? 'X' : 'O';
0

a masz srand(time(NULL));?

0

Zapomniałem dodać fakt, ale to i tak nic nie zmieniło...

1

skorzystaj z tej biblioteki
http://www.cplusplus.com/reference/random/
(wymaga c++11)

0

Pokaż więcej kodu, bo to powinno dobrze działać.

sign = rand()%2;
   if(sign == 'O')

Wtf?
Wiesz, że rand zwraca int? Nie zwróci magicznie znaku z twojej tablicy.
Więc jakim cudem sign może być równe O lub X?

1

Przykład

#include <iostream>
#include <random>
using namespace std;

int main(){
    default_random_engine generator;
    bernoulli_distribution distribution(0.5);

    for(size_t i = 0; i < 10; ++i)
        cout << (distribution(generator)? 'X' : 'O') << endl;

    return 0;
}
1
sign = rand()%2;
if(sign == 'O')

raczej array[sign] == 'O'

1
loleq1111 napisał(a):

Zapomniałem dodać fakt, ale to i tak nic nie zmieniło...

Bo srand(time(NULL)); dodaje się jeden raz na początku programu.

0

po co sobie komplikować życie z tym znakiem?

int znak
[...]
if (znak==0)
{
     sign='X';
} 

1 użytkowników online, w tym zalogowanych: 0, gości: 1