Курсовая работа по основам программирования. Игра Паровоз

Курсовая работа по основам программирования. Игра Паровоз

Государственный комитет Российской Федерации

по высшему образованию

Казанский государственный технический университет

имени А.Н. Туполева

--------------------------------------------------------------

Кафедра АСОИУ

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

по основам программирования

ИГРА «Parovoz»

ИСПОЛНИТЕЛЬ: студентка группы 4221

Петрова Е.Г.

РУКОВОДИТЕЛЬ: Вафин Р.Р.

Оценка____________________________

Подпись___________________________

"____"________________________2001г.

КАЗАНЬ

2001г.

СОДЕРЖАНИЕ

1.Описание применения . 3

1.1. Запуск программы. 3

1.2. Правила игры. 3

2. Описание программы . 4

2.1. Метод решения задачи . 4

2.2. Описание используемых классов, структур и функций. 4

2.2.1. CApp - класс приложения . 4

2.2.2. CМainWnd- класс главного окна . 4

2.2.3. Карта сообщений. 5

2.3. Образ главного окна. 6

Приложение 7

Листинг файла main.cpp 7

Листинг файла main.h 12

Листинг файла menu1.h 13

Листинг файла menu1.rc 13

1.Описание применения .

1.1. Запуск программы.

Запуск программы необходимо производить , находясь в среде Windows 95

: запускаемый файл – parovoz.exe .

1.2. Правила игры.

После запуска игры, на экране появляется окно с надписью «выберите

пункт старт». Окно имеет меню, состоящее из нескольких пунктов. С помощью

пунктов меню можно: изменять цвет движущегося объекта (паровозика в

красный, синий, зелёный), начать (перезапустить), осуществить выход из

игры. После выбора пункта меню «старт», в левом нижнем углу окна появляется

паровоз, представляющий собой совокупность геометрических фигур – эллипсов

(колёса) и прямоугольников (кабина, трубы). Паровоз движется слева направо

и останавливается перед светофором, расположенным приблизительно в середине

окна над паровозом. Пользователь имеет возможность регулировать цветом

светофора нажатием клавишь ‘к’, ‘з’, ‘ж’, соответствующим цветам светофора

– красному, зеленому, жёлтому. Если паровоз подъезжает к светофору, а у

светофора активным является зелёный цвет, он продолжает своё движение. В

противном случае, паровоз останавливается. При достижении правой стенки,

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

жёлтый цвет. Из верхней части паровоза постоянно поднимаются в верхнюю

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

увеличиваются при подъёме.

2. Описание программы .

2.1. Метод решения задачи .

Программа выполнена в стиле объектно-ориентированного

программирования, использованна библиотека MFC. Сама программа -

приложение Windows. Для вывода графических объектов используются функции:

Elliplse, Rectangle. Программой обрабатываются события от таймера, нажатия

клавишь на клавиатуре, выбра соответствующих пунктов меню, а также событие

WM_PAINT для перерисовки рабочей области.

2.2. Описание используемых классов, структур и функций.

2.2.1. CApp - класс приложения .

CApp - класс приложения, порождается классом CWinApp библиотеки MFC

обеспечивает инициализацию , выполнение и завершение Windows программы :

регистрирует , создаёт и отображает основное окно приложения .

Член- функции класса CApp :

InitInstance – виртуальная функция, переопределяется в классе CApp

2.2.2. CМainWnd- класс главного окна .

CMainWnd - класс главного окна приложения , наследуется из класса

CFrameWnd библиотеки MFC .)

Член - данные класса СMainWnd :

CRect wnd; /*размер окна*/

CRect kol1,kol2,korp,kr,temp; /*прямоугольники*/

CRect svet,ball1,ball2,ball3;/*прямоугольники*/

CBrush br1[3],br2; /*кисти*/

CBrush sv[4]; /*цвета светофора*/

CRect noga; /*нога светофора*/

CRect balls[5]; /*шарики дыма*/

CRect kr2; //кабина

int numball; //номер дыма

