Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив1 / docx55 / Курсовик (2).docx
Скачиваний:
30
Добавлен:
01.08.2013
Размер:
119.32 Кб
Скачать

Минобрнауки России

Санкт-Петербургский государственный политехнический университет

Институт информационных технологий и управления

Кафедра «Информационных и управляющих систем»

КУРСОВАЯ РАБОТА

Программирование на VS C++ с использованием WinAPI и STL

-Текстовый квест-

по дисциплине «Программирование на ЯВУ»

Выполнил

студент гр.2084/4 <подпись> А.С.Поддувалкин

Руководитель

доцент, к.т.н. <подпись> С.К.Круглов

«___» __________ 201__ г.

Санкт-Петербург

2012

Оглавление

  1. Введение

  2. Инструкция пользователя

  3. Инструкция программиста

  4. Код программы

  5. Заключение

  6. Список используемой литературы

Введение

Данный проект представляет собой программу, написанную на Visual Studio C++, с использованием WinAPI и STL(Standart Template Library). Программирование приложений под Windows, с использованием этих ресурсов помогает сильно сократить код программы, а также использовать уже готовые классы и шаблоны, что делает процесс написания приложения проще.

Программа, основанная на диалоговых окнах WinAPI, легко реализует графическую составляющую проекта, когда шаблоны и методы (алгоритмы) STL помогают упростить аналитическую часть программы.

В данном текстовом квесте, будут реализованы следующие составляющие:

  1. Графическая составляющая, основанная на диалоговых окнах WinAPI, представляющих собой структуру классов, связанных между собой.

  2. Аналитическая составляющая реализована с помощью STL. В частности, на шаблонах, которые там представлены.

Сам проект представляет из себя сюжетную историю, включающую в себя развитие событий, зависящее от действий игрока.

Я выбрал этот проект, потому что это – интересный опыт в программировании, а также перспективная задумка, которую можно дополнять и расширять, сделав полноценную игру, в которую можно будет играть, фактически, на любом компьютере и любой Операционной Системе, поддерживающей windows приложения или имеющая эмулятор (например, wine).

Инструкция пользователя

В данной главе я рассмотрю основополагающие принципы проекта, интересные пользователю:

  1. Приложение представляет собой альтернативно-фантастический текстовый квест, включающий в себя сюжет и различные концовки, зависящие от действий играющего.

  2. Проект содержит 9 финалов, лишь один из которых является правильным. Каждое окончание игры зависит от действий игрока и правильность прохождения им испытаний.

  3. Испытания в квесте представлены в виде трёх тестов, которые будут определять различные характеристики, выведенные в конце вам в процентном виде.

Функционал программы:

  1. Внимательно читайте то, что написано на экране. В диалоговом окне теста не забывайте, что сначала следует нажимать «Далее», а потом «Следующий вопрос». Ошибочное нажатие результата не принесёт.

  2. Игра не содержит кнопки выхода, потому выход из приложения осуществляется посредством закрытия главного окна.

  3. Игра не содержит функций обнуления, т.е., чтобы пройти квест во второй раз, вам придётся перезапустить приложение

  4. В игре не предусмотрена функция обратного действия, т.е. вы не можете изменить выбор, который уже сделали (ведь в жизни так нельзя), потому тщательно обдумывайте свой выбор.

  5. Программа не реализует сохранение данных, потому нет статистики прохождений.

Инструкция программиста

В данном разделе я рассмотрю основные составляющие проекты и использованные элементы:

  1. WinAPI:

  1. Графическая часть, реализованная на WinAPI включает в себя четыре диалоговых окна и, соответственно, четыре класса. Их структура представлена ниже:

Рассмотрим каждый класс в отдельности:

  1. CCursDlg:

h_dlg – переменная, указывающая на класс CHistoryDlg

OnBnClicketButton2 – метод, обрабатывающий нажатие на кнопку.

InitVector – метод, служащий для инициализации массива. В этой версии не используется.

  1. CHistoryDlg:

c_dlg1 – переменная, связанная с классом CChoiseDlg

t_dlg1 – переменная, связанная с классом CTestDlg

m_History – переменная, связанная с окном вывода сообщений

m_wind – переменная, служившая для выбора между вызовом окна выбора и окна тестом. В этой версии не используется.

fetch1\2\3 – методы, анализирующие выборы, которые делает игрок и подводящие итог. Каждый из этих методов начинает свою работу после первого выбора и до последнего.

InitVector – Процедура инициализации вектора, содержащего в себе стандартные концовки, результаты, переведённый из float в CString, а также все выборы, присутствующие в игре.

OnBnClickedButton1 – Процедура обработки нажатия на кнопку

  1. CChoiseDlg

b_choise – в данной версии не используется

c_key – переменная, определяющая сделанный выбор (1, 2 или 3)

m_choise – переменная, которая выводит текст в Edit Box

OnBnClickedButton – процедура, обрабатывающая нажатие на кнопку

OnBnClickedRadioButton – процедуры, обрабатывающие выбор определённой RadioButton

  1. CTestDlg

k_test – переменная, ответственная за номер теста, который проходится в данный момент, а также за окончание теста и прохождение всех тестов.

m_evil\good\intl\psycho – переменные, ответственные за результаты тестов, позже заменены на структуру данных и в данной версии не используются.

t_ch – переменная, ответственная за сделанный выбор на данном вопросе

t_key – в данной версии не используется

Testing – структура данных

Все переменные типа int. Служит для анализа результатов тестов.

Execute1\2\3 – процедуры прохождения тестов

InitVector – процедура, инициализирующая вектор, содержащий все тесты

OnBnClickedButton1\2 – процедуры, ответственные за обработку нажатия клавиш «Далее» и «Следующий вопрос»

OnBnClickedRadioButton – обработка выбора.

  1. Из STL использованы следующий шаблоны:

list – список используется для сохранения двух результатов: от выборов и от тестов. Введён для простого введения обнуления и бесконечного числа прохождений, не перезагружая приложение

vector – в нескольких векторах хранятся почти все текстовые данные, результаты в числах с плавающей запятой

list::iterator – итераторы для списка.

Более подробно в следующем разделе

Соседние файлы в папке docx55