View Single Post
Old 13-07-2008, 15:41   #4
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Non farmi domande sugli scacchi, ma in move() tu modifichi i valori di currentRow e currentColumn ad ogni ciclo, alla fine invece restituisci l'offset da aggiungere alle posizioni iniziali, mentre tu hai controllato l'offset relativo all'ultimo spostamento...

Magari prova così:
Codice:
    for (moveNumber = 0; moveNumber < DIM; ++moveNumber)
    {
        int tempRow = currentRow + vertical[ moveNumber ];
        int tempColumn = currentColumn + horizontal[ moveNumber ];

        if (IN_BOUNDS(tempRow) && IN_BOUNDS(tempColumn) && (board[ tempRow ][ tempColumn ] == 0))
        {
            return moveNumber;
        }
    }
dove IN_BOUNDS() è:
Codice:
#define IN_BOUNDS(x) ((x) >= 0 && (x) < DIM)
Non so se era la logica che volevi, ma secondo me è lì l'errore, e infatti lo spostamento mi restituisce valori diversi, per un totale di 27 spostamenti (senza l'if che ti dicevo prima).
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso