Реферат по предмету "Компьютеры и цифровые устройства"


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

Государственный комитет Российской Федерациипо высшему образованиюКазанский государственный технический университетимени А.Н. Туполева Кафедра АСОИУКУРСОВАЯ РАБОТАпо основам программированияИГРА Parovoz ИСПОЛНИТЕЛЬ студентка группы 4221Петрова Е.Г.РУКОВОДИТЕЛЬ Вафин Р.Р.Оценка Подпись 2001г.КАЗАНЬ2001г.СОДЕРЖАНИЕ1.Описание применения . 1. Запуск программы.

2. Правила игры. 32. Описание программы . 1. Метод решения задачи . 2. Описание используемых классов, структур и функций. 1. CApp - класс приложения . 2. CМainWnd- класс главного окна . 3. Карта сообщений. 3. Образ главного окна. 6Приложение 7Листинг файла main.cpp 7Листинг файла main.h 12Листинг файла menu1.h 13Листинг файла menu1.rc 131.Описание

применения . 1. Запуск программы. Запуск программы необходимо производить , находясь всреде Windows 95 запускаемый файл parovoz.exe . 2. После запуска игры, на экране появляется окно снадписью выберите пункт старт . Окно имеет меню, состоящее из несколькихпунктов. С помощью пунктов меню можно изменять цвет движущегося объекта паровозика в красный, синий, зел ный , начать перезапустить , осуществитьвыход из игры.

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

Если паровоз подъезжает к светофору, а у светофора активнымявляется зел ный цвет, он продолжает сво движение. В противном случае, паровозостанавливается. При достижении правой стенки, паровоз появляется у левойстенки, а активным цветом светофора становится ж лтый цвет. Из верхней частипаровоза постоянно поднимаются в верхнюю часть окна окружности, представляющиесобой клубни дыма, которые увеличиваются при подъ ме. 2.

Описание программы . 1. Метод решения задачи . Программа выполнена в стиле объектно-ориентированногопрограммировани я, использованна библиотека MFC. Сама программа - приложение Windows. Для вывода графических объектов используютсяфункции Elliplse, Rectangle. Программой обрабатываются события от таймера,нажатия клавишь на клавиатуре, выбра соответствующих пунктов меню, а такжесобытие WM PAINT дляперерисовки рабочей области.

2. Описание используемыхклассов, структур и функций. 1. CApp - класс приложения . CApp - класс приложения, порождается классом CWinAppбиблиотеки MFC обеспечивает инициализацию , выполнение изавершение Windows программы регистрирует ,созда т и отображает основное окно приложения .Член-функции класса CApp InitInstance виртуальная функция, переопределяется в классе

CApp 2. CМainWnd- класс главного окна . CMainWnd - класс главного окна приложения , наследуетсяиз класса CFrameWnd библиотеки MFC . Член- данные класса СMainWnd CRectwnd размер окна CRectkol1,kol2,korp,kr,temp прямоугольники CRectsvet,ball1,ball2,ball3 прямоугольники CBrush br1 3 ,br2 кисти CBrushsv 4 цветасветофора CRect noga нога светофора

CRect balls 5 шарики дыма CRect kr2 кабина int numball номер дыма intlive 5 признакжизни дыма bool game признак игры или вне игры int color номер цвета паровоза int ns номер увета светофора int move флаг движения паровоза Член- функции класса СMainWnd CmainWnd - конструктор класса окна afx msg void OnBegin обработчиксобытия на выбор пункта меню старт afx msgvoid OnRed - обработчик события на выбор пункта меню Red afx msg void

OnGreen - обработчиксобытия на выбор пункта меню Green afx msg void OnBlue - обработчиксобытия на выбор пункта меню Blue afx msg void OnPaint - ф-ия перерисовки afx msg void OnTimer UINT nIDEvent - обраб-чик таймера afx msg voidOnExit - обработчик события на выбор пункта меню Exit afx msg void OnChar UINT nChar, UINT nRepCnt, UINTnFlags - реакция на нажатие клавиши клавиатуры

DECLARE MESSAGE MAP - карта сообщений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 3. Образглавного окна. На рисунках 1, 2 представленыосновные образы окна приложения. Рис. 1. Главное окно после выбора пункта старт Рис. 2. Главное окно до выбора пункта старт Приложение Листинг файла main.cpp в этом файле находятсяописания всех функций include lt afxwin.h gt 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 numball lt 5 numball обнуление признаковжизни дыма live numball 0 CmdShow показать окно return true удачное завершение afx msg void

CMainWnd OnPaint ф-ияперерисовки CPaintDC dc this созданиее контекста окна dc.SelectObject amp br2 выбор кисти для светофора dc.Rectangle svet рисование корп. светофора dc.Rectangle noga рисование ноги for numball 0 numball lt 5 numball рисование дыма if live numball 1 еслидым активен dc.Ellipse balls numball switch ns переключение между цветамисветофора case 0 если красный dc.SelectObject sv 0 dc.Ellipse ball1 dc.SelectObject sv 3 dc.

