Реализация автоматных операторов головы новобранца
extern int nTurning;
// признак поворота: 1 - налево; -1 - направо
///////////////////////////////////////////////////////////
// Construction/Destruction
///////////////////////////////////////////////////////////
CHead::CHead():CBullet() { }
CHead::CHead(CWnd* pW, int nNum, CSize sz,
LArc *pTBL, int nPri)
:CBullet(pW, nNum, sz, pTBL, nPri)
{
pFsaNeighbour = NULL;
y9();
}
int CHead::x5() { return cstrFace==?Л?; }
int CHead::x6() { return cstrFace==?П?; }
CString cstrState;
int CHead::x7()
{
CString s;
if (!pFsaMan) return false;
cstrState = this->FGetState();
if (nNumBounce==1) {
// правофланговый повернулся направо и теперь
// не будет видеть соседей слева
if (cstrState==?право?) return false;
}
if (pFsaNeighbour == NULL) {
// левовофланговый повернулся налево и теперь
// не будет видеть соседей справа
if (cstrState==?лево?) return false; }
TBounce* pB = NULL;
if (pFsaNeighbour != NULL) {
pB = pFsaNeighbour->pTBounce;
}
if (pB!=NULL) {
s = pFsaNeighbour->pTBounce->cstrFace;
return s!=cstrFace;
}
else return false;
}
// выполнить команду ?случайно? направо/налево
void CHead::y5()
{
int n = rand();
int n2 = (32767/3)*nTurning;
int n3 = (32767/2)+n2;
if (npFsaRightMan;
}
// поворот налево
void CHead::y7()
{cstrFace = ?Л?;
if (!pFsaMan) return;
pFsaNeighbour = ((CRifleman*)pFsaMan)->pFsaLeftMan;}
// +1 в счетчик поворотов
void CHead::y8()
{((CRifleman*)pFsaMan)->pChainShot->nCountTurning++;}
// лицо прямо
void CHead::y9() { cstrFace = ?Ф?; }
void CHead::y10() { MakeNewBall(); CBullet::y1(); }