Розробка гри "Тетріс" у середовищі C Builder 6 - Курсовая работа

бесплатно 0
4.5 76
Загальний опис гри "Тетріс", огляд основних об’єктів та клавіш управління грою. Розробка інтерфейсу користувача та основних модулів. Алгоритм ігрового поля, блок-схема алгоритму перевірки можливості зміни розташування фігури та переміщення фігури вниз.

Скачать работу Скачать уникальную работу

Чтобы скачать работу, Вы должны пройти проверку:


Аннотация к работе
ВСТУП1.1 Опис гри 1.2 Опис гри «Тетріс» 1.3 Постановка задачіСПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛРозвиток обчислювальної техніки в останні роки, дозволяє автоматизувати більшу частину галузей людської діяльності. Слід також зазначити, що протягом останніх 10-15 років у навчальний процес, як активний інструмент навчання й пізнання, стрімко включається не тільки сам компютер, але й мови програмування. Виконання проекту є завершальним етапом при вивченні дисципліни «Обєктно-орієнтоване програмування. Тому розробка гри є найбільш прийнятною темою для застосування обєктно-орієнтованого підходу при розробці програми. При розробці компютерних ігор варто виділити наступні етапи, наприклад: - вивчення теоретичного матеріалу;Головне меню містить такі пункти: - Гра (Game); Гравець повинен вкладати фігури на дно стакана по можливості з більшою щільністю (кількість незаповнених квадратів повинна бути мінімальною). Гравець може зупинити і продовжити гру. Гравець отримує очки за кожну фігурку, тому його завдання - заповнювати ряди, не заповнюючи сам склянку якомога довше, щоб таким чином отримати якомога більше очок. При нарахуванні очок за лінії кількість очок зазвичай залежить від того, скільки ліній прибрано за один раз: 1 лінія - 100 очок, 2 лінії - 300 очок, 3 лінії - 700 очок, 4 лінії (тобто, зробити Тетріс) - 1500 очок.В даній курсовій роботі було розроблено програмне забезпечення гра «Тетріс». Для досягнення поставленої цілі були розкриті наступні етапи: - аналіз та опис предметної області; До недоліків роботи можна віднести наступне: - для організації гри були використані стандартні засоби візуального програмування TIMAGE, які є слабкими у порівнянні з спеціалізованими графічними бібліотеками. При оформленні курсового проекту були одержані навики написання програмного забезпечення, а також великий практичний досвід роботи з мовою програмування C у середовищі Borland C Builder. } fld->Hide(Image2->Canvas);IMG_ae863afc-dc7c-4640-a262-63701b229e1e

IMG_b751cc8b-3065-41fc-911f-84c02d4f03e8

IMG_8e88fbaa-1748-460c-ad58-77daaa5aa319

IMG_a7146c56-f625-4e87-8926-bbd31e155c1a

План
КАЛЕНДАРНИЙ ПЛАН виконання курсового проекту

Тема: розробка програмного забезпечення гра «Тетріс»

№Найменування роботиПочатокЗакінченняПримітки

дослідження предметної області;20.01.201203.02.2012

огляд прототипів;03.02.201217.02.2012

розробити архітектуру програмного забезпечення;17.02.201229.02.2012

реалізувати програмне забезпечення;01.03.201210.04.2012



Розробив студент Єлік Ольга Андріївна

(прізвище, ім’я, по батькові студента)

Керівник роботи Мартиновський Іван Михайлович

(посада, прізвище, ім’я, по батькові)

Размещено на .ru

Вывод
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛВ даній курсовій роботі було розроблено програмне забезпечення гра «Тетріс». Результати розробки наведені у додатку Б. Для досягнення поставленої цілі були розкриті наступні етапи: - аналіз та опис предметної області;

- проект програми, який включає розробку діаграми обєктів та наслідування, проектування інтерфейсу та розробку алгоритмів;

- кодування гри;

- аналіз результатів.

До недоліків роботи можна віднести наступне: - для організації гри були використані стандартні засоби візуального програмування TIMAGE, які є слабкими у порівнянні з спеціалізованими графічними бібліотеками. Через що у грі, при переміщенні обєктів, відбуваються сильні мерехтіння;

