Реалізація об’єктно-орієнтованого підходу при розробці програми, що моделює гру 'SQ CaRs'

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Менеджмент
  • Язык:
    Украинский
    ,
    Формат файла:
    MS Word
    1,52 Мб
  • Опубликовано:
    2013-10-12
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Реалізація об’єктно-орієнтованого підходу при розробці програми, що моделює гру 'SQ CaRs'













з дисципліни

«Економічна кібернетика»

на тему:

«Реалізація об’єктно-орієнтованого підходу при розробці програми, що моделює гру SQ CaRs»

Зміст

Вступ

1. Опис предметної області

2. Опис структури класів та їх взаємодія

3. Постановка задачі

4. Програмна реалізація гри SQ CaRs

Висновок

Список використаних джерел

Додаток А



Вступ

Дана курсова робота присвячена моделюванню гри "SQ CaRs" за допомогою мови С++ з використанням пакету Microsoft Visual Studio 2010 та графічної бібліотеки OpenGL в середовищі Windows.

Метою цієї роботи є засвоєння та вдосконалення практичних навичок, здобутих протягом семестру.

С++ - високорівневна мова програмування з підтримкою декількох парадигм програмування, яка базується на мові С. Ця мова розроблялася як розширення мови С задля того, щоб виправити недоліки, які були присутні у мові С.

Головним нововведенням С++ є механізм класів, що дає можливість визначати і використовувати нові типи даних, збільшення відсотку повторного використання вже написаного коду, що досягається механізмом наслідування. Також наслідування забезпечує один з механізмів реалізації поліморфізму - базової концепції об'єктно-орієнтованого програмування, згідно з якою, для виконання однотипної обробки різних типів даних може використовуватися один і той же код. Власне, поліморфізм - теж один із методів забезпечення повторного використання коду.

На даний момент мова С++ залишається однією із найбільш популярних мов програмування і використовується для написання багатьох різноманітних моделей.

OpenGL - (англ. <#"704254.files/image001.gif">

Рис 1. Портативна ігрова приставка BRICK GAME

Суть цієї гри є в тому, що гравцю потрібно проїхати як можна далі не врізаючись в стіни та інші машини.

. Опис структури класів та їх взаємодія

Виходячи із аналізу предметної області, що був виконаний у першому розділі курсової роботи, побудована нотація Буча для даної моделі виглядає наступним чином:





















Рис.2 Діаграма класів

Опис полів та методів:

Клас Tshape - поле для малювання

Поле x, y - координати

Поле color - колір

Клас Tblock - блок

Метод void block - малує один блок

Клас text - текст

Поле *itext - текст

Метод void drawtext - выводить текст

Метод void hidetext - замальовує текст

Клас car - машинка

Поле cx, cy - координати центра машинки

Поле crash - показує, потрапила машинка в аварію чи ні

Поле godmode - політ

Конструктор car - малює машинку

Деструктор ~car - замальовує машинку

Клас grass - трава

Поле gwidth - ширина дороги

Поле gm - рух трави

Конструктор grass - малює траву

Деструктор ~grass - замальовує траву

Клас wall - стінка

Поле wx, wy - координати центра стінки

Поле wpos - положення стінки (справа чи зліва)

Конструктор wall - малює стінку

Деструктор ~wall - замальовує стінку

Клас game_over - напис "GAME OVER"

Поле gox, goy - координати центра напису

Конструктор game_over - малює напис

Деструктор ~ game_over - замальовує напис

Клас menu - меню гри

Поле selection - вибір меню

Метод show - малює меню

Метод draw_select - малює вибір у меню

. Постановка задачі

Усі елементи гри, тобто машинка, стінка, трава, тощо, складаються з блоків, тобто квадратів різного коліру.

Рис. 4. Машинка з блоків

Ціль гри набрати як найбільше очок. Очки даються за подолання дистанції. Гравець програє, якщо врізається у перешкоду. Гравець може переміщувати машинку в межах дороги.

Також у гравця є можливість прискоритися(очки будуть додаватися швидше) та злетіти, але у польоті очки не додаються, а, навпаки, знімаються. Також наявні інші машинки, які теж можуть врізатися у стіни.

4. Програмна реалізація гри SQ CaRs

Для реалізації проекту обрано мову С++. У проекті використана відкрита графічна бібліотека OpenGL. Проект складається з 2 файлів: .h та .cpp.

При запуску програми відображається меню, у якому зображено назву гри, два варінти вибору та підказку, у якій зображено як керувати грою .

Рис.5. Наглядний вигляд меню гри.

Далі користувач має зробити вибір. Бульове значення змінної selection

відповідає за зроблений вибір: - Вибрано пункт NEW GAME - Вибрано пункт EXIT

При натисканні клавіші Enter буде зроблено вибір. Якщо було вибрано NEW GAME, то почнеться гра.

Рис. 6. Начало гри

На рисунку 6 зображено, як виглядає початок гри. Розглянемо окремі елементи:

 - машинка гравця, якою він керує.

Рис. 7.

 - машинка, якою ніхто не керує, вона лише рухається вперед, але з нею можна зіткнутися.

Рис. 8

 - трава. Її неможливо перетнути.

Рис. 9.

 - стіна. З нею можна зіткнутися.

Рис. 10.

 - тут відображається кількість набраних очок.

Рис. 11.

Керування здійснюється за допомогою клавіш на клавіатурі:, A, S, D - переміщують машинку в допустимих межах.- прискорення. - політ.- рестарт гри у разі поразки.

Постійний рух досягається за допомогою функції - таймеру, яка постійно визивається через кожні 20 мс. У функції timer() виконується зміна координат об'єктів з урахуванням нажатих клавіш та послідуючий виклик функції display(), яка замальовує об'єкти, які змінюють своє положення, а потім знову малює їх з новими координатами.

При натисканні клавіші прискорення(F) функція-таймер визивається у два рази частіше, тобто кожні 10 мс. Так досягається прискорення руху усіх елементів гри.

Якщо гравець натисне E(політ), то машинка збільшиться. Це створює вигляд ніби машинка летить. Поки машина летить вона не може зіткнутися з перешкодами, але очки у польоті зменшуються, а не збільшуються.

Рис. 12. Політ машинки.

Якщо машинка врізається у якусь перешкоду, то гра закінчується, та зображується екран поразки.

Рис. 13. Поразка.

Тепер гравець може натиснути R, щоб обнулити рахунок, положення усіх об'єктів та почати гру спочатку.

Висновок

В результаті виконання роботи досягнуто її мету - засвоєно отримані протягом семестру знання та вдосконалено практичні навички. Змодельовано та апробовано гру "SQ CaRs" за допомогою мови С++ з використанням пакету Microsoft Visual Studio 2010 та графічної бібліотеки OpenGL в середовищі Windows.

Реалізовані такі функції:

- аркадна гра;

- реалізація класів;

- нелінійне наслідування;

Виконання курсової роботи дозволило розкрити можливості об’єктно-орієнтовного програмування за допомогою мови С++. В процесі написання роботи я засвоїв, що С++ - високорівневна мова програмування з підтримкою декількох парадигм програмування.

С++, завдяки наявності механізму класів, дає можливість визначати і використовувати нові типи даних, збільшення відсотку повторного використання вже написаного коду, що досягається механізмом наслідування. Оскільки складовими програми є окремі модулі, то це дозволяє спростити написання подібних програм завдяки їх використанню.

Список використаних джерел

Бьерн Страуструп. Язык программирования С++.[Текст] Специальное издание - «Бином», ISBN 5-7989-0226-2, 5-7940-0064-3, 0-201-70073-5; 2010 г - 1054 с.

Уроки по opengl от NeHe. [Електронний ресурс]. Режим доступу: <http://pmg.org.ru/nehe/>

Электронное пособие по С++ . [Електронний ресурс]. Режим доступу: <http://valera.asf.ru/cpp/book/>

Центр разработки на Visual C++. [Електронний ресурс]. Режим доступу: http://msdn.microsoft.com/ru-ru/

Додаток А

Зміст файлу classes.h:

#include <gl\glut.h> //основная библиотека opengl

#include <glaux.h>

#pragma comment(lib, "glaux.lib") //библиотека требуемая для отрисовки битмапа

#include <time.h>

#include <Windows.h>

#include <iostream>namespace std;

float pi=3.141592653589793238;bs=2; //BLOCKSIZEfloat wheight=500, wwidth=500; //WINDOW SIZEfloat ortho=50; //размер окнаint roadwidth=30, exrand=roadwidth-bs*6; //левая и правая стенкиint wallwidth=10; //ширина стенки 5 блоков 5*2=10int playercolor=8; //цвет машинки игрокаcrashblink=false, goblink=true;

float foncolor[3]={0.5, 0.5, 1}; //цвет фонаcar_i=0, go_i=0; //перменные требуемые для моргания при аварии

//----------------CLASSES------------------------------Tshape

{:x, y;color;switch_color(int scolor) //метод смены цвета

{(scolor)

{-2: glColor3f(0.19215686, 0.60784314, 0.8705882); break; //фон меню голубой-1: glColor3f(0.5, 0.5, 1); break; //лиловый ФОН0: glColor3f(0,0,0); break; //черный1: glColor3f(1,0,0); break; //красный2: glColor3f(0,1,0); break; //зеленый3: glColor3f(0,0,1); break; //синий7: glColor3f(1,1,0); break; //желтый8: glColor3f(1,0.5,0); break; //оранжевый9: glColor3f(0.5,0.25,0); break; //коричневый21: glColor3f(0,0.2,0); break; //темно-зеленый

}

}

};

Tblock: virtual public Tshape //квадратик

{: block(); // рисуем квадратик

};

car: public Tblock //машинка

{:cx, cy, ccolor;crash, godmode;(float, float, int, bool, bool); //отрисовует машинку

~car(void); //закрашивает машинку

//void car();

};

grass: public Tblock

{:gwidth, gm;(float, float);

~grass (void);

};

wall: public Tblock

{:wy;wx;wpos;wcolor;(float, int, int);

};

game_over: public Tblock

{:gox, goy;ocolor;_over(float, float, int);

~game_over(void) {};

};text: virtual public Tshape

{ :char* itext;drawtext(const char*, int, float, float);hidetext();

};

Tmenu: public Tblock, public text

{:selection;show();draw_select(bool);

};

//------------------FUNCTIONS---------------------Tblock::block()

{_color(color);(GL_QUADS);f(x-bs/2, y+bs/2);

glVertex2f(x-bs/2, y-bs/2); //рисует прямоугольник

glVertex2f(x+bs/2, y-bs/2);f(x+bs/2, y+bs/2);();

_color(0);(GL_LINE_LOOP);f(x-bs/2, y+bs/2-0.1);

glVertex2f(x-bs/2, y-bs/2-0.1); //рисует черный ободок

glVertex2f(x+bs/2, y-bs/2);f(x+bs/2, y+bs/2);();

_color(color);

}

//------CAR------------------::car(float _cx, float _cy, int _ccolor, bool _crash, bool _godmode): cx(_cx), cy(_cy), ccolor(_ccolor), crash(_crash), godmode(_godmode)

{=ccolor;(crash==true) {

switch(crashblink) //моргание машинки при аварии

{true: { color=0; car_i++; if(car_i==15) { crashblink=false; car_i=0;} break; }false: { color=1; car_i++; if(car_i==15) { crashblink=true; car_i=0;} break; }

}

}(godmode==true) bs=3; //увеличение размера блока если включен полет

x=cx;=cy;

//----();

//----=cy+bs;();=cx-bs;();=cx+bs;();=cx;

//----=cy+2*bs;();

//------=cy-bs;();=cx-bs;();=cx+bs;();

x=cx;=cy;

}

//===========::~car() //закрашиваем машинку прямоугольником цвета фона

{f(foncolor[0], foncolor[1], foncolor[2]);(GL_QUADS);f(cx-1.6*bs, cy+2.6*bs);f(cx-1.6*bs, cy-1.6*bs);f(cx+1.6*bs, cy-1.6*bs);f(cx+1.6*bs, cy+2.6*bs);

glEnd();(godmode==true) bs=2; //возвращаем размер блока в начальное положение

}

//----GRASS----::grass(float _gwidth=0.0, float _gm=0.0): gwidth(_gwidth), gm(_gm)

{=gwidth/2;k=true;(y=-ortho-bs/2+gm; y<=ortho+bs; y+=bs)

{(k) //смена цвета блока через один

{true: color=2; k=false; break;false: color=21; k=true; break;

}(); //рисуем справа от центра=-x; //отражаем Х(); //рисуем слева от центра=-x; //отражаем Х обратно

}

}

::~grass() {f(foncolor[0], foncolor[1], foncolor[2]);=gwidth/2;(GL_QUADS);f(x-0.6*bs, +ortho);f(x-0.6*bs, -ortho);f(x+0.6*bs, -ortho);f(x+0.6*bs, +ortho);();=-gwidth/2;(GL_QUADS);f(x-0.6*bs, +ortho);f(x-0.6*bs, -ortho);f(x+0.6*bs, -ortho);f(x+0.6*bs, +ortho);();

}

//----WALL---- рисуем стенку::wall(float _wy, int _wpos, int _wcolor): wy(_wy), wpos(_wpos), wcolor(_wcolor) {

color=wcolor;=wy;(wpos) //устанавливаем координаты по Х в зависимости от положения стенки (слева или справа)

{ 0: wx=-roadwidth/2+wallwidth/2+bs/2; break;1: wx=roadwidth/2-wallwidth/2-bs/2; break;

}

(x=wx-wallwidth/2+bs/2; x<=wx+wallwidth/2-bs/2; x+=bs) block(); //ставим 5 блоков

}::~wall() {f(foncolor[0], foncolor[1], foncolor[2]);

glBegin(GL_QUADS); //закрашиваем стенку прямоугольником цвета фона

glVertex2f(wx-wallwidth/2-1, wy+0.6*bs);f(wx-wallwidth/2-1, wy-0.6*bs);f(wx+wallwidth/2+1, wy-0.6*bs);f(wx+wallwidth/2+1, wy+0.6*bs);

();

}

