Банк рефератов содержит более 364 тысяч рефератов, курсовых и дипломных работ, шпаргалок и докладов по различным дисциплинам: истории, психологии, экономике, менеджменту, философии, праву, экологии. А также изложения, сочинения по литературе, отчеты по практике, топики по английскому.
Полнотекстовый поиск
Всего работ:
364150
Теги названий
Разделы
Авиация и космонавтика (304)
Административное право (123)
Арбитражный процесс (23)
Архитектура (113)
Астрология (4)
Астрономия (4814)
Банковское дело (5227)
Безопасность жизнедеятельности (2616)
Биографии (3423)
Биология (4214)
Биология и химия (1518)
Биржевое дело (68)
Ботаника и сельское хоз-во (2836)
Бухгалтерский учет и аудит (8269)
Валютные отношения (50)
Ветеринария (50)
Военная кафедра (762)
ГДЗ (2)
География (5275)
Геодезия (30)
Геология (1222)
Геополитика (43)
Государство и право (20403)
Гражданское право и процесс (465)
Делопроизводство (19)
Деньги и кредит (108)
ЕГЭ (173)
Естествознание (96)
Журналистика (899)
ЗНО (54)
Зоология (34)
Издательское дело и полиграфия (476)
Инвестиции (106)
Иностранный язык (62792)
Информатика (3562)
Информатика, программирование (6444)
Исторические личности (2165)
История (21320)
История техники (766)
Кибернетика (64)
Коммуникации и связь (3145)
Компьютерные науки (60)
Косметология (17)
Краеведение и этнография (588)
Краткое содержание произведений (1000)
Криминалистика (106)
Криминология (48)
Криптология (3)
Кулинария (1167)
Культура и искусство (8485)
Культурология (537)
Литература : зарубежная (2044)
Литература и русский язык (11657)
Логика (532)
Логистика (21)
Маркетинг (7985)
Математика (3721)
Медицина, здоровье (10549)
Медицинские науки (88)
Международное публичное право (58)
Международное частное право (36)
Международные отношения (2257)
Менеджмент (12491)
Металлургия (91)
Москвоведение (797)
Музыка (1338)
Муниципальное право (24)
Налоги, налогообложение (214)
Наука и техника (1141)
Начертательная геометрия (3)
Оккультизм и уфология (8)
Остальные рефераты (21697)
Педагогика (7850)
Политология (3801)
Право (682)
Право, юриспруденция (2881)
Предпринимательство (475)
Прикладные науки (1)
Промышленность, производство (7100)
Психология (8694)
психология, педагогика (4121)
Радиоэлектроника (443)
Реклама (952)
Религия и мифология (2967)
Риторика (23)
Сексология (748)
Социология (4876)
Статистика (95)
Страхование (107)
Строительные науки (7)
Строительство (2004)
Схемотехника (15)
Таможенная система (663)
Теория государства и права (240)
Теория организации (39)
Теплотехника (25)
Технология (624)
Товароведение (16)
Транспорт (2652)
Трудовое право (136)
Туризм (90)
Уголовное право и процесс (406)
Управление (95)
Управленческие науки (24)
Физика (3463)
Физкультура и спорт (4482)
Философия (7216)
Финансовые науки (4592)
Финансы (5386)
Фотография (3)
Химия (2244)
Хозяйственное право (23)
Цифровые устройства (29)
Экологическое право (35)
Экология (4517)
Экономика (20645)
Экономико-математическое моделирование (666)
Экономическая география (119)
Экономическая теория (2573)
Этика (889)
Юриспруденция (288)
Языковедение (148)
Языкознание, филология (1140)

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

Название: Курсовая работа по основам программирования. Игра Паровоз
Раздел: Рефераты по информатике, программированию
Тип: реферат Добавлен 04:41:08 08 июля 2005 Похожие работы
Просмотров: 251 Комментариев: 2 Оценило: 0 человек Средний балл: 0 Оценка: неизвестно     Скачать

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

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

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

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

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

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

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

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

ИГРА «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 представленыосновные образы окна приложения.

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

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



Приложение

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

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

#include <afxwin.h>

#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<5;numball++)

{//обнуление признаков жизни дыма

live[numball]=0;

}

}

BOOL CApp:: InitInstance()/*ф-ия инициализации окна*/

{

m_pMainWnd=new CMainWnd; /*созд объекта окна*/

m_pMainWnd->ShowWindow(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<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;

}

case 2:/*еесли зеленый*/

{

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(&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<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<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<=0) live[numball]=0;//убить

}

}

if( (korp.right<=svet.left)||(korp.left>=svet.left+3)||(move==1))

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

if(korp.left<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;

}

else kr2.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)

{

case 234:

{

ns=0;

break;

}

case 231:

{ns=2;

move=1;

break;

}

case 230:

{ns=1;

}

}

InvalidateRect(ball1);

InvalidateRect(ball2);

InvalidateRect(ball3);

}

}

CApp app;

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

class CMainWnd: public CFrameWnd /*класс окна*/

{

public:

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; /*флаг движения паровоза*/

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

afx_msg void OnRed(); /*пунуты меню цвета*/

afx_msg void OnGreen();

afx_msg void OnBlue();

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

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

afx_msg void OnExit();//выход

afx_msg void OnBegin();//перестартовать

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

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

};

class CApp: public CWinApp

{

public:

BOOL InitInstance();

};

Листинг файла 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 <afxres.h>

#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

Оценить/Добавить комментарий
Имя
Оценка
Комментарии:
Где скачать еще рефератов? Здесь: letsdoit777.blogspot.com
Евгений22:06:49 18 марта 2016
Кто еще хочет зарабатывать от 9000 рублей в день "Чистых Денег"? Узнайте как: business1777.blogspot.com ! Cпециально для студентов!
13:22:43 24 ноября 2015

Работы, похожие на Реферат: Курсовая работа по основам программирования. Игра Паровоз

Назад
Меню
Главная
Рефераты
Благодарности
Опрос
Станете ли вы заказывать работу за деньги, если не найдете ее в Интернете?

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



Результаты(149954)
Комментарии (1829)
Copyright © 2005-2016 BestReferat.ru bestreferat@mail.ru       реклама на сайте

Рейтинг@Mail.ru