Глава 1
int CField::ReceiveMessage(int wParam, long lParam)
{
int i, j;
LISTDATA listdata;
switch(wParam)
{
case
N_MESSAGE:
listdata.x = NetPoint.x;
listdata.y = NetPoint.y;
listdata.str = "ВЫ";
m_Steps++;
if(lParam == N_EMPTY)
{
m_Event[NetPoint.y][NetPoint.x] = CANNOT;
::SendMessage(m_Parent->m_hWnd, WM_STATIC_TO_DLG, WM_SET_STEP, 0);
m_Operation = NONE;
listdata.state = EMPTY;
}
if(lParam == N_SHIPWOUND)
{
m_GoodSteps++;
m_Event[NetPoint.y][NetPoint.x] = SHIPWOUND;
m_Operation = FIRE;
listdata.state = SHIPWOUND;
}
if(lParam == N_SHIPKILLED)
{
m_GoodSteps++;
m_Event[NetPoint.y][NetPoint.x] = SHIPWOUND;
SetShipKilled(NetPoint);
m_Operation = FIRE;
KilledShips++;
::SendMessage(m_Parent->m_hWnd, WM_STATIC_TO_DLG, WM_KILL, 0);
listdata.state = SHIPKILLED;
if(KilledShips == 10)
{
::SendMessage(m_Parent->m_hWnd, WM_STATIC_TO_DLG, WM_WIN_YOU, 0);
m_Operation = NONE;
Invalidate();
return 10;
}
}
::SendMessage(m_Parent->m_hWnd, WM_STATIC_TO_DLG, WM_SET_MOVE, (LPARAM)&listdata);
Invalidate();
break;
case
WM_FINISH:
m_Operation = NONE;
Invalidate();
break;
case
WM_PLACEMENT:
m_Operation = PLACEMENT;
m_Direction = RIGHT;
m_Decks = 4;
m_Position.x = m_Position.y = -1;
m_Draw = false;
for(i=0; i < 10; i++)
for(j=0; j < 10; j++)
m_Event[i][j] = EMPTY;
m_Count = 0;
KilledShips = 0;
m_Steps = m_GoodSteps = 0;
Invalidate();
break;
case
WM_NONE:
m_Operation = NONE;
Invalidate();
break;
case
WM_IS_PLACEMENT:
if(!m_Decks)
return 1;
else return 0;
case
WM_IS_OK:
if(!m_Decks)
{
for(i=0; i<10; i++)
for(j=0; j<10; j++)
{
if(m_Event[i][j] == CANNOT)
m_Event[i][j] = EMPTY;
if(m_Event[i][j] == SHIPKILLED || m_Event[i][j] == SHIPWOUND)
m_Event[i][j] = SHIP;
if(m_Event[i][j] == NEARKILLEDSHIP)
m_Event[i][j] = NEARSHIP;
}
KilledShips = 0;
m_Steps = m_GoodSteps = 0;
Invalidate();
return 1;
}
else return 0;
case
WM_COUNT_PLACEMENT:
m_Operation = NONE;
m_Direction = RIGHT;
m_Decks = 4;
m_Position.x = m_Position.y = -1;
m_Draw = false;
for(i=0; i<10; i++)
for(j=0; j<10; j++)
m_Event[i][j] = EMPTY;
m_Count = 0;
m_Steps = m_GoodSteps = 0;
CountPlacement();
KilledShips = 0;
Invalidate();
break;
case
WM_FIRE:
m_Operation = FIRE;
break;
case
WM_CLEARFIELD:
m_Operation = NONE;
m_Direction = RIGHT;
m_Decks = 4;
m_Position.x = m_Position.y = -1;
m_Draw = false;
for(i=0; i<10; i++)
for(j=0; j<10; j++)
m_Event[i][j] = EMPTY;
m_Count = 0;
m_Steps = m_GoodSteps = 0;
KilledShips = 0;
Invalidate();
break;
}
return 1;
}
//messages
#define WM_PLACEMENT 11000
#define WM_NONE 11001
#define WM_IS_OK 11003
#define WM_COUNT_PLACEMENT 11004
#define WM_FIRE 11005
#define WM_CLEARFIELD 11006
#define WM_FINISH 11007
#define WM_IS_PLACEMENT 11008
Назад |
Начало урока |
Вверх |
Вперед
Содержание