//-----GAME OVER-----_over::game_over(float _gox, float _goy, int _ocolor): gox(_gox), goy(_goy), ocolor(_ocolor) {

switch(goblink) //изменяем цвет каждые 15 отрисовок (черный/красный) так дистигается эффект моргания

{true: { color=0; go_i++; if(go_i==15) { goblink=false; go_i=0;} break; }false: { color=1; go_i++; if(go_i==15) { goblink=true; go_i=0;} break; }

}i;

//===== G ===== //устанавливаем координатые блоков, чтобы получилась надпись GAME OVER

int gx[12]={-42, -42, -42, -40, -40, -38, -38, -36, -36, -36, -34, -34 };gy[12]={2, 4, 6, 0, 8, 0, 8, 0, 4, 8, 2, 4 };(i=0; i<12; i++) { x=gox+gx[i]; y=goy+gy[i]; block(); }

//===== A ======ax[10]={-30, -30, -30, -30, -28, -28, -26, -26, -26, -26};ay[10]={0, 2, 4, 6, 4, 8, 0, 2, 4, 6};(i=0; i<10; i++) { x=gox+ax[i]; y=goy+ay[i]; block(); }

//==== M ======mx[13]={-22, -22, -22, -22, -22, -20, -18, -16, -14, -14, -14, -14, -14} ;my[13]={0, 2, 4, 6, 8, 6, 4, 6, 0, 2, 4, 6, 8};(i=0; i<13; i++) { x=gox+mx[i]; y=goy+my[i]; block(); }

