topical media & game development
professional-program-11-GameBoard-GameBoard.c
? /
professional-program-11-GameBoard-GameBoard.c
// GameBoard.cpp
include <GameBoard.h>
// Microsoft Visual Studio requires you to omit the following two lines.
// However, some compilers require them.
//const int GameBoard::kDefaultWidth;
//const int GameBoard::kDefaultHeight;
GameBoard::GameBoard(int inWidth, int inHeight) :
mWidth(inWidth), mHeight(inHeight)
{
mCells = new GamePiece* [mWidth];
for (int i = 0; i < mWidth; i++) {
mCells[i] = new GamePiece[mHeight];
}
}
GameBoard::GameBoard(const GameBoard& src)
{
copyFrom(src);
}
GameBoard::~GameBoard()
{
// free the old memory
for (int i = 0; i < mWidth; i++) {
delete [] mCells[i];
}
delete [] mCells;
}
void GameBoard::copyFrom(const GameBoard& src)
{
int i, j;
mWidth = src.mWidth;
mHeight = src.mHeight;
mCells = new GamePiece* [mWidth];
for (i = 0; i < mWidth; i++) {
mCells[i] = new GamePiece[mHeight];
}
for (i = 0; i < mWidth; i++) {
for (j = 0; j < mHeight; j++) {
mCells[i][j] = src.mCells[i][j];
}
}
}
GameBoard& GameBoard::operator=(const GameBoard& rhs)
{
// check for self-assignment
if (this == &rhs) {
return (*this);
}
// free the old memory
for (int i = 0; i < mWidth; i++) {
delete [] mCells[i];
}
delete [] mCells;
// copy the new memory
copyFrom(rhs);
return (*this);
}
void GameBoard::setPieceAt(int x, int y, const GamePiece& inElem)
{
mCells[x][y] = inElem;
}
GamePiece& GameBoard::getPieceAt(int x, int y)
{
return (mCells[x][y]);
}
const GamePiece& GameBoard::getPieceAt(int x, int y) const
{
return (mCells[x][y]);
}
(C) Æliens
20/2/2008
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.