class CBuffer
{
private:
HDC hDC;
HBITMAP hBitmap;
public:
POINT Size;
CBuffer(HDC hParentDC, int XSize,
int Size);
~CBuffer();
void Clear();
HDC GetDC();
};
class CView
{
public:
…
CBuffer *Self;
CView(HWND hWnd);
void Pause();
void Win(HWND hWnd);
void Lose(HWND hWnd);
void Resume();
void Refresh(HWND hWnd);
void Resize(HWND hWnd);
void DrawTo(HDC hDC);
~CView();
};
3 РАЗРАБОТКА ПРОГРАММЫ
При разработке программы, часто повторяющие блоки операторов для уменьшения размера программы и увеличения быстродействия помещают в функции. В данной программе (не считая функции-методы описанных выше классов) было разработано несколько функций для обеспечения взаимодействия пользователя с этими классами. Рассмотрим каждую из них подробней.
double PolarToY(double dy, double radius,
double angle);
используются для получения координат в декартовой системе, из следующих данных: смещение центра полярных координат относительно центра в декартовой системе, и собственно координат в полярной системе (радиуса, и угла). Использование данных функций продиктовано условием частого размещения объектов относительно друг друга на определенном расстоянии в определенном направлении, в частности каждого из сегментов тела змеи.
· VOID CALLBACK Move(HWND hwnd, UINT message, UINT idTimer,
DWORD dwTime);
вызывается по таймеру и отвечает за обновление изображения на экране и за перерисовку объектов при их изменении если это необходимо.
· LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
является оконной процедурой главного окна. Оконная процедура – это функция, которая вызывается каждый раз, когда в очередь сообщений программы приходить сообщение. В оконной процедуре обязательно должны обрабатываться как минимум три сообщения: WM_CREATE, WM_PAINT и WM_DESTROY. Но кроме этих трёх, в ней могут обрабатываться и другие. Например, в данном проекте ещё обрабатывается и сообщение WM_COMMAND, приходящее при в частности при нажатии кнопок на главном окне. С помощью данного сообщения мы осуществляем функционирование меню. При обработке сообщения WM_CREATE, мы создаем и инициализируем классы объектов, создаем меню, используя для этого обычные кнопки, а также стартуем таймер, который будет отвечать за обновление игровой ситуации посредством функции SetTimer. В сообщении WM_PAINT мы вызываем метод DrawTo класса View, с указанием контекста главного окна как цель, куда необходимо выводить полученное в результате обработки изображение. При сообщении WM_DESTROY мы освобождаем всю выделенную ранее память. При сообщении WM_KEYDOWN мы обрабатываем нажатия пробела и клавиши Enter, в первом случае мы ставим игру на паузу, а во втором иммитируем съедание змеей яблока, реализуя так называемый чит.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.