//==== E ======ex[14]={-10, -10, -10, -10, -10, -8, -8, -8, -6, -6, -6, -4, -4, -4};ey[14]={0, 2, 4, 6, 8, 0, 4, 8, 0, 4, 8, 0, 4, 8};(i=0; i<14; i++) { x=gox+ex[i]; y=goy+ey[i]; block(); }

//==== O =====ox[12]={2, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 10};oy[12]={2, 4, 6, 0, 8, 0, 8, 0, 8, 2, 4, 6};(i=0; i<12; i++) { x=gox+ox[i]; y=goy+oy[i]; block(); }

//==== V ====vx[9]={14, 14, 16, 16, 18, 20, 20, 22, 22};vy[9]={6, 8, 2, 4, 0, 2, 4, 6, 8};(i=0; i<9; i++) { x=gox+vx[i]; y=goy+vy[i]; block(); }

//==== E ====(i=0; i<14; i++) { x=gox+ex[i]+36; y=goy+ey[i]; block(); }

//==== R ====rx[12]={36, 36, 36, 36, 36, 38, 38, 40, 40, 40, 42, 42};ry[12]={0, 2, 4, 6, 8, 4, 8, 2, 4, 8, 0, 6};(i=0; i<14; i++) { x=gox+rx[i]; y=goy+ry[i]; block(); }

}

//------TEXT------text::drawtext(const char* ftext, int _color, float _x, float _y)

}

text::hidetext()

{ //закрашивает текст полигоном в виде шестиугольника

switch_color(7);(GL_POLYGON);f(x-0.5, y-0.5);f(x-3.5, y+1.4);f(x-0.5, y+2.5);f(x+23, y+2.5);f(x+26, y+1.4);f(x+23, y-0.5); ();

}

