Source Code (Use browser search to find items of interest.)
Class Index
kjumpingcube'CubeBoxBase (./kdegames/kjumpingcube/cubeboxbase.h:29)
class CubeBoxBase
{
public:
enum Player{One=1,Two=2};
CubeBoxBase(const int dim=1);
virtual ~CubeBoxBase();
T** operator[](const int index);
/**
* sets number of Cubes in a row/column to 'size'.
*/
virtual void setDim(int dim);
/**
* returns number of Cubes in a row/column
*/
inline int dim() const { return _dim; }
inline Player player() const { return currentPlayer; }
protected:
virtual void deleteCubes();
virtual void initCubes();
/** increases the neighbours of cube at ['row','column'] */
//void increaseNeighbours(int forWhom,int row,int column);
T*** cubes;
Player currentPlayer;
private:
int _dim;
};
template<class T>
CubeBoxBase<T>::CubeBoxBase(const int dim)
{
#ifdef DEBUG
assert(dim>0);
#endif
_dim=dim;
currentPlayer=One;
}
template<class T>
CubeBoxBase<T>::~CubeBoxBase()
{
if(cubes)
deleteCubes();
}
template<class T>
T** CubeBoxBase<T>::operator[](const int index)
{
#ifdef DEBUG
assert(index >= 0);
#endif
return cubes[index];
}
template<class T>
void CubeBoxBase<T>::setDim(int d)
{
if(d != _dim)
{
deleteCubes();
_dim=d;
initCubes();
}
}
template<class T>
void CubeBoxBase<T>::initCubes()
{
const int s=dim();
int i,j;
// create new cubes
cubes = new T**[s];
for(i=0;i<s;i++)
{
cubes[i]=new T*[s];
}
for(i=0;i<s;i++)
for(j=0;j<s;j++)
{
cubes[i][j]=new T();
}
// initialize cubes
int max=dim()-1;
cubes[0][0]->setMax(2);
cubes[0][max]->setMax(2);
cubes[max][0]->setMax(2);
cubes[max][max]->setMax(2);
for(i=0;i<=max;i++)
{
cubes[i][0]->setMax(3);
cubes[i][max]->setMax(3);
cubes[0][i]->setMax(3);
cubes[max][i]->setMax(3);
}
for(i=1;i<max;i++)
for(j=1;j<max;j++)
{
cubes[i][j]->setMax(4);
}
}
template<class T>
void CubeBoxBase<T>::deleteCubes()
{
int i,j;
for(i=0;i<dim();i++)
for(j=0;j<dim();j++)
{
delete cubes[i][j];
}
for(i=0;i<dim();i++)
{
delete [] cubes[i];
}
delete [] cubes;
cubes=0;
}
/*
template<class T>
void CubeBoxBase<T>::increaseNeighbours(int forWhom,int row,int column)
{
int _player = (T::Owner)(forWhom);
if(row==0)
{
if(column==0) // linke obere Ecke
{
cubes[0][1]->increase(_player);
cubes[1][0]->increase(_player);
return;
}
else if(column==dim()-1) // rechte obere Ecke
{
cubes[0][dim()-2]->increase(_player);
cubes[1][dim()-1]->increase(_player);
return;
}
else // oberer Rand
{
cubes[0][column-1]->increase(_player);
cubes[0][column+1]->increase(_player);
cubes[1][column]->increase(_player);
return;
}
}
else if(row==dim()-1)
{
if(column==0) // linke untere Ecke
{
cubes[dim()-2][0]->increase(_player);
cubes[dim()-1][1]->increase(_player);
return;
}
else if(column==dim()-1) // rechte untere Ecke
{
cubes[dim()-2][dim()-1]->increase(_player);
cubes[dim()-1][dim()-2]->increase(_player);
return;
}
else // unterer Rand
{
cubes[dim()-1][column-1]->increase(_player);
cubes[dim()-1][column+1]->increase(_player);
cubes[dim()-2][column]->increase(_player);
return;
}
}
else if(column==0) // linker Rand
{
cubes[row-1][0]->increase(_player);
cubes[row+1][0]->increase(_player);
cubes[row][1]->increase(_player);
return;
}
else if(column==dim()-1) // rechter Rand
{
cubes[row-1][dim()-1]->increase(_player);
cubes[row+1][dim()-1]->increase(_player);
cubes[row][dim()-2]->increase(_player);
return;
}
else
{
cubes[row][column-1]->increase(_player);
cubes[row][column+1]->increase(_player);
cubes[row-1][column]->increase(_player);
cubes[row+1][column]->increase(_player);
return;
}
}
*/
kjumpingcube'CubeBoxBase::deleteCubes() (./kdegames/kjumpingcube/cubeboxbase.h:149)
void CubeBoxBase<T>::deleteCubes()
{
int i,j;
for(i=0;i<dim();i++)
for(j=0;j<dim();j++)
{
delete cubes[i][j];
}
for(i=0;i<dim();i++)
{
delete [] cubes[i];
}
delete [] cubes;
cubes=0;
}
/*
template<class T>
void CubeBoxBase<T>::increaseNeighbours(int forWhom,int row,int column)
{
int _player = (T::Owner)(forWhom);
if(row==0)
{
if(column==0) // linke obere Ecke
{
cubes[0][1]->increase(_player);
cubes[1][0]->increase(_player);
return;
}
else if(column==dim()-1) // rechte obere Ecke
{
cubes[0][dim()-2]->increase(_player);
cubes[1][dim()-1]->increase(_player);
return;
}
else // oberer Rand
{
cubes[0][column-1]->increase(_player);
cubes[0][column+1]->increase(_player);
cubes[1][column]->increase(_player);
return;
}
}
else if(row==dim()-1)
{
if(column==0) // linke untere Ecke
{
cubes[dim()-2][0]->increase(_player);
cubes[dim()-1][1]->increase(_player);
return;
}
else if(column==dim()-1) // rechte untere Ecke
{
cubes[dim()-2][dim()-1]->increase(_player);
cubes[dim()-1][dim()-2]->increase(_player);
return;
}
else // unterer Rand
{
cubes[dim()-1][column-1]->increase(_player);
cubes[dim()-1][column+1]->increase(_player);
cubes[dim()-2][column]->increase(_player);
return;
}
}
else if(column==0) // linker Rand
{
cubes[row-1][0]->increase(_player);
cubes[row+1][0]->increase(_player);
cubes[row][1]->increase(_player);
return;
}
else if(column==dim()-1) // rechter Rand
{
cubes[row-1][dim()-1]->increase(_player);
cubes[row+1][dim()-1]->increase(_player);
cubes[row][dim()-2]->increase(_player);
return;
}
else
{
cubes[row][column-1]->increase(_player);
cubes[row][column+1]->increase(_player);
cubes[row-1][column]->increase(_player);
cubes[row+1][column]->increase(_player);
return;
}
}
*/