Есть Лабораторная работа - Игра Ханойские башенки(гатовая)
Но я не понимаю код(((
Ну не сказать что всё не пониманима, в чём то разобрался а что то вообще никакм
вот ссылка на сам проект.
http://www.fayloobmennik.net/1786684
а здесь мне бы коменты раскидать, а то вообще беда(((
Код:
class PYRAMID
{
bool Placing[3];
public:
PYRAMID(bool Empty)
{
for(int i=0; i<3; i++)
Placing[i] = Empty;
};
bool ItTopRinglet(int NumberRinglet)
{
if(NumberRinglet == 0)
return true;
else
return false;
};
bool MayPutRinglet(int NumberRinglet)
{
for(int i=NumberRinglet; i>=0; i--)
if(Placing[i])
return false;
return true;
};
bool MayTakeRinglet(int NumberRinglet)
{
for(int i=NumberRinglet; i>0; i--)
if(Placing[i-1])
return false;
return true;
};
void PutRinglet(int NumberRinglet)
{
Placing[NumberRinglet] = true;
};
void TakeRinglet(int NumberRinglet)
{
Placing[NumberRinglet] = false;
};
bool WhoOwner(int NumberRinglet)
{
if(Placing[NumberRinglet])
return true;
else
return false;
}
bool PyramidIsEmpty()
{
for(int i=0; i<3; i++)
if(Placing[i])
return false;
return true;
};
};
//---------------------------------------------------------------------------
class GAME
{
vector <PYRAMID> Pyramids;
public:
GAME()
{
Pyramids.clear();
Pyramids.push_back(PYRAMID(true));
Pyramids.push_back(PYRAMID(false));
Pyramids.push_back(PYRAMID(false));
};
bool MayTakeRingletFromPyramide(int NumberRinglet)
{
int NumberPyramid;
for(unsigned i=0; i<Pyramids.size(); i++)
if(Pyramids[i].WhoOwner(NumberRinglet))
{
NumberPyramid = i;
break;
};
if(Pyramids[NumberPyramid].ItTopRinglet(NumberRinglet))
return true;
else
return Pyramids[NumberPyramid].MayTakeRinglet(NumberRinglet);
};
bool MayPutRingletOnPyramid(int NumberRinglet, int NumberPyramid)
{
if(Pyramids[NumberPyramid].ItTopRinglet(NumberRinglet))
return true;
else
return Pyramids[NumberPyramid].MayPutRinglet(NumberRinglet);
};
void MoveRinglet(int NumberRinglet, int NumberPyramid)
{
for(unsigned i=0; i<Pyramids.size(); i++)
Pyramids[i].TakeRinglet(NumberRinglet);
Pyramids[NumberPyramid].PutRinglet(NumberRinglet);
};
bool YouWin()
{
if(/*(Pyramids[0].PyramidIsEmpty() && Pyramids[2].PyramidIsEmpty()) ||*/ (Pyramids[0].PyramidIsEmpty() && Pyramids[1].PyramidIsEmpty()))
return true;
else
return false;
}
};
//---------------------------------------------------------------------------