//--------- MENU -------------Tmenu::show() {

x=-49;=49;(int i=1; i<=2500; i++) //рисует 2500 блоков рандомного цвета на фоне

{=(rand()%10)-1;();+=2;(x>50) {x=-49; y-=2;}

}

_RGBImageRec* image; //создаем битмап=auxDIBImageLoad("name.bmp"); //полгружаем в него картинку

glRasterPos2d(-30,22); //выбираем место для отрисовки (координаты левого нижнего угла)(GL_UNPACK_ALIGNMENT, 1);(1.0, 1.0); //утсанавливаем масштаб

glDrawPixels(image->sizeX, image->sizeY, GL_RGB, GL_UNSIGNED_BYTE, image->data); //отрисовуем массив пикселей=auxDIBImageLoad("controls.bmp");d(-46,-46);(image->sizeX, image->sizeY, GL_RGB, GL_UNSIGNED_BYTE, image->data);=auxDIBImageLoad("menu.bmp");d(-26,-30);(image->sizeX, image->sizeY, GL_RGB, GL_UNSIGNED_BYTE, image->data);

_select(true);

}

Tmenu::draw_select(bool _selection)

{=_selection;(selection) //рисуем подчеркивания в меню

{true:_color(-2);(GL_QUADS);f(-11, -18);f(-11, -19);f(9, -19);f(9, -18);();

_color(1);(GL_QUADS);f(-20, -5);f(-20, -6);f(20, -6);f(20, -5);();;

false:_color(-2);(GL_QUADS);f(-20, -5);f(-20, -6);f(20, -6);f(20, -5);();

_color(1);(GL_QUADS);f(-11, -18);f(-11, -19);f(9, -19);f(9, -18);();;

}();

}

Зміст файлу 1.cpp:

#include "classes.h"gtc=GetTickCount();x, y=-45, m=bs/2, ey=ortho+bs*3, ex=((gtc%(exrand*66+1))/66)-exrand/2, wy=1.5*ortho; wpos=gtc%2;godmode=false;score_point_float=0;score_point_char[30];gr(roadwidth, m);player(x, -45, 1, false, false);

car enemy(ex, ey, 1, false, false); //инициализируем обьекты классов с началным положением

wall wa(wy, wpos, 9);score;menu;gameover=false;enemycrash=false;KeyDown[256] = {false}; //массив для нажатых кнопочекfirststart=0;_RGBImageRec* control; //битмап для картинки

void display() //основная функция отрисовки происходящего

{(firststart<5) //первые пять отрисовок чистим экран, позволяет избравиться от некоторых глюков на медленных компьюетрах

{ (GL_COLOR_BUFFER_BIT); ++;

}.~wall();.~car();.~car(); //зарисовуем объекты.~grass();.hidetext();wa(wy, wpos, 9); //рисуем стенуgr(roadwidth, m); //травуenemy(ex, ey, 7, enemycrash, false); //вражескую машинку.drawtext(score_point_char , 1, -45, 45); //выводим очкиplayer(x, y, playercolor, gameover, godmode); //рисуем нашу машинку

glFlush(); //и наконец выводим всё из буфера на экран

}display_over() //функция отрисовки при прогрыше

{_over o(0, 0, 1); //рисуем надпись гейм овер.~game_over(); //просто используем деструктор для экономии ресурсов

glRasterPos2d(-46,-46); //рисуем помощь об управлении(control->sizeX, control->sizeY, GL_RGB, GL_UNSIGNED_BYTE, control->data);

glFlush(); //выводим все из буфера на экран

}timer(int=0) //функция-таймер

