Sicuramente hai ragione, ma se MAI inizio MAI imparo. La programmazione è l'unica cosa in cui non riesco a imparare facilmente di conseguenza è una questione personale.Secondo me non sei pronto per passare alla programmazione ad oggetti, quindi andiamo per gradi.
Scusami ma è quello che fa, ti elenco passo per passo quello che avrei voluto fare.Un costruttore di un oggetto (in questo caso di un Cavallo) deve unicamente inizializzare delle sue proprietà:
cavallo::cavallo(){
// Variabili di prova
dbg01 = 0; <- Non serve a nulla, tutte le variabili, funzioni che iniziano con dbgX hanno lo scopo di fare da debug e vedere risultati. dbg = debug
In origine sarebbe servita a capire se una casella era già occupata o no, ma non funziona
arrayMosseCasuali = new int [numeroMosse];
int numeroMosse = 64;
// Crea la tabella di 8*8
maxRangeColonna = 8;
maxRangeRiga = 8;
int arraySize = 64; In teoria le mosse dovrebbero essere 64 quindi la dimensione massima pensata per le mosse da fare sono 64
Posiziona il cavallo al centro della scacchiera
posRiga = 4;
posColonna = 3;
// crea lo spazio per la creazione degli array
Sono gli array che permettono al cavallo di spostasi orizzontalmente e verticalmente al interno della scacchiera.
arrayOrizontale = new int [arraySize];
arrayVerticale = new int [arraySize];
// questo tiene traccia di TUTTI gli spostamenti effettuati dal cavallo
arrayMemorizzaScelte = new int [arraySize];
Inizializza a 0 tutti gli array del programma
// azzera il contatore delle mosse già estratte
for ( int i1 = 0; i1 < numeroMosse; i1++)
arrayMosseCasuali[i1] = 0;
// crea arrayBidimensionale
arrayMovimento = new int *[maxRangeColonna];
for (int i1 = 0; i1 < maxRangeColonna; i1++){
arrayMovimento[i1] = new int [maxRangeRiga];
}
//inizializza arrayBidimensionale
for (int i1 = 0; i1 < maxRangeColonna; i1++){
for ( int i2 = 0; i2 < maxRangeRiga; i2++){
arrayMovimento[i1][i2] = 0;
}
}
Attraverso posColonna e posRiga segna che in questa posizione c'è la mossa 0
arrayMovimento[posColonna][posRiga] = 0;
Qui mia colpa DOVEVO documentare meglio eccovi una tabella che chiarirà tutto. Queste sono le posizione possibili che il cavallo può fare con arrayOrizontale[0] e arrayVerticale[0] la lettara K è la posizione dove il cavallo si trova in questo momento
0 0 0 0 0 0 0 0
0 0 2 0 1 0 0 0
0 3 0 0 0 0 0 0
0 0 0 K 0 0 0 0
0 4 0 0 0 7 0 0
0 0 5 0 6 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
// poszioni possibili
arrayOrizontale[0] = 2;
arrayOrizontale[1] = 1;
arrayOrizontale[2] = -1;
arrayOrizontale[3] = -2;
arrayOrizontale[4] = -2;
arrayOrizontale[5] = -1;
arrayOrizontale[6] = 1;
arrayOrizontale[7] = 2;
arrayVerticale[0] = -1;
arrayVerticale[1] = -2;
arrayVerticale[2] = -2;
arrayVerticale[3] = -1;
arrayVerticale[4] = 1;
arrayVerticale[5] = 2;
arrayVerticale[6] = 2;
arrayVerticale[7] = 1;
}
Spero di essere stato chiaro, alla luce di queste nuove informazione cosa NON dovevo mettere all'interno del costruttore?
Ciao
Lele
