Назад | Начало урока | Вперед
Содержание

Глава 5

Теперь, когда мы увидели как программа расположила корабли на поле противника,
попробуем "пострелять". Для этого напишем совсем небольшой код в функции
OnLButtonDown() ветвь if(m_Mode == FOREIGN_FIELD)


void CField::OnLButtonDown(UINT nFlags, CPoint point) {
POINT pos;
int i, j, IsKilled, sumx, razx, sumy, razy, x, y, cx, cy;

//---------------------
if(m_Mode == OWN_FIELD ) {

. . .
}
//-------------------------------
if(m_Mode == FOREIGN_FIELD) {
point.x = point.x/20;
point.y = point.y/20;

if(m_Event[point.y][point.x] == SHIP) {

int code = ::AfxMessageBox("Попал! ", MB_YESNO);
if(IDYES == code)int i = 0;
if(IDNO == code) int i = 0;
}
else if(m_Event[point.y][point.x] == NEARSHIP) {
int code = ::AfxMessageBox("Ух... Рядом! ", MB_YESNO);
if(IDYES == code)int i = 0;
if(IDNO == code) int i = 0;
}
else if(m_Event[point.y][point.x] == EMPTY) {
int code = ::AfxMessageBox("Не попал... ", MB_YESNO);
if(IDYES == code)int i = 0;
if(IDNO == code) int i = 0;
}
}
CStatic::OnLButtonDown(nFlags, point);
}

В данной версии программы, после расстановки кораблей на чужом поле (в случайном порядке)
функцией SetShip(), все клетки поля помечены либо EMPTY (пусто), либо SHIP (корабль), либо
NEARSHIP (рядом с кораблем). Именно это обстоятельство использует данная функция. Во время
клика мыши, она получает координаты курсора, преобразует их в координаты матрицы поля, и
анализирует - что здесь находится? Это может быть один из трех вышеперечисленных вариантов.
Как результат на экран выводится соответствующее сообщение.

И мы можем наглядно наблюдать этот процесс. Конечно, данная функция - это всего лишь тест
к предыдущей функции SetShip(). Настоящая функция OnLButtonDown() должна будет делать
гораздо больше работы. Но об этом в следующем уроке.

Подсказка

Компьютер расположил корабли на поле справа случайным образом. Мы расположили корабли на своем поле как захотели. Стрельнули один раз по полю противника. Получили сообщение, что - рядом с целью.


Назад | Начало урока | Вверх | Вперед
Содержание

Hosted by uCoz