//Tetrad.cpp #include "Tetrad.h" using namespace std; Tetrad::Tetrad(int type, int startx, int starty) : x(startx), y(starty) { show = true; fstream fin; switch(type) { case O: fin.open("tetrado.txt", ios::in); break; case S: fin.open("tetrads.txt", ios::in); break; case Z: fin.open("tetradz.txt", ios::in); break; case T: fin.open("tetradt.txt", ios::in); break; case L: fin.open("tetradl.txt", ios::in); break; case J: fin.open("tetradj.txt", ios::in); break; case I: fin.open("tetradi.txt", ios::in); break; } fin >> width; fin >> height; fin >> blocked; fin >> empty; tetradData = new char* [height]; //create and fill in rows for (int i = 0; i < height; i++) { tetradData[i] = new char[width];//create new row for (int j = 0; j < width; j++) { fin >> tetradData[i][j]; } fin.ignore(); //ignore the new line character } //close file stream fin.close(); } // ----------- rotation --------------- // void Tetrad::rotateCW() { //example from class int w = height; int h = width; char ** newmap = new char *[h]; for (int r= 0; r < h; ++r) { for (int c=0; c < height;++c) { newmap[r][c] = tetradData[(height-1)-c][r]; } } zeroOut(); //ref to release map resources width = w; height = h; tetradData = newmap; } void Tetrad::rotateCCW() { } // ------------ maitenance --------------- // void Tetrad::zeroOut() { //empty memory for (int row = 0; row < height; row++) { delete tetradData[row]; } //reset the variables height = width = 0; //x and y remain for the rotation functions //they are reset by the new tetrad function }