i want help in this. i am new to this Object oriented programming.Please help. i want to know if i have to create public class, and should i create header file, driver.cpp and .h file and all. i have to do the program using this prototypes.
Instructor said, "This is a 3x3 slide tile puzzle. When writing this program, you should adhere to the object-oriented programming paradigm."
int SlidingPuzzle::theBoard[3][3];
SlidingPuzzle::SlidingPuzzle();
void SlidingPuzzle::InitializeBoard();
bool SlidingPuzzle::isBoardSolved();
bool SlidingPuzzle::slideTile(int);
void SlidingPuzzle::scrambleBoard();
void SlidingPuzzle::PrintBoard();
Code:#include <iostream> #include <Windows.h> #include <conio.h> #include <time.h> #include <iomanip> using namespace std; // functions that perform elementary operations on the board void initializeBoard(int board[3][3]); void printBoard(int board[3][3]); bool isBoardSolved(int[3][3]); void slideTile(int board[3][3],int move); void scrambleBoard(int[3][3]); int main() { int puzzleBoard[3][3]; char input; bool invalid = false; initializeBoard(puzzleBoard); printBoard(puzzleBoard); cout << boolalpha; cout<<"isBoardSolved(): "<<isBoardSolved(puzzleBoard)<<endl; cout<<"Press enter to begin"<<endl; cin.get(); cout<<"Scrambling the game tiles..."<<endl; scrambleBoard(puzzleBoard); cout<<"Scrambling complete, press enter to begin solving. "<<endl; cout<<" Good Luck! "<<endl; cin.get(); system("CLS"); // clear the screen to began solving. printBoard(puzzleBoard); cout<<endl<<endl; cout<<"[W - Up] [S - Down] [A - Left] [D - Right]"<<endl; cout<<"Input: "; // loop till the game is solved while(!isBoardSolved(puzzleBoard)) { input = getch(); system("CLS"); // selecting the game controls switch(toupper(input)) { case 'W': slideTile(puzzleBoard,2); break; case 'A': slideTile(puzzleBoard,0); break; case 'S': slideTile(puzzleBoard,3); break; case 'D': slideTile(puzzleBoard,1); break; default: invalid = true; } printBoard(puzzleBoard); cout<<endl<<endl; cout<<"[W - Up] [S - Down] [A - Left] [D - Right]"<<endl; // setting controls for user to understand if(invalid) { cout<<"Invalid Input - ["<<input<<"]"; // output invalid if user enters other letters invalid = false; } else cout<<"Last Input: "<<input; } cout<<endl; cout<<"Congratulations: BOARD SOLVED"<<endl; system("PAUSE"); return 0; } void printBoard(int board[3][3]) { HANDLE hConsole; hConsole = GetStdHandle(STD_OUTPUT_HANDLE); for(int row = 0; row < 3; row++) { for(int column = 0; column < 3; column++) { if(board[row][column] == 0) { // setting colors SetConsoleTextAttribute(hConsole, 6); cout<<" *"; } else { // if the number is in the right position if(board[row][column] == ((row*3)+(column+1))) SetConsoleTextAttribute(hConsole, 9); else // if the number is not in the right position SetConsoleTextAttribute(hConsole, 13); cout<<" "<<board[row][column]; } } cout<<endl; } SetConsoleTextAttribute(hConsole, 12); // set text color } // board setup. initializing void initializeBoard(int board[3][3]) { int i = 1; for(int row = 0; row < 3; row++) { for(int column = 0; column < 3; column++) { board[row][column] = i; i++; } board[2][2] = 0; } } // movements void slideTile(int board[3][3],int move) { int emptyRow; int emptyColum; int emptySpace[2]; bool legalMoves[4] = {1,1,1,1}; for(int row = 0; row < 3; row++) { for(int column = 0; column < 3; column++) { if(board[row][column] == 0) { emptyRow = row; emptyColum = column; } } } if(emptyRow + 1 > 2) legalMoves[2] = false; else if(emptyRow - 1 < 0) legalMoves[3] = false; if(emptyColum - 1 < 0) legalMoves[1] = false; else if(emptyColum + 1 > 2) legalMoves[0] = false; switch(move) { case 0: if(legalMoves[move]) { board[emptyRow][emptyColum] = board[emptyRow][emptyColum + 1]; board[emptyRow][emptyColum + 1] = 0; emptyColum = emptyColum+1; } break; case 1: if(legalMoves[move]) { board[emptyRow][emptyColum] = board[emptyRow][emptyColum - 1]; board[emptyRow][emptyColum- 1] = 0; emptyColum = emptyColum-1; } break; case 2: if(legalMoves[move]) { board[emptyRow][emptyColum] = board[emptyRow+1][emptyColum]; board[emptyRow+1][emptyColum] = 0; emptyRow = emptyRow+1; } break; case 3: if(legalMoves[move]) { board[emptyRow][emptyColum] = board[emptyRow-1][emptyColum]; board[emptyRow-1][emptyColum] = 0; emptyRow = emptyRow-1; } break; } } void scrambleBoard(int board[3][3]) { srand ( time(NULL) ); int move; while(isBoardSolved(board)) { for(int i = 0; i < 9000; i++) { move = rand() % 5; slideTile(board,move); } } } // is the board solved bool isBoardSolved(int board[3][3]) { int solvedBoard[3][3] = {{1,2,3},{4,5,6},{7,8,0}}; bool boardSolved = true; int row = 0; int col = 0; while(boardSolved && row<=2) { if(solvedBoard[row][col] == board[row][col]) { col++; if(col >= 3) { row++; col = 0; } } else boardSolved = false; } return boardSolved; }



LinkBack URL
About LinkBacks