{

if(gameover==false)

{(m==-8) m=0; //зациклим движение травы=1.6; //двигаем траву

(ey<-ortho-bs*3) //если вражеская машинка уехала за экран создадим новую

{ =-ey+5*bs; =GetTickCount();=((gtc%(exrand*66+1))/66)-exrand/2;=false;

}(enemycrash==false) ey-=1.2; //двигаем вражескую машинку

else ey-=1.6;

(wy<-ortho-bs*3) //если стенка уехала за экран создадим новую

{ =-wy; =GetTickCount();=gtc%2;

}=1.6; //двигаем стенку

(godmode==false) score_point_float+=0.2; //прибавляем очки

else score_point_float-=1; //отнимаем если игрок летит, притом в 5 раз бстрее

sprintf(score_point_char, "SCORE: %.0f", score_point_float); //конвертируем очки в char

if(KeyDown['a']==true && x>-roadwidth/2+bs*2.5) x-=0.8; //двигаем машинку в зависимости от нажатых кнопок

if(KeyDown['d']==true && x<roadwidth/2-bs*2.5) x+=0.8;(KeyDown['w']==true && y<ortho-bs*3) y+=0.6;(KeyDown['s']==true && y>-ortho+bs*2.5) y-=0.6;

display(); //отрисовуем

//проверяем на столкновения себя и врага(godmode==false) if((wpos==0 && wy>y-2*bs && wy<y+3*bs+0.2 && -roadwidth/2+wallwidth/2+bs/2>x-4*bs && -roadwidth/2+wallwidth/2+bs/2<x+4*bs) || (wpos==1 && wy>y-2*bs && wy<y+3*bs+0.2 && roadwidth/2-wallwidth/2-bs/2>x-4*bs && roadwidth/2-wallwidth/2-bs/2<x+4*bs) || (ey>(y-4*bs) && ey<(y+4*bs+0.2) && ex>(x-3*bs) && ex<(x+3*bs))) gameover=true;((wpos==0 && wy>ey-2*bs && wy<ey+3*bs+0.2 && -roadwidth/2+wallwidth/2+bs/2>ex-4*bs && -roadwidth/2+wallwidth/2+bs/2<ex+4*bs) || (wpos==1 && wy>ey-2*bs && wy<ey+3*bs+0.2 && roadwidth/2-wallwidth/2-bs/2>ex-4*bs && roadwidth/2-wallwidth/2-bs/2<ex+4*bs)) enemycrash=true;

}

//gameover

{_over(); //отрисовуем проигрыш(KeyDown['r']==true) //делаем рестарт при нажатии R

{=0;=-45; =bs/2; =ortho+bs*3; =GetTickCount();=((gtc%(exrand*66+1))/66)-exrand/2; wy=1.5*ortho;_point_float=0;

['r']=false; //"отжимаем" кнопку=false;(GL_COLOR_BUFFER_BIT); //чистим экран

}

}(KeyDown['f']==true) glutTimerFunc(10, timer, 0); //ускоряем таймер при нажатой FglutTimerFunc(20, timer, 0);

}Keyboard(unsigned char key, int _x, int _y) //проверяем нажатие кнопок

{

if(key!='r')

{[key] = true; //и вносим в булевый массив значения нажатых кнопок

if(KeyDown['e']==true) godmode=true;

}if(gameover==true) KeyDown[key] = true;

}

KeyboardUp(unsigned char key, int _x, int _y)

{(key!='r')

{[key] = false; //"отжимаем кнопки"(KeyDown['e']==false) godmode=false;

}

menu_select(bool select)

{(select==true) //начинаем игру при выборе NEW GAME

{(Keyboard);(KeyboardUp);(true);=true;(display_over);(display); //вызов функции Дисплей

timer();

}//либо вызодим при выборе EXIT

{(0);

}

}

void MKeyboard(unsigned char key, int _x, int _y) //проверяем нажатые кнопки в меню

{(key==13) menu_select(menu.selection);

}

SKeyboard(int key, int x, int y) //проверяем нажатые кнопки в меню

{(key==GLUT_KEY_UP || key==GLUT_KEY_DOWN)

{(menu.selection)

{true: menu.draw_select(false); break;false: menu.draw_select(true); break;

}

}

}draw_menu() //отрисовуем меню

{.show();

(SKeyboard); //регистрируем функции мониторящие клавиатуру(MKeyboard);

}

main(int argc, char **argv)

{(&argc, argv);(GLUT_SINGLE | GLUT_RGB); //выбираем режим отображеия, у нас одинарная буферизация и 3 цвета(wwidth, wheight); //размер окна("SQ CaRs"); //инициализируем окошко(GL_PROJECTION); ();

(foncolor[0], foncolor[1], foncolor[2], 1.0); //цвет фона

(-ortho, ortho, -ortho, ortho, -0.5, 0.5); //размеры окон(); //убираем консоль(draw_menu); //вызов функции draw_menu(GL_UNPACK_ALIGNMENT, 1);=auxDIBImageLoad("controls.bmp"); //хагружаем в битмап картинку();

}

Похожие работы на - Реалізація об’єктно-орієнтованого підходу при розробці програми, що моделює гру 'SQ CaRs'

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!