Автор: Пользователь скрыл имя, 13 Декабря 2011 в 17:27, курсовая работа
Цель проекта заключается в том, чтобы создать программу, при помощи которой пользователь сможет проверить свои логические способности, попробовав решить одну из древнейших головоломок «Пятнашки».
Программа должна быть совместима с операционной системой Windows XP, Windows Vista и Windows 7, а так же при разработке программы необходимо использовать функции Win API.
Введение...................................................................................................................3
1 Анализ задачи 6
1.1 Цель разработки и функциональное назначение программного продукта 6
1.2 Анализ существующих аналогов продукта 7
2 Требования к программе 8
2.1 Системные требования 8
3 Инструментальные средства для создания программного продукта 10
3.1 Вычислительная система 10
3.2 Среда разработки 13
4 Проектирование 16
4.1 Концептуальный прототип 16
4.2 Описание модулей 18
4.3 Входные данные 20
4.4 Выходные данные 20
4.5 Логика программы 21
5 Тестирование и отладка 22
Заключение 23
Список литературы 24
return RegisterClassEx(&wcex);
}
// Функция: InitInstance(HANDLE, int)
// Назначение: Сохраняет
дескриптор экземпляра и создает главное
окно. В этой функции мы сохраняем дескриптор
экземпляра в глобальной переменной и
создаем главное окно.
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
HWND hWnd;
hInst = hInstance; // Сохраним дескриптор экземпляра в нашей глобальной переменной
hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
512, 240, 305, 345, NULL, NULL, hInstance, NULL);
NewField(Moves);
if (!hWnd)
{
return FALSE;
}
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}
//прорисовываем:
int OnPaint (HWND hWnd)
{
HDC hdc;
PAINTSTRUCT ps;
int iStartX=50, iStartY=50,
iSizeX=25, iSizeY=35,
iSizeFld=5,
iRow,
iCol;
RECT rt;
hdc
= BeginPaint(hWnd, &ps);
MoveToEx(hdc, 0, 3*Size-1, (LPPOINT) NULL);
LineTo(hdc, 4*Size, 3*Size-1);
MoveToEx(hdc, 0, 2*Size-1, (LPPOINT) NULL);
LineTo(hdc, 4*Size, 2*Size-1);
MoveToEx(hdc, 0, Size-1, (LPPOINT) NULL);
LineTo(hdc,
4*Size, Size-1);
MoveToEx(hdc, Size-1,0, (LPPOINT) NULL);
LineTo(hdc, Size-1,4*Size);
MoveToEx(hdc, 2*Size-1,0, (LPPOINT) NULL);
LineTo(hdc, 2*Size-1,4*Size);
MoveToEx(hdc, 3*Size-1,0, (LPPOINT) NULL);
LineTo(hdc,
3*Size-1,4*Size);
for(iRow=0;iRow<Side;
for(iCol=0;iCol<
{
rt.left=
rt.top=iRow*
switch(
{
case 0: DrawImage(hdc, hBitmapNum0,rt.left,rt.top);
break;
case 1: DrawImage(hdc, hBitmapNum1,rt.left,rt.top);
break;
case 2: DrawImage(hdc, hBitmapNum2,rt.left,rt.top);
break;
case 3: DrawImage(hdc, hBitmapNum3,rt.left,rt.top);
break;
case 4: DrawImage(hdc, hBitmapNum4,rt.left,rt.top);
break;
case 5: DrawImage(hdc, hBitmapNum5,rt.left,rt.top);
break;
case 6: DrawImage(hdc, hBitmapNum6,rt.left,rt.top);
break;
case 7: DrawImage(hdc, hBitmapNum7,rt.left,rt.top);
break;
case 8: DrawImage(hdc, hBitmapNum8,rt.left,rt.top);
break;
case 9: DrawImage(hdc, hBitmapNum9,rt.left,rt.top);
break;
case 10: DrawImage(hdc, hBitmapNum10,rt.left,rt.top);
break;
case 11: DrawImage(hdc, hBitmapNum11,rt.left,rt.top);
break;
case 12: DrawImage(hdc, hBitmapNum12,rt.left,rt.top);
break;
case 13: DrawImage(hdc, hBitmapNum13,rt.left,rt.top);
break;
case 14: DrawImage(hdc, hBitmapNum14,rt.left,rt.top);
break;
case 15: DrawImage(hdc, hBitmapNum15,rt.left,rt.top);
break;
default :DrawImage(hdc, hBitmapNum0,rt.left,rt.top);
break;
}
}
EndPaint(hWnd, &ps);
return 0;
}
// Рисуем картинки
int DrawImage(HDC hdc, HBITMAP hBitmap, int x, int y)
{
BITMAP bm;
HDC hdcMem=CreateCompatibleDC (hdc);
HBITMAP hbmOld=(HBITMAP) SelectObject (hdcMem, (HBITMAP)hBitmap);
GetObject (hBitmap, sizeof(bm), &bm);
BitBlt
(hdc,x,y,bm.bmWidth,bm.
SelectObject (hdcMem, hbmOld);
DeleteDC(hdcMem);
return 0;
}
// Функция: WndProc(HWND, unsigned, WORD, LONG)
// Назначение: Обрабатываем сообщения для главного окна.
// WM_COMMAND - команды меню приложения
// WM_PAINT - прорисовка главного окна
// WM_DESTROY -
выход из программы
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
Congr(hWnd);
switch (message)
{
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// Выбор пункта меню:
switch (wmId)
{
case IDM_ABOUT:
DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
defaul
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_PAINT:
switch (wParam)
{
case 1:
{
}
case 0:
default:
{
}
}
break;
case WM_KEYDOWN:
{
switch
{
case 38://Up
if (iHeroRow != 0)
{
GameFi
GameFi
iHeroR
}
break;
case 40://Down
if (iHeroRow < 3)
{
GameFi
GameFi
iHeroR
}
break;
case 37://Left
if (iHeroCol != 0)
{
GameFi
GameFi
iHeroC
}