Глава 4
Добавим в функцию OnPaint() код, который рисует корабли в нашем поле.
Используя данные объекта Field и вызывая соответствующую функцию DrawShip().
//расставим корабли
for(i=0; i<10; i++){
for(j=0; j<10; j++)
{
count = 0;
if(m_Event[i][j] == SHIP)
{
if((m_Event[i][j+1] == SHIP) && j+1 < 10)
{
count = 1;
do
{
count++;
} while( (m_Event[i][j+count] == SHIP)&& (j+count<10) );
DrawShip(CRect(j*20, i*20, (j+count)*20, (i+1)*20), &dc);
j+=count;
continue;
}
else
{
if((m_Event[i+1][j] == SHIP)
&&((m_Event[i-1][j] != SHIP) || i-1<0)
&& i+1<10)
{
count = 1;
do
{
count++;
} while(
(m_Event[i+count][j] == SHIP)&& i+count<10);
DrawShip(CRect(j*20, i*20, (j+1)*20, (i+count)*20), &dc);
continue;
}
if(((m_Event[i+1][j] != SHIP) && i+1<10)||(i+1==10))
if(((m_Event[i-1][j] != SHIP) && i-1 >= 0) || (i-1<0))
if(((m_Event[i][j+1] != SHIP) && j+1<10) || (j+1==10))
if(((m_Event[i][j-1] != SHIP) && j-1>=0) || (j-1<0))
DrawShip(CRect(j*20, i*20, (j+1)*20, (i+1)*20), &dc);
}//else
}//if(m_Event[i][j] == SHIP)
}//for(j=0; j<10; j++)
}//for(i=0; i<10; i++)
if(m_Draw && m_Operation == PLACEMENT)
DrawShip(GetRect(), &dc);
}//if(m_Mode == OWN_FIELD)
//расставим корабли
for(i=0; i<10; i++){
ЕСЛИ (все клетки вокруг исследуемой не являются кораблем
и находятся на поле, не ближе одной клетки от любого его края)
{
if(m_Draw && m_Operation == PLACEMENT) {
Назад |
Начало урока |
Вверх |
Вперед
Содержание