Гра Тетріс
ДНІПРОПЕТРОВСЬКА
ОБЛАСНА РАДА
ОБЛАСНИЙ КОМУНАЛЬНИЙ
ВИЩИЙ НАВЧАЛЬНИЙ ЗАКЛАД
"ІНСТИТУТ ПІДПРИЄМНИЦТВА "СТРАТЕГІЯ"
КАФЕДРА КОМП’ЮТЕРНИХ ТА ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ
Курсова робота
З дисципліни “Основи програмування та алгоритмічні мови”
На тему “Гра Тетріс”
Студент
групи П-09-51
Глеб Анатолій Сергійович
Керівник
Девяткін Іван Вікторович
м.
Жовті Води
2010
ЗМІСТ
Вступ
Темою моєї курсової роботи була обрана гра «Тетріс».
Тетріс — популярна комп'ютерна гра-головоломка, розроблена Олексієм Пажитновим та його колегами. Перша версія гри була представлена 6 червня 1984 року, коли він працював в ОЦ Академії наук СРСР в Москві. Назву гри автор створив поєднавши грецький префікс "тетра-" зі словом "теніс" - улюбленою грою Пажитнова .
Ця гра, чи один з її варіантів, існує майже для кожної ігрової консолі та операційної системи, а також для інших електронних пристроїв: мобільних телефонів, портативних медіаплеєрів, кишенькових комп'ютерів тощо.
А зараз трішки з історії створення першої
гри. В
червні 1984
року співробітник
Обчислювального центру Академії наук
СРСР Олексій
Пажитнов, який
займався проблемами штучного інтелекту
і розпізнавання мови, вирішив написати
гру-головоломку для мінікомп'
Перший варіант гри, написаної Пажитновим,
міг змінювати положення фігур шляхом
повороту їх на 90 градусів щодо їх геометричного
центру. Однак на той час потужність комп'ютерів
не дозволяла запустити таку програму.
Тоді розробник вирішив спростити завдання,
забравши у кожної з фігур по одному квадратику,
зменшивши їх кількість до чотирьох. Так
з'явилася перша версія тетріса для мікрокомп'ютера Електроніка-60
Пізніше Вадим Герасимов переписав цю гру для IBM PC. Після чого гра набула великої популярності.
Після появи тетрісу кілька найбільших на той час компаній з розробки системного забезпечення, комп'ютерних та ігрових застосунків — Spectrum Holobyte і Mirrorsoft, Bullet-Proof Software і Atari Games, Famicom і його американський аналог Nintendo Entertainment System - почали тривалу боротьбу за придбання прав на випуск всіх варіацій і консольних версій тетрісу.
У 1988 році за підтримки Хенке Роджерса Пажитнов організував компанію з розробки ігрового програмного забезпечення AnimaTek, а 1991 року було створено компанію Tetris.
Тетріс є дбре розвиваючою і цікавою грою і внаш час. Тому я поставив за мету створити гру, яка була б водночас простою, цікавою і вдеякій мірі корисною. Користь тетрісу я вбачаю в здатності цієї гри добре розвивати логічне мислення і швидкість прийняття рішень. В своїй грі я збираюсь дотримуватися часткової аналогії з оригіналом , але з деякими покращеннями і вдосконаленнями.
Наприклад покращення можуть бути такими:
- Використання яскравих кольорів у грі;
- Використання яскравих звукових ефектів;
- Простота виконання самого ігрового процесу;
- Достатній рівень складності;
Я гадаю, що дотримуючись поставлених перед собою вимог, моя гра вийде не гіршою від її оригіналу. Але про це звичайно судити не мені, а краще гру зможуть оцінити люди які спробують пограти в неї.
1 Постановка задачі
Темою курсової роботи є всім добре відома гра «Тетріс». В процесі створення гри було поставлено ряд задач . При виконані курсової роботи необхідно розробити зручний візуальний інтерфейс, керування, та забезпечити програму необхідною функціональністю.
Процес виконання курсової
- Створення головного вікна, де відбуватиметься весь ігровий процес;
- Створення яскравого графічного інтерфейсу, тобто приємних для очей фона і фігурок;
- Створення правильної фізики руху фігурок, фізика повинна відповідати фізиці оригіналу;
- Створення гарного звукового супроводу;
В ході створення гарного і яскравого графічного інтерфейсу буде використовуватися OpenGL (Open Graphics Library) - відкрита графічна бібліотека OpenGL, стандартна бібліотека «GL / glu.h», а також мову програмування С++.
Загалом
вже завершена программа
- По-перше, область ігрового процессу, в цій області вікна буде відбуватися сама гра і безпосередній контакт користувача з програмним продуктом ;
- По-друге, інформаційна область, в якій відображається інформація про кількість спалених ліній і клітин.
Розроблений програмний продукт призначатиметься для користувачів різних вікових категорій, і розумових здібностей. Ця гра була культовою протягом багатьох поколінь і мала грандіозний успіх.
При виконанні курсової роботи головним
джерелом інформації були конспект лекцій
з предмету «Основи програмування та алгоритмічних
мов», навчальна література з OpenGL та мови програмування
С/C++, а також інтернет зокрема сайт http://www.gamedev.ru.
2 Алгоритм розв’язання задачі
Під час виконання курсової роботи необхідно розв’язати ряд завдань:
- Створити графічне вікно, яке міститиме дві області;
- Створити в вікні ігрове поле;
- Створити інформаційну область;
- Створити функції для руху і повороту фігур;
А тепер
детальніше про кожен із наведених
вище пунктів.
2.1 Алгоритм створення вікна
Викликаємо функцію WinMain – функція входа впрограму:
int WINAPI WinMain(HINSTANCE hIn, HINSTANCE hPrevIn, LPSTR szCmd, int nShow)
{
srand((UINT)time(
WNDCLASS A;
A.cbClsExtra = 0;
A.cbWndExtra = 0;
A.style = CS_HREDRAW | CS_VREDRAW;
A.hbrBackground = (HBRUSH)COLOR_WINDOW;
A.hInstance = hIn;
A.hIcon = NULL;
A.hCursor = LoadCursor(NULL, IDC_ARROW);
A.lpszClassName = WinApp;
A.lpszMenuName = NULL;
A.lpfnWndProc = mProc;
if(!
return 1;
HWNDX=CreateWindow(WinApp,
Сама ж функція, яка створює вікно є функція CreateWindow, яка має наступні параметри:
- Вказівник на зареєстроване ім'я класу;
- Вказівник на ім'я вікна;
- Стиль вікна;
- Горизонтальна позиці вікна;
- Вертикальна позиція вікна;
- Ширина вікна;
- Висота вікна;
- Дескриптор батьківського вікна або вікна власника;
- Дескриптор меню або ідентифікатор дочірнього вікна;
10.Дескриптор екземпляра пріложенія;
11.Вказівник на дані створення вікна;
Вікно зображене на мал.1.
Малюнок 1.(Головне вікно)
2.2 Алгоритм виводу зображення в вікні
В області ігрового процесу спершу зображуємо ігрову сітку:
float fT;
glNewList(gPole, GL_COMPILE);
glColor3f((
for(fT = mnX; fT <= mX; fT += K)
{
glBegin(GL_
glVert
glVert
glEnd();
}
for(fT = mnY; fT <= mY; fT += K)
{
glBegin(GL_
glVert
glVert
glEnd();
}
Вона має вигляд зображений на мал.2.
Малюнок 2.(Зображення ігрової сітки)
Від тексту
в інформаційній області
HFONT hFontNew = CreateFont(
30, // высота шрифта
10, // средняя ширина символа
0, // угол наклона
0, // угол ориентации базисной линии
FW_SEMIBOLD, // толщина шрифта
20,
// описатель параметра
0,
// описатель параметра
0,
// описатель параметра
ANSI_CHARSET, // идентификатор набора символов
OUT_DEFAULT_PRECIS, // точность вывода
CLIP_DEFAULT_PRECIS, // точность отсечения
DEFAULT_QUALITY, // качество вывода
0, // шаг между символами шрифта и семейство
"TOXA" // имя гарнитуры шрифта
); //Функция CreateFont создает логический шрифт с заданными характеристиками.
Малюнок 3.
Вивід фігурок відбувається за принципом малювання куба :
void Q::pCb(int x, int y)
{
y = nSizeY - y;
glBegin(GL_QUADS);
glVertex3f((GLfloat)((x*K)+
glVertex3f((GLfloat)(((x+1)*K)
glVertex3f((GLfloat)(((x+1)*K)
glVertex3f((GLfloat)((x*K)+
glEnd();
}
Самі ж фігурки загружаються з текстової старочки в якій записано позиції і положення фігур:
Char szT[]="1111100000&50-
Вікно в
якому зображено фігуру знаходиться
на малюнку 4.
Малюнок 4.
Після того, як користувач за якихось причин програв, на екран з'явиться повідомлення «YOU LOSE» и вікно закриється після натискання користувачем ENTER (мал. 5.)
Малюнок
5.
2.3
Алгоритм створення
функції руху і обробки
повідомлень клавіш
В грі рух фігур здійснюється за допомогою функцій pMv(); i Rot();
Функція pMv() :
pMv()
{
for(nCur = 0; nCur < nFigX; nCur++)
{
if(nPole[nPosX+nCur][
break;
}
if(nCur == nFigX)
{
nPosY++;
}
}
Ця функція відповідая зарух фігурок в низ.
LRESULT CALLBACK WndProc(HWND, UINT,WPARAM, LPARAM) -функція обробки повідомлень.
case WM_KEYDOWN:
if(
{ App.bLf();
break;
}if(wParam == VK_RIGHT)
{App.
}if(
{App.
}if(
{if(!
}if(
{App.
}
3 Програмне забезпечення
Даний проект складається з трьох файлів: MainCode.cpp, Q.cpp, class.h , але найважливішим є файл Q.cpp - головний файл програми, який містить у собі такі функції:
- nwGame(); - відповідає за стартгри;
- pMv(); - відповідає за рух фігурок;
- pLf(); - обробка руху в ліво;
- pRt(); - обробка руху в право;
- pSt(); - відповідає за таймер;
- bPs(); - відповідає за паузу;
- Rot(); -відповідає за повороп фігур;
- pCb(); - відповідає за малювання кубиків;
- Hit(); - відповідає за вивід тексту;
В файлі MainCode.cpp знаходиться функція обробки повідомлень LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM) -функція обробки повідомлень, і реєстрація і створення головного вікна програми.
В файлі class.h знаходиться оголошення всіх необхідних бібліотек, а також оголошення сласу Q.
Програмний
продук виконувався з використанням Op
OpenGL — (англ. Open
Graphics Library — відкрита графічна бібліотека) —
специфікація, що визначає незалежний
від мови
програмування крос-
Підчас виконання курсової роботи було розроблено програмний продукт гру «Тетріс».Гра вийшла дуже гарною, простою в керуванні з достатньою стійкістю роботи.
Вимоги до гри можна назвати мінімальними, адже гра повинна запуститись на моделях ПК до програмних потреб можна віднести встановлений Windows.
Для запуску гри потрібно
Висновки
В ході написання курсової
роботи було створено робочий
програмний продукт гру «
- Візуальне оформлення;
- Звукове оформлення;
Перевагою гри є те що вона досить проста в експлуатації і має дуже низькі системні потреби. Але як і будь-яка гра вона може бути покращена за рахунок допрацювання.
Для покращення роботи гри можливі наступні доповнення у подальшому:
- Створення запису і збереження рекордних ігор користувачів
- Ускладнення ігрового процесу за рахунок збільшення кількості ігрових рівнів
- Встановлення повно екранного ігрового режиму
- Показ наступної фігури
Написання курсової дало
Загалом написану гру я вважаю не непоганою, але з потребою доопрацювання.
Список
використаної літератури
1. Щупак Ю.А. Эффективная разработка приложений, - Питер, 2007.
2. Використання матеріалів із сайту www.wikipedia.ua та www. Gamedev.ru.
3. Конспект
лекцій з дисцепліни «Основи
програмування та
4. Методичні
вказівки до оформлення пояснювальних
записок з курсової роботи студентів для
спеціальності "Програмне забезпечення
автоматизованих систем", - Жовті Води,
ОКВНЗ «ІП «Стратегія», 2010.

- Графен
- Графен - материал с исключительными электронными свойствами
- Графика
- Графика JavaScript
- Графика в Borland Pascal
- Графика в PascalABC
- Графика в творчестве Альбрехта Дюрера
- Граничный анализ
- Гранулирование в таблеточном производстве
- Гранулированные и брикетированные корма в рационе молочных коров
- Гранулированные и брикетированные корма в рационе молочных коров
- Гранулометрический состав почв
- Гранулометрический состав почв
- Гранулометрический состав почвы