|
|||||||
|
|
|
![]() |
|
|
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 22: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: 17:44.




















