22/12/09 13:07
salve raga vi chiedo un aiutino...conoscerete di sicuro l'enigma della mossa del cavallo,
per chi non lo conoscesse io ho una scacchiera 8x8 nella quale devo far muovere il mio cavallo facendo attenzione che esso si fermi su ognuna delle 64 caselle una ed una sola volta...
questo è quello che ho implementato fino ad ora:
il problema sta nel far capire al cavallo che non deve andare fuori dai bordi...io avevo pensato che creando una scacchiera di 12x12 invece che 8x8 e mettendo a 1 i bordi e la scacchiera interna (8x8) azzerata...potevo semplicemente dire al cavallo :
ma sono sicuro che ci sia un altro modo senza aggiungere questa cornice alla matrice...
La consulenza è aperta!!
per chi non lo conoscesse io ho una scacchiera 8x8 nella quale devo far muovere il mio cavallo facendo attenzione che esso si fermi su ognuna delle 64 caselle una ed una sola volta...
questo è quello che ho implementato fino ad ora:
#include <iostream> #include <ctime> using namespace std; const int N = 12; void stampa(int [][N]); void istruzioni(); void mossa(); int main() { int riga = 4, colonna = 3; int verticale[8] = {-1, -2, -2, -1, 1, 2, 2, 1}; int orizzontale[8] = {2, 1, -1, -2, -2, -1, 1, 2}; char decisione; int Board[N][N] = {0}; cout << "\t\t\t***L'enigma della mossa del cavallo***\n\n"; cout << "vuoi leggere le istruzioni? S/N"; cin >> decisione; if (decisione == 's' || decisione == 'S') istruzioni(); else cout << "\n\t\t\tOk ora comincia il gioco...\n\n"; mossa(); system("pause"); return 0; } void stampa(int a[][N]) { for(int i = 2; i < N - 2; i++) { for(int j = 2; j < N - 2; j++) cout << "|" << a[i][j] << "|"; cout << endl; } } void istruzioni() { cout << "devi cercare di far posizionare il cavallo su tutte le caselle una ed una sola\n" << "volta senza farlo fermare mai su una casella su cui e' gia' stato!\n" << "in totale il cavallo dovra' fare 64 fermate...\nvediamo se sei capace!!! :)\n\n"; } void mossa() { cout << "digita uno dei seguenti numeri\n\n"; cout << "0) destra - su\n" << "1) su - destra\n" << "2) su - sinistra\n" << "3) sinistra - su\n" << "4) sinistra - giu'" << "5) giu' - sinistra\n" << "6) giu' - destra\n" << "7) destra - giu'\n\n"; }
il problema sta nel far capire al cavallo che non deve andare fuori dai bordi...io avevo pensato che creando una scacchiera di 12x12 invece che 8x8 e mettendo a 1 i bordi e la scacchiera interna (8x8) azzerata...potevo semplicemente dire al cavallo :
esegui la mossa if(Board[riga][colonna] != 1 && Board[riga][colonna] == 0)
ma sono sicuro che ci sia un altro modo senza aggiungere questa cornice alla matrice...
La consulenza è aperta!!