Prego.
Vuoi una spiegazione sui punti?
1)
Array mosse
Davvero banale, ma questa è la logica principale della funzione.
In questo array come avevo detto precedentemente sono inserite le coordinate Y e X di direzione del controllo.
Esempio immagina questo schema:
123456789
+----------+
1 +?oooooox..+
2 +oo........+
3 +o.o.......+
4 +x..x......+
+----------+
Ecco che se vado a mettere 'x' in Y=1 e X=1 devo controllare verticalmente (alto e basso), orizzontalmente (sinistra e destra), e diagonalmente (sulle due diagonali) la presenza di 'o '. Per determinare la validità ovviamente devo avere in fondo una 'x'
Bene, Le direzioni da testare sono 8 e sono kostanti (per esempio cercare la direzione verticale in altro sarà Y-1 e X non subisce variazione -primi 2 elementi dell'array- ecc.. ecc.)
Ecco che per convenzione ho indicizzato le kostanti (da 0 a 7) su y e x (16 elementi... da 0 a 15),
dove:
701
6X2
543
2)
array[riga][colonna] = 'x'; /**L'ho aggiunto io per visualizzare l'inserimento**/
Secondo me non andava aggiunto in quanto questo già lo fai nella funzione 'inserisci_mossa'.
E' la TUA funzione che deve chiamare 'gira_pedine' prima della visualizzazione.
Eventualmente se cio' non fosse possibile per motivi vari (non interessa) era sufficiente agiungere una sola riga di codice dopo la sequenza
if... else...:
array[riga][colonna]=mio_segno;
3)
for (k=0;k<size;k+=2) /* Cosa fa' questo ciclo e perchè icrementi k di 2 e decrementi count??? */
Aumento di 2 perchè l'array è bivalore.. equivale alla definizione int mosse[2][8].
count non viene decrementato. E' inizializzato a -1 prima di entrare nel giro di conta.
4)
riga +=mosse[k]; /** ??? **/
aggiungo la costante definitita nel punto 1
Saluti,
Max