- не реалізовані функції обертання фігур та повідомлення про наступну фігуру.

Зазначені зауваження не є принциповими до дисципліни «Обєктно-орієнтоване програмування» і тому у цілому можна вважати, що всі поставлені задачі виконано.

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

При оформленні курсового проекту були одержані навики написання програмного забезпечення, а також великий практичний досвід роботи з мовою програмування C у середовищі Borland C Builder.

Теоретичні відомості були закріплені практичними заняттями.

СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ

1. C Builder 6. Справочное пособие. Книга Классы и компоненты.

2. Работа с базами данных в C Builder

3. C Builder 6. Справочное пособие. Книга 1. Язык C .

4. Borland C Builder. Освой самостоятельно

5. Культин Н. Б. Самоучитель C Builder

6. Программирование в С Builder 6 и 2006

7. C Builder 5. Руководство разработчика.

8. C# Builder. Быстрый старт

9.

Додаток А - Текст програми

Лістинг А.1 - фрагмент модулю game.cpp

//---------------------------------------------------------------------------

#include

#pragma hdrstop

#include "game.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TFORM3 *Form3;

//---------------------------------------------------------------------------

__fastcall TFORM3::TFORM3(TCOMPONENT* Owner)

: TFORM(Owner)

{

}

//--------------------------------------------------------------------------- void __fastcall TFORM3::Timer1Timer(TOBJECT *Sender)

{

// перерисовывать сцену if(fld->ISEMPTY())

{ fld->NEWFIGURE();

} fld->Hide(Image2->Canvas);

fld->MOVEDOWN();

fld->Show(Image2->Canvas);

}

//--------------------------------------------------------------------------- void __fastcall TFORM3::Button1Click(TOBJECT *Sender)

{

// fld->Show(Image2->Canvas);

}

//--------------------------------------------------------------------------- void __fastcall TFORM3::Button2Click(TOBJECT *Sender)

{

Timer1->Enabled = false;

}

//--------------------------------------------------------------------------- void __fastcall TFORM3::Label4Click(TOBJECT *Sender)

{

Timer1->Enabled = true;

fld = new FIELDFIGURES(Image2->Width / 10, Image2->Height / 20);

}

//--------------------------------------------------------------------------- void __fastcall TFORM3::Label5Click(TOBJECT *Sender)

{

Timer1->Enabled = false;

}

//--------------------------------------------------------------------------- void __fastcall TFORM3::FORMKEYDOWN(TOBJECT *Sender, WORD &Key, TSHIFTSTATE Shift)

{ switch(Key)

{ case 37: fld->Hide(Image2->Canvas);

fld->MOVELEFT();

fld->Show(Image2->Canvas);

break;

case 39: fld->Hide(Image2->Canvas);

fld->MOVERIGHT(); break;

fld->Show(Image2->Canvas);

}

}

//---------------------------------------------------------------------------

Лістинг А.2 - модуль field.cpp

//---------------------------------------------------------------------------

#pragma hdrstop

#include "field.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

FIELDFIGURES :: FIELDFIGURES(int w, int h)

{ width = w;

height = h;

empty = true; // признак того, что поле не занято fig = new Figures();

//инициализируем массив поля for(int i = 0; i < N; i )

{ for(int j = 0; j < M; j )

{ matr[i][j] = 0;

}

}

} void FIELDFIGURES :: MOVEDOWN() // aeie-noaia 1

{ if( !CANMOVE() ) // если не можем опустить фигуру

{ empty = true; // освобождаем поле, а 1 превращаем в 2 for(int i = N - 1; i > 0; i-)

{ for(int j = 0; j < M; j ) if(matr[i][j] == 1) matr[i][j] = 2;

}

} else

{ for(int i = N - 1; i > 0; i-)

{ for(int j = 0; j < M; j ) if(matr[i - 1][j] == 1)

{ matr[i][j] = matr[i - 1][j];

matr[i - 1][j] = 0;

}

}

}

} void FIELDFIGURES :: MOVELEFT() // aeie-noaia 1

{ if( CANMOVELEFT() ) // если не можем опустить фигуру

{ for(int i = N - 1; i > 0; i-)

{ for(int j = 0; j < M - 1; j ) if(matr[i][j 1] == 1)

{ matr[i][j] = matr[i][j 1];

matr[i][j 1] = 0;

}

}

}

} void FIELDFIGURES :: MOVERIGHT() // aeie-noaia 1

