Dopo questo ho provato a creare un gioco effetto "Roll the dice", così premendo invio in base al random creato o una squadra attacca o l'altra attacca, ovviamente come seed ho usato srand(time(NULL)); però sembra che in certe fasce di orario funzioni mentre in altre no, cioè ad un certo tempo attacca mentre all'altro da input errato, incollando il codice capirete meglio credo
#include<iostream>
#include<limits>
#include<stdlib.h>
#include<time.h>
using namespace std;
int main()
{
bool flag;
int a, b, dice;
char war;
char again = 's';
while ((cout << "Numero cowboys: ") && !(cin >> a))
{
cout << "\nSi prega di immettere un numero" << endl;
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
cin.ignore(numeric_limits<streamsize>::max(), '\n');
while ((cout << "Numero cowgirls: ") && !(cin >> b))
{
cout << "\nSi prega di immettere un numero\n";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
cin.ignore(numeric_limits<streamsize>::max(), '\n');
srand (time(NULL));
dice = rand() % 10;
flag = true;
while (again == 's' || again == 'S')
{
cout << "Roll the dice \n";
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cin.get();
if ( dice>=0 && dice<=5 )
{
cout << "I cowboys attaccano per primi, le cheerleaders perdono una unità." << endl;
b--;
if (b == 0)
{
cout << "Game over per le cheerleaders." << endl << endl;
cout << "Premi enter per chiudere." << endl;
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cin.get();
return 0;
}
cout << "Numero cowboys " << a << endl << "Numero Cheerleaders " << b << endl;
}
else if ( dice>5 && dice>=10 )
{
cout << "Le cheerleaders attaccano per prime, i cowboys perdono una unità." << endl;
a--;
if (a == 0)
{
cout << "Game over per i cowboys." << endl << endl;
cout << "Premi enter per chiudere." << endl;
cin.get();
return 0;
}
cout << "Numero cwboys " << a << endl << "Numero cheerleaders " << b << endl;
}
else
{
cout << "Input errato, riprova." << endl;
flag = false;
}
if (flag)
{
cout << "Vuoi attaccare ancora? (s/n)" << endl;
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cin >> again;
}
}
}
Ho messo come variabile dice, e come codice "dice = rand() % 10;" cosicchè mi dia numeri piccoli ed interi, non l'ho mai visto superare il 10 provando questo codice
#include<iostream>
#include<time.h>
#include<stdlib.h>
int main()
{
int dice;
srand (time(NULL));
dice = rand() % 10;
std::cout<< dice;
if ( std::cin.get())
{
return 0;
}
}
allora come mai da input errato? Se tolgo il "% 10" inoltre mi da numeri come 5800 e così via, ora provate a capirmi, x e y sono numeri a caso, 58xy per esempio, questa x sembra si comporti come i secondi, e y i millisecondi, il resto non riesco a capire cosa sia ( 58 ), avete una spiegazione? Internet dice solo che prende il seed dal tempo, ma non riesco a spiegarmi questo numero a 4 cifre, ah inoltre nel secondo codice seppure abbia messo <iostream> non mi riconosceva cout e cin stavolta, strano, ho dovuto aggiungere std::