|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jun 2010
Messaggi: 48
|
[c++] Mastermind, funzione di verifica
Sto realizzando un mastermind in c++
http://it.wikipedia.org/wiki/Mastermind http://en.wikipedia.org/wiki/Masterm...8board_game%29 Non avendo ancora studiato la parte grafica del c++ (anche perchè al momento non mi interessa), ho pensato di farlo con i numeri. Ho creato una funzione che mi genera un array di interi random < 8, ed una funzione che chiede un array al giocatore. Il problema si presenta nel momento di determinare se i numeri sono stati indovinati, o meglio se non sono stati indovinati, mi spiego: per trovare un numero indovinato mi basta fare: array_pc[i] meno array_giocatore[i] se =0 il numero è uguale, se != 0 il nemero è diverso. se != 0 dovrei anche controllare che tale numero non sia in un altra posizione e qui mi blocco. Avevo pensato di fare una cosa del tipo: se array_pc[0] - array_giocatore[0] != 0 || array_pc[1] - array_giocatore[0] !=0 || etc..., solo che mi sembra un pò una st*****ta. Qualche suggerimento? |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2011
Città: Parma
Messaggi: 313
|
prova con la funzione strcmp della libreria string
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Aug 2003
Città: Barletta (BA)
Messaggi: 939
|
Utilizzando C++11 è abbastanza semplice (ricordati che se usi GCC va aggiunta l'opzione -std=c++11 e devi avere una versione molto recente di GCC)
Codice:
#include <iostream> #include <array> #include <random> #include <algorithm> #include <limits> int main(int argc, char **argv) { using namespace std; static const size_t values_size = 3; array<int, values_size> random_values; array<int, values_size> user_values; random_device rd; default_random_engine prng(rd()); uniform_int_distribution<int> dis(0, 7); cout << "I valori casuali sono: " << endl; for(int& rnd : random_values) { rnd = dis(prng); cout << rnd << endl; } sort(random_values.begin(), random_values.end()); cout << "Inserisci " << values_size << " valori casuali" << endl; for(int& value : user_values) { while (!(cin >> value)) { cout << "Il numero inserito non è valido, riprova" << endl; cin.clear(); cin.ignore(numeric_limits<streamsize>::max(), '\n'); } } sort(user_values.begin(), user_values.end()); if(random_values == user_values) { cout << "I numeri sono stati indovinati" << endl; } else { cout << "I numeri non sono stati indovinati" << endl; } return 0; }
__________________
In a world without fences, who needs Gates? Power by: Fedora 8 - Mac OS X 10.4.11 Ultima modifica di nico159 : 05-06-2013 alle 21:25. |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
Quote:
|
|
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Aug 2003
Città: Barletta (BA)
Messaggi: 939
|
Quote:
Che differenze ci sono? Il compilatore per entrambi i casi sostituisce values_size con il suo valore all'interno del codice
__________________
In a world without fences, who needs Gates? Power by: Fedora 8 - Mac OS X 10.4.11 |
|
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Aug 2003
Città: Barletta (BA)
Messaggi: 939
|
Quote:
![]()
__________________
In a world without fences, who needs Gates? Power by: Fedora 8 - Mac OS X 10.4.11 |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:16.