Автор: Пользователь скрыл имя, 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
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;
}
Прорисовка
картинок с цифрами в необходимом нам
месте, которое задается парой координат
(х, у), осуществляется при помощи функции
DrawImage(HDC hdc, HBITMAP hBitmap, int x, int y).
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;
}
4.3
Входные данные
Входными данными для данной программы является ввод при помощи курсора направления перехода:
4.4
Выходные данные
Выходными данными является отображение на экране главного меню и игрового поля с комбинацией цифр, а также отображение выбранного пользователем одного из разделов «Помощь», «Правила игры», «О программе».
4.5
Логика программы
Запуск данной программы производится при двойном нажатии на файл Project1.exe. После запуска данного файла на экране появится главная форма, изображенная на рисунке 1 пункта 4.1. На главной форме отображается игровое поле, на котором размещены 15 клеток с цифрами от 1 до 15 и одна пустая клетка. Пользователь должен передвигать клетки с цифрами так, чтобы расставить их в возрастающем порядке.
5
Тестирование и отладка
Функциональное тестирование проводится с целью проверки каждой операции, которую выполняет приложение; правильного выполнения всех функций, которые были предусмотрены в процессе разработки, объектно-ориентированного анализа и проектирования системы.
Этап тестирования и отладки является важным шагом на пути создания программных средств. Для тестирования будем использовать наиболее популярную операционную систему Windows XP.
Для функционального тестирования данной программы протестируем функцию управления при перемещении клеток с цифрами и вызов справочной информации.
Тест №1. Проверка перемещения клеток по игровому полю.
Что бы переместить клетку с цифрой вверх необходимо на клавиатуре нажать клавишу «вверх». При передвижении клетки вниз должна быть нажата клавиша «вниз». Аналогичным образом производится перемещение клетки вправо и влево. Данная функция работает исправно.
После того, как все клетки поставлены в возрастающем порядке, на игровом поле появляется сообщение о победе пользователя.
Тест № 2. Проверка работоспособности меню программы.
Для проверки работоспособности меню программы произведем вызов справки о программе и закрытие программы.
Для вызова справки необходимо левой кнопкой мыши выбрать пункт меню «Помощь». Появится выпадающий список, из которого, при выборе пункта «О программе» появляется окно со справочной информацией о программном продукте. Данная функция работает исправно.
Для
закрытия программы выберем пункт
меню «Файл». И в появившемся выпадающем
списке выберем пункт «Выход». программа
будет закрыта. Меню работает исправно.
Заключение
В
рамках курсового проектирования было
разработано программное
В процессе разработки программного приложения был создан простой и интуитивно понятный в использовании интерфейс.
Программное средство имеет ряд достоинств:
Программа реализована в полном объеме и в соответствии со всеми заданными требованиями и нормами. Полностью отлажена и протестирована. Все поставленные задачи выполнены.
Для данной программы в будущем возможно дальнейшее функциональное усовершенствование, а так же улучшение интерфейса.
Разработанное программное приложение было протестировано на конкретном примере и показало, что все разработанные функции работают корректно и без ошибок.
Программа готова к практическому использованию.
Список
литературы
1. Пахомов Б. C/C++ и MS Visual C++ 2008 для начинающих. - Тетра-Системс, 2009
2.
Пауэрс Л., Снелл М. Visual Studio 2008. В подлиннике.
-
БХВ-Петербург, 2009.
3. Юрий Щупак. Win32 API. Эффективная разработка приложений. Питер, 2007
4.
Стэнли Б. Липпман. C++ для начинающих. Вводный
курс. 3-е изд., 2008
Приложение
A
Диаграммы
Рисунок А 1 – Алгоритм программы
Рисунок А 2 – Диаграмма деятельности
Приложение
Б
Текст
программы
#include "stdafx.h"
#include "resource.h"
#include "fifteen.h"
#include <ctime>
HINSTANCE hInst;
// Текст заголовка
TCHAR szTitle[MAX_LOADSTRING];
TCHAR szWindowClass[MAX_LOADSTRING];
//объявление функций включенных в код модуля
int iHeroRow, iHeroCol ;
int GameField[4][4] =
{
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15,1}
};
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
MSG msg;
HACCEL
hAccelTable;
// Инициализация глобальных переменных
LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
LoadString(hInstance, IDC_MY01112008_2, szWindowClass, MAX_LOADSTRING);
MyRegisterClass(
// Инициализация приложения
if (!InitInstance (hInstance, nCmdShow))
{
return FALSE;
}
hAccelTable
= LoadAccelerators(hInstance, (LPCTSTR)IDC_MY01112008_2);
// Главный цикл обработки сообщений
while (GetMessage(&msg, NULL, 0, 0))
{
if
(!TranslateAccelerator(msg.
{
TranslateMes
DispatchMess
}
}
return msg.wParam;
}
// Функция: MyRegisterClass()
// Назанчение: Регистрирует класс окна.
// Эта функция
и ее использование необходимо для совместимости
с системами Win32
ATOM MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASSEX
wcex;
wcex.cbSize
= sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = (WNDPROC)WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_MY01112008_2);
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName = (LPCSTR)IDC_MY01112008_2;
wcex.lpszClassName = szWindowClass;
wcex.hIconSm =
LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL);