Курсовая работа: Разработка игры "Крестики-нолики"

}

}}

Для отображения игры на экране используется система координат с единицей измерения, равной 0,01 дюйм. Точка (0,0) - начало координат - находится в верхнем левом углу окна; ось X направлена вправо, ось Y - вверх. Именно по этой причине Y-координаты клеток, назначаемые конструктором, имеют отрицательные значения, а не положительные. Если бы были указаны положительные значения Y, клетки оказались бы за пределами видимой части окна.

Прорисовка игрового поля осуществляется в методе OnDraw. Когда Windows-программа производит вывод на экран, принтер или любое другое устройство вывода, она это делает с использованием так называемого контекста устройства (device context - DC) - некоторой структуры данных, содержащей важные сведения о характеристиках конкретного выводного устройства и о параметрах, применяемых для вывода в данной программе. Поскольку спецификация Graphics Device Interface (интерфейс графических устройств - GDI) системы Windows позволяет получить аппаратно-независимую модель вывода, одна и та же функция будет работать с любым выводным устройством, для которого имеется соответствующий Windows-драйвер.

Вызов функции CDC::SetMapMode присваивает схеме соответствия для контекста устройства значение MM_LOENGLISH, предписывающее, что единицей измерения служит 0,01 дюйм (имеется в виду логический дюйм). Размер логического дюйма определяется некоторым принятым количеством пикселов, необходимым дл отображения реального дюйма на конкретном выводном устройстве. Например, при выводе на принтер один логический дюйм равняется одному физическому (реальному). При выводе на экран размер логического дюйма, как правило, колеблется от 1 до 1,5 физических.

Вложенный цикл for сначала перерисовывает квадраты, а затем, если от функций CXvsOv1Doc::GetSquare получено ненулевое значение, обращается к функции DrawX или DrawO (о функциях класса Doc и функциях DrawX или DrawO будет сказано позднее). Итак, метод OnDraw выглядит следующим образом (функция GetSquare, речь о которой пойдет ниже, осуществляет здесь повторную прорисовку окна после сворачивания):

void CXvsOv1View::OnDraw(CDC* pDC)

{

CXvsOv1Doc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

//

// Задать режим отображения MM_LOENGLISH,

// в котором за единицу измерения толщины принимается 0,01 дюйма:

//

pDC->SetMapMode (MM_LOENGLISH);

//

// Прорисовать игровое поле:

//

for (int i=0; i<5; i++){

for (int j=0; j<5; j++){

//цикл сначала перерисовывает квадраты, а затем, если от функций

//CXvsOv1Doc::GetSquare получено ненулевое значение, обращается к функции DrawX или DrawO

pDC->Rectangle (m_rect [i][j]);

BYTE bVal = pDoc->GetSquare (i,j);

if (bVal == 1) // Проставить Х

DrawX (pDC, &m_rect[i][j]);

else if (bVal == 2) // Проставить О

Draw0 (pDC, &m_rect[i][j]);

}

К-во Просмотров: 670
Бесплатно скачать Курсовая работа: Разработка игры "Крестики-нолики"