int live[5]; //признак жизни дыма

bool game; /*признак игры или вне игры*/

int color; /*номер цвета паровоза*/

int ns; /*номер увета светофора*/

int move; /*флаг движения паровоза*

/Член - функции класса СMainWnd :

CmainWnd(); - конструктор класса окна

afx_msg void OnBegin();обработчик события на выбор пункта меню

«старт»

afx_msg void OnRed(); - обработчик события на выбор пункта меню

«Red»

afx_msg void OnGreen(); - обработчик события на выбор

пункта меню «Green»

afx_msg void OnBlue(); - обработчик события на выбор пункта

меню «Blue»

afx_msg void OnPaint(); - ф-ия перерисовки

afx_msg void OnTimer( UINT nIDEvent ); - обраб-чик таймера

afx_msg void OnExit(); - обработчик события на выбор пункта

меню «Exit»

afx_msg void OnChar( UINT nChar, UINT nRepCnt, UINT nFlags ); -

реакция на нажатие клавиши клавиатуры

DECLARE_MESSAGE_MAP() - карта сообщений

2.2.3. Карта сообщений.

BEGIN_MESSAGE_MAP(CMainWnd,CFrameWnd)

ON_COMMAND(IDM_EXIT,OnExit)

ON_COMMAND(IDM_BEGIN,OnBegin)

ON_COMMAND(IDM_RED,OnRed)

ON_COMMAND(IDM_GREEN,OnGreen)

ON_COMMAND(IDM_BLUE,OnBlue)

ON_WM_PAINT()

ON_WM_TIMER()

ON_WM_CHAR()

END_MESSAGE_MAP()

2.3. Образ главного окна.

На рисунках 1, 2 представленыосновные образы окна приложения.

Приложение

Листинг файла main.cpp

/* в этом файле находятся описания всех функций */

#include

#include "main.h"

#include "menu1.h"

CMainWnd::CMainWnd() /*конструктор гл. окна*/

{

wnd.SetRect(0,0,400,355);//устан-ка размеров окна

Create(NULL,"parovoz",WS_DLGFRAME ,wnd,NULL,"MAINMENU");

game=false; /*нет игры*/

color=0; /*нач. цвет поезда*/

ns=0; /*нач. цвет светофора*/

br1[0].CreateSolidBrush(RGB(255,0,0));//создание кистей

br1[1].CreateSolidBrush(RGB(0,255,0));

br1[2].CreateSolidBrush(RGB(0,0,255));

sv[0].CreateSolidBrush(RGB(255,0,0));//создание кистей

sv[1].CreateSolidBrush(RGB(0,255,0));//светофора

sv[2].CreateSolidBrush(RGB(255,255,0));

sv[3].CreateSolidBrush(RGB(128,128,128));

br2.CreateSolidBrush(RGB(1,1,1));/*чёрный цвет*/

for(numball=0;numballShowWindow(m_nCmdShow); /*показать окно*/

return true; /*удачное завершение*/

}

afx_msg void CMainWnd::OnPaint() /*ф-ия перерисовки*/

{

CPaintDC dc(this); /*созданиее контекста окна*/

dc.SelectObject(&br2); /*выбор кисти для светофора*/

dc.Rectangle(svet); //рисование корп. светофора

dc.Rectangle(noga); //рисование ноги

for(numball=0;numball=svet.left+3)||(move==1))

{ /*если не около светофора или зеленый цвет*/

if(korp.left

#include "menu1.h"

MAINMENU MENU DISCARDABLE

BEGIN

POPUP "GAME"

BEGIN

POPUP "COLOR"

BEGIN

MENUITEM "RED", IDM_RED

MENUITEM "GREEN", IDM_GREEN

MENUITEM "BLUE", IDM_BLUE

END

MENUITEM SEPARATOR

MENUITEM "START", IDM_BEGIN

MENUITEM "EXIT", IDM_EXIT

END

END

-----------------------

Рис. 1. Главное окно после выбора пункта «старт»

Рис. 2. Главное окно до выбора пункта «старт»