Не получено ввода от пользователя для скользящего слайдера 3х3 - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь создать игру-головоломку с раздвижными плитками 3x3, и я создал головоломку в виде двумерного массива, и теперь я пытаюсь заставить головоломку скользить по плитке.

Я новичок в отладке и не могу выяснить, почему программа не получает пользовательские данные для слайда.

#define SLIDE_UP        1       
#define SLIDE_DOWN      2       
#define SLIDE_LEFT      3       
#define SLIDE_RIGHT     4    

void InitializeBoard(int[NUM_ROWS][NUM_COLS]);
void PrintBoard(int[NUM_ROWS][NUM_COLS]);
bool slideTile(int[NUM_ROWS][NUM_COLS], int);
void scrambleBoard(int[NUM_ROWS][NUM_COLS]);        
bool isBoardSolved(int[NUM_ROWS][NUM_COLS]);
void DeallocateMemory(int[NUM_ROWS][NUM_COLS]);                                                 
int** ppRootPointer = NULL;

int main() {

int slidingBoard[NUM_ROWS][NUM_COLS];       
char keyStroke = ' ';                        
int directionCode = UNSET;  
int slideDirection = 0;

InitializeBoard(slidingBoard);
PrintBoard(slidingBoard);
slideTile(slidingBoard,slideDirection);
PrintBoard(slidingBoard);

_getch();                                       
DeallocateMemory(slidingBoard);

return 0;
}

void InitializeBoard(int theBoard[NUM_ROWS][NUM_COLS]) {

ppRootPointer = new(int*[NUM_COLS]);

for (int i = 0; i < NUM_COLS; i++) {
    ppRootPointer[i] = new(int[NUM_ROWS]);
}

int counter = 1;
int i = 0, j = 0;
for (i = 0; i < NUM_COLS; i++) {
    for (j = 0; j < NUM_ROWS; j++) {
        ppRootPointer[i][j] = counter++;
    }
}
ppRootPointer[i-1][j-1] = PIVOT;


}

void PrintBoard(int theBoard[NUM_ROWS][NUM_COLS]) {
    cout << left;
    for (int i = 0; i < NUM_COLS; i++) {
        for (int j = 0; j < NUM_ROWS; j++) {
            if (ppRootPointer[i][j] != PIVOT) {
                cout << setw(3) << ppRootPointer[i][j];
            }
            else {
                cout << setw(3) << (char)PIVOT;
            }
        }
        cout << endl;
    }
    cout << endl << endl;
}

 bool slideTile(int theBoard[NUM_ROWS][NUM_COLS], int slideDirection) {
    int pivotRow=0;
    int pivotCol=0;
    bool slidebool;
    //once I declare i and j before the loop they go up to 3 instead of 2 
    //which causes the loop to not work
    int i = 0;
    int j = 0;
    for (i = 0; i < NUM_COLS; i++) {
        for (j = 0; j < NUM_ROWS; j++) {

            if (theBoard[i][j] == (char)PIVOT) {
                pivotCol = i;
                pivotRow = j;
                break;
            }
        }
    }
    //These are to assign pivotRow and Col because they dont get assigned 
    //inside of the loop
pivotCol = i;
pivotRow = j;

    cout << "please enter a number to slide the tile (1 = up, 2 = down, 3 = 
left, 4 = right" << endl;
    cin >> slideDirection;

    if (slideDirection == SLIDE_UP) {
        if (pivotRow + 1 > NUM_ROWS) {
            slidebool = false;
        }
        else {
            ppRootPointer[pivotRow + 1][pivotCol] = PIVOT;
            ppRootPointer[pivotRow][pivotCol] = ppRootPointer[pivotRow + 1] 
[pivotCol];
            slidebool = true;

        }
    }

. Я надеюсь, что пользователь сможет ввести целое число 1-4, представляющее слайд для плитки. Это позволило бы мне построить функцию доски скремблирования и приблизиться к завершению кода. Спасибо всем, кто читает это и пытается помочь !!

...