{ if( CANMOVERIGHT() ) // если не можем опустить фигуру

{ for(int i = N - 1; i > 0; i-)

{ for(int j = M - 1; j > 0; j-) if(matr[i][j - 1] == 1)

{ matr[i][j] = matr[i][j - 1];

matr[i][j - 1] = 0;

}

}

}

} bool FIELDFIGURES :: ISLINE()

{ return false;

} int FIELDFIGURES :: ISDRAW(int i, int j)

{ return matr[i][j] == 0 ? false : true;

} void FIELDFIGURES::Show(TCANVAS *can)

{ can->Pen->Color = CLBLACK;

for(int i = 0; i < N; i )

{ for(int j = 0; j < M; j ) if(ISDRAW(i, j))

{ can->Rectangle(j * GETWIDTH(), i * GETHEIGHT(), (j 1) * GETWIDTH(), (i 1) * GETHEIGHT());

}

}

} void FIELDFIGURES::Hide(TCANVAS *can)

{ can->Pen->Color = CLWHITE;

for(int i = 0; i < N; i )

{ for(int j = 0; j < M; j ) if(ISDRAW(i, j))

{ can->Rectangle(j * GETWIDTH(), i * GETHEIGHT(), (j 1) * GETWIDTH(), (i 1) * GETHEIGHT());

}

}

} void FIELDFIGURES :: NEWFIGURE()

{ empty = false;

int Num = fig->GETRAND(MAX_FIG);

for(int i = 0; i < 3; i )

{ for(int j = 3; j < 6; j )

{ if(matr[i][j] FIGARR[Num][i][j - 3] <= 1) // если можно вставить фигуру

{ matr[i][j] = FIGARR[Num][i][j - 3];

} else GAMEOVER();

}

}

} void FIELDFIGURES :: GAMEOVER()

{

// SHOWMESSAGE("Game Over!!!");

} bool FIELDFIGURES :: CANMOVE() // aeie-noaia 2

{ bool res = true;

// сначала проверяем нижнюю строку на наличие 1 for(int j = 0; j < M; j ) if(matr[N-1][j] == 1)

{ res = false; break;

} if(!res) return res;

else

{

// проверяем весь массив на 2 for(int i = N - 2; i >= 0; i-)

{ for(int j = 0; j < M; j )

{ if((matr[i][j] == 1) && (matr[i 1][j] == 2))

{ res = false;

break;

}

}

} return res;

}

} bool FIELDFIGURES :: CANMOVELEFT() // aeie-noaia 2

{ bool res = true;

// сначала проверяем 0 столбец на наличие 1 for(int i = 0; i < N; i ) if(matr[i][0] == 1)

{ res = false; break;

} if(!res) return res;

else

{

// проверяем весь массив на 2 for(int i = N - 1; i >= 0; i-)

{ for(int j = 1; j < M; j )

{ if((matr[i][j] == 1) && (matr[i][j-1] == 2))

{ res = false;

break;

}

}

} return res;

}

} bool FIELDFIGURES :: CANMOVERIGHT() // aeie-noaia 2

{ bool res = true;

// сначала проверяем M столбец на наличие 1 for(int i = 0; i < N; i ) if(matr[i][M-1] == 1)

{ res = false; break;

} if(!res) return res;

else

{

// проверяем весь массив на 2 for(int i = N - 1; i >= 0; i-)

{ for(int j = 0; j < M - 1; j )

{ if((matr[i][j] == 1) && (matr[i][j 1] == 2))

{ res = false;

break;

}

}

} return res;

}

}

Додаток Б - Результати роботи програми

Нижче показані знімки екранних форм, які було отримано у даному проекті.

Рисунок Б.1 - Головна форма

Рисунок Б.2 - Форма гри

Рисунок Б.3 - Форма опис

Рисунок Б.4 - Форма правила

Вы можете ЗАГРУЗИТЬ и ПОВЫСИТЬ уникальность
своей работы


Новые загруженные работы

Дисциплины научных работ





Хотите, перезвоним вам?