Struktura

0

Witam, mam problem ze strukturą:

#include "common.h"

int checkPossibleMoves(struct BoardField** board, int width, int height, int pieceX, int pieceY)
{
    if ((pieceX > width && pieceX < 0) || (pieceY > height && pieceY < 0))
        return 0;

    else {
        //	int x=pieceX;
        //	int y=pieceY;
        int z = (board[pieceX][pieceY]).piece;
        printf("%d ", z);
        printf("%d ", width);
        printf("%d ", height);
        printf("%d ", pieceX);
        printf("%d ", pieceY);
        return 1;
    }
}

w tak napisanym kodzie wszystko sie sypie, ale jeżeli wpiszę z palca powiedzmy (board[0][0]).piece; śmiga jak trzeba.

1

Nie pokazałeś kodu, nie da rady pomóc.

0

w załączniku jest całość, zaznaczam że nie jest to mój program, moim zadaniem jest dopisanie rozwiązania

2
if ((pieceX > width && pieceX < 0) || (pieceY > height && pieceY < 0))
    return 0;

Powyższy warunek jest zły, bo nigdy nie zostanie spełniony. Indeks nigdy nie będzie równocześnie mniejszy od 0 i większy od max. Dodatkowo powinieneś sprawdzać, czy index jest większy lub równy szerokości i wysokości, gdyż tablice są indeksowane od 0. Powinno być:

if (pieceX >= width || pieceX < 0 || pieceY >= height || pieceY < 0)
    return 0;

1 użytkowników online, w tym zalogowanych: 0, gości: 1