Ellipse ball2 dc.Ellipse ball3 break case 1 если ж лтый dc.SelectObject sv 2 dc.Ellipse ball2 dc.SelectObject sv 3 dc.Ellipse ball1 dc.Ellipse ball3 break case2 еесли зеленый dc.SelectObject sv 1 dc.Ellipse ball3 dc.SelectObject sv 3 dc.Ellipse ball1 dc.Ellipse ball2 break dc.SelectObject br1 color рисование паровоза dc.

Rectangle korp корпус dc.SelectObject amp br2 dc.Rectangle kr труба dc.Rectangle kr2 кабина dc.Ellipse kol1 колеса dc.Ellipse kol2 char s выберетеменю старт. начальная надпись if game 0 dc.TextOut 50,100,s,strlen s void CMainWnd OnExit реакцияна выход SendMessage WM CLOSE послать сообщение о закрытии окна afx msg void CMainWnd OnTimer UINT nIDEvent обработчик таймера if game если находимся в игре if nIDEvent 2 запускдыма

for numball 0 numball lt 5 numball еслидым не активен, активизировать if live numball 0 live numball 1 balls numball .SetRect korp.left 35,kr.top-10,kr.right-5,korp.top break for numball 0 numball lt 5 numball сохранитьпредыдущ. положение дыма temp.CopyRect balls numball if live numball 1 еслидым активен balls numball .OffsetRect 1 6 сместитьдым balls numball .top изменить размеры balls numball .right InvalidateRect temp перерисовать InvalidateRect balls numball if balls numball .top lt 0 live numball 0

убить if korp.right lt svet.left korp.left gt svet.left 3 move 1 если не около светофора или зеленыйцвет if korp.left lt 400 еслине стена temp.CopyRect korp сохранить предыдущие координаты сместитьвсю машину korp.OffsetRect 3,0 InvalidateRect temp InvalidateRect korp temp.CopyRect kol1 kol1.OffsetRect 3,0 InvalidateRect temp InvalidateRect kol1 temp.CopyRect kol2 kol2.OffsetRect 3,0

InvalidateRect temp InvalidateRect kol2 temp.CopyRect kr kr.OffsetRect 3,0 InvalidateRect temp InvalidateRect kr temp.CopyRect kr2 if kr2.top 270 kr2.top 275 elsekr2.top 270 kr2.OffsetRect 3,0 InvalidateRect temp InvalidateRect kr2 else возвратв левую стенку korp.SetRect 0,288,50,300 kr.SetRect 30,280,40,288 kr2.SetRect 10,270,25,288 kol1.SetRect 5,295,15,305 kol2.SetRect 35,295,45,305

ns 1 move 0 InvalidateRect ball1 InvalidateRect ball2 InvalidateRect ball3 afx msg void CMainWnd OnRed реакция на выбор красного цвета color 0 afx msg void CMainWnd OnGreen выбор зеленого цвета color 1 afx msg void CMainWnd OnBlue color 2 afx msg void CMainWnd OnBegin game true color 0 move 0 svet.SetRect 200,100,240,230 noga.SetRect 210,230,230,250 ball1.SetRect 210,110,230,140 ball2.SetRect 210,150,230,180

ball3.SetRect 210,190,230,220 korp.SetRect 0,288,50,300 kr.SetRect 30,280,40,288 kr2.SetRect 10,270,25,288 kol1.SetRect 5,295,15,305 kol2.SetRect 35,295,45,305 SetTimer 1,100,NULL SetTimer 2,1000,NULL InvalidateRect NULL 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 afx msg void CMainWnd OnChar UINT nChar, UINT nRepCnt, UINT nFlags if game switch nChar case234 ns 0 break case231 ns 2 move 1 break case230 ns 1 InvalidateRect ball1 InvalidateRect ball2 InvalidateRect ball3

CApp app Листинг файлаmain.h class CMainWnd public CFrameWnd классокна public CRect wnd размер окна CRectkol1,kol2,korp,kr,temp прямоугольники CRectsvet,ball1,ball2,ball3 прямоугольники CBrushbr1 3 ,br2 кисти CBrushsv 4 цветасветофора CRect noga нога светофора CRectballs 5 шарики дыма CRect kr2 кабина intnumball номер дыма intlive 5 признакжизни дыма bool game

признак игры или вне игры int color номер цвета паровоза int ns номер увета светофора int move флаг движения паровоза CMainWnd конструктор главного. окна afx msgvoid OnRed пунуты меню цвета afx msgvoid OnGreen afx msgvoid OnBlue afx msgvoid OnPaint ф-ия перерисовки afx msgvoid OnTimer UINT nIDEvent обраб-чик таймера afx msgvoid

OnExit выход afx msgvoid OnBegin перестартовать afx msgvoid OnChar UINT nChar, UINT nRepCnt, UINT nFlags DECLARE MESSAGE MAP картасообщений class CApp public CWinApp public BOOLInitInstance Листинг файлаmenu1.h define IDM BEGIN 100 define IDM RED 101 define IDM GREEN 102 define IDM BLUE 103 define

IDM EXIT 104 Листинг файлаmenu1.rc include lt afxres.h gt include menu1.h MAINMENUMENU 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

ENDEND



Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.