Смекни!
smekni.com

Застосування BORLAND C BUILDER для створення ігрових програм (стр. 2 из 3)

C++ Builder створює файл проекту з ім'ям за замовчуванням Project1.cpp, а також make-файл із ім'ям за замовчуванням Project1.mak. При внесенні змін у проект, таких, як додавання нової форми, C++ Builder обновляє файл проекту.

Рис.7 Файл проекту

Проект або додаток звичайно мають кілька форм. Додавання форми до проекту створює наступні додаткові файли:

· Файл форми з розширеням.DFM, що містить інформацію про ресурси вікон для конструювання форми

· Файл модуля з розширеням.CPP, що містить код на C++.

· Заголовний файл із розширенням .H, що містить опис класу форми.

Коли ви додаєте нову форму, файл проекту автоматично обновляється.

Для того щоб додати одну або більше форм до проекту , виберіть пункт меню File/New Form. З'явиться порожня форма, що буде додана до проекту. Можна скористатися пунктом меню File/New, вибрати сторінку Forms і вибрати підходящий шаблон з репозиторія об'єктів.

Рис.8 Шаблони форм

Для того, щоб просто відкомпілювати поточний проект, з меню Compile потрібно вибрати пункт меню Compile. Для того, щоб відкомпілювати проект і створити виконує файл, що, для поточного проекту, з меню Run потрібно вибрати пункт меню Run. Компонування проекту є інкрементним (перекомпілюються тільки модулі, що змінилися).

Якщо при виконанні проекту виникає помилка часу виконання, C++ Builder робить паузу у виконанні програми та показує редактор коду з курсором, установленим на операторі, що є джерелом помилки. Перш ніж робити необхідну корекцію, варто запустити знову додаток, вибираючи пункт меню Run з контекстного меню або з меню Run, закрити додаток і лише потім вносити зміни в проект. У цьому випадку зменшиться ймовірність втрати ресурсів Windows.

Приклад: створення найпростішого проекту

Тепер спробуємо створити найпростіший додаток, що дозволяє вводити текст у редагує поле, що, і додавати цей текст до списку при натисканні мишею на кнопку. Виберемо пункт меню File/New Application для створення проектутазбережемо його головну форму під ім'ям samp1.cpp, а сам проект під ім'ям samp.mak. Помістимо на форму компонента Button, EditтаListBox зі сторінки Standard палітри компонентів.

Рис. 9. Розміщення компонентів на формі

Після цього виберемо на формі компонентів Edit і видалимо поточне значення властивості Text. Потім установимо властивість Caption для Button1 рівним "Додати".

Щоб додати оброблювач події OnClick для кнопки Додати, потрібно вибрати цю кнопку на формі, відкрити сторінку подій в інспекторі об'єктів і двічі клацнути мишею на колонку праворуч від події OnClick. У відповідному рядку уведення з'явиться ім'я функції. C++ Builder згенерує прототип оброблювача подій і покаже його в редакторі коду. Після цього варто ввести наступний код в операторні дужки { ... } тіла функції:

void __fastcall TForm1::Button1Click(TObject *Sender)

{

if (!(Edit1->Text == ""))

{

ListBox1->Items->Add(Edit1->Text);

Edit1->Text = "" ;

}

}

Для компіляції проекту в меню Run виберемо пункт Run. Тепер можна що-небудь увести в редагує поле, що, нажати мишею на кнопку Додати та переконатися, що вводять строки, що, додаються до списку.

Рис.10. Так виглядає готовий додаток.

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

Рис. 11. Модифікований додаток

Для кнопки Видалити:

void __fastcall TForm1::Button2Click(TObject *Sender)

{

if (!(ListBox1->ItemIndex == -1))

ListBox1->Items->Delete(ListBox1->ItemIndex);

}

Для кнопки Вихід:

Close();

Збережемо та скомпілюємо додаток, а потім протестуємо його.

Отже, ми познайомилися із середовищем розробки Borland C++ Builder і створили простий додаток.


Практична частина

Результатом нашої роботи є ігровий проект програми “О счасливчик”. Зауважимо лише, що для спрощення робити нами був реалізований лише текстовий інтерфейс взаємодії з користувачем (це було зроблено для економії часу). Впринципі загальна схема та алгоритм роботи програми достатньо простий і не потребує особливих коментарів.

Вся програма містиця в одному текстовому блоці prg.txt [дивись дискету] (лістинг 1).

Лістинг 1.

#include<stdio.h>

#include<conio.h>// Header Files

#include<graphics.h>

#include<string.h>

#include<time.h>

#include<stdlib.h>

// Inputs:void game()

void menu()

int question()

void contend()

void rules()

#include<stdio.h>

#include<conio.h>// Header Files

#include<graphics.h>

#include<string.h>

#include<time.h>

#include<stdlib.h>

#define n 10

#define NULL 0

int flag, take, choice;

char name[20][50];

void menu()

{

clrscr();

printf("&bsol;n&bsol;n WELCOME TO WHO'LL BE A MILLIONAIRE "

"&bsol;n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ "

"&bsol;n&bsol;n&bsol;t $$$$$$$$$$$$$$$$$$$$$ MAIN MENU $$$$$$$$$$$$$$$$$$$$ "

"&bsol;n$ $ "

"&bsol;n$ $ "

"&bsol;n&bsol;t $ Choice 1 : READ THE RULES OF THE GAME$ "

"&bsol;n$ $ "

"&bsol;n&bsol;t $ Choice 2 : ENTER THE NAME'S OF 10 CONTENDERS $ "

"&bsol;n$ $ "

"&bsol;n&bsol;t $ Choice 3 : PLAY GAME$ "

"&bsol;n$ $ "

"&bsol;n&bsol;t $ Choice 4 : EXIT$ "

"&bsol;n$ $ "

"&bsol;n&bsol;t $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ");

printf("&bsol;n&bsol;n&bsol;nPlease Enter Your Choice : ");

scanf(" %d", &choice);

}

float question()

{

time_t first, second;

char dummy[80];

float ret;

randomize(); // stdlib.h

raj :

{

if(random(20) == 0)// stdlib.h

{

first = time(NULL);

printf(" Who's Programmed [ WHO'LL BE A MILLIONAIRE ] :? ");

printf("&bsol;n&bsol;n A) HARRY &bsol;t&bsol;t B) GURJIT &bsol;n C) ALI &bsol;t&bsol;t D) MICHAEL ");

scanf(" %[^&bsol;n]", dummy);

second = time(NULL);

ret = difftime(second, first);

if((strcmpi(dummy, "b") == 0) || (strcmpi(dummy, "gurjit") == 0) )

{

printf(" RIGHT ANSWER ");

flag = 1;

}

else

{

printf(" WRONG ANSWER______The Answer Is ---> B / GURJIT SINGH ");

flag = 0;

}

}

else if(random(20) == 1)

{

first = time(NULL);

printf(" Which Is The Deepest Ocean :? ");

printf("&bsol;n&bsol;n A) PACIFIC &bsol;t&bsol;t B) ATLANTIC &bsol;n C) ARCTIC &bsol;t&bsol;t D) INDIAN ");

scanf(" %[^&bsol;n]", dummy);

second = time(NULL);

ret = difftime(second, first);

if( (strcmpi(dummy, "a") == 0) || (strcmpi(dummy, "pacific") == 0) )

{

printf(" RIGHT ANSWER ");

flag = 1;

}

else

{

printf(" WRONG ANSWER______The Answer Is ---> A / PACIFIC ");

flag = 0;

}

}

else if(random(20) == 2)

{

first = time(NULL);

printf(" How Many Continents Are There On This Planet [EARTH] :? ");

printf("&bsol;n&bsol;n A) 4 &bsol;t&bsol;t B) 5 &bsol;n C) 6 &bsol;t&bsol;t D) 7 ");

scanf(" %[^&bsol;n]", dummy);

second = time(NULL);

ret = difftime(second, first);

if( (strcmpi(dummy, "d") == 0) || (strcmpi(dummy, "7") == 0) )

{

printf(" RIGHT ANSWER ");

flag = 1;

}

else

{

printf(" WRONG ANSWER______The Answer Is ---> D / 7 ");

flag = 0;

}

}

else if(random(20) == 3)

{

first = time(NULL);

printf(" C/C++ Are Products Of Which American Company :? ");

printf("&bsol;n&bsol;n A) MICROSOFT &bsol;t&bsol;t B) IBM &bsol;n C) BORLAND &bsol;t&bsol;t D) NONE ");

scanf(" %[^&bsol;n]", dummy);

second = time(NULL);

ret = difftime(second, first);

if( (strcmpi(dummy, "c") == 0) || (strcmpi(dummy, "borland") == 0) )

{

printf(" RIGHT ANSWER ");

flag = 1;

}

else

{

printf(" WRONG ANSWER______The Answer Is ---> C / BORLAND ");

flag = 0;

}

}

else if(random(20) == 4)

{

first = time(NULL);

printf(" The Fastest Running Mammal On This Planet [EARTH] :? ");

printf("&bsol;n&bsol;n A) CHEETAH &bsol;t&bsol;t B) CAMEL &bsol;n C) MAN &bsol;t&bsol;t D) ELEPHANT ");

scanf(" %[^&bsol;n]", dummy);

second = time(NULL);

ret = difftime(second, first);

if( (strcmpi(dummy, "a") == 0) || (strcmpi(dummy, "cheetah") == 0) )

{

printf(" RIGHT ANSWER ");

flag = 1;

}

else

{

printf(" WRONG ANSWER______The Answer Is ---> A / CHEETAH ");

flag = 0;

}

}

else if(random(20) == 5)

{

first = time(NULL);

printf(" Which Of These Is An Output Device :? ");

printf("&bsol;n&bsol;n A) SCANNER &bsol;t&bsol;t B) PRINTER &bsol;n C) KEY BOARD &bsol;t&bsol;t D) MOUSE ");

scanf(" %[^&bsol;n]", dummy);

second = time(NULL);

ret = difftime(second, first);

if( (strcmpi(dummy, "b") == 0) || (strcmpi(dummy, "printer") == 0) )

{

printf(" RIGHT ANSWER ");

flag = 1;

}

else

{

printf(" WRONG ANSWER______The Answer Is ---> B / PRINTER ");

flag = 0;

}

}

else if(random(20) == 6)

{

first = time(NULL);

printf(" World's Longest River :? ");

printf("&bsol;n&bsol;n A) NILE &bsol;t&bsol;t B) SMILE &bsol;n C) MISSISSIPII &bsol;t D) GANGA ");

scanf(" %[^&bsol;n]", dummy);

second = time(NULL);

ret = difftime(second, first);

if( (strcmpi(dummy, "a") == 0) || (strcmpi(dummy, "nile") == 0) )

{

printf(" RIGHT ANSWER ");

flag = 1;

}

else

{

printf(" WRONG ANSWER______The Answer Is ---> A / NILE ");

flag = 0;

}

}

else if(random(20) == 7)

{

first = time(NULL);

printf(" The Highest Mountain Peak In The World :? ");

printf("&bsol;n&bsol;n A) K2 &bsol;t&bsol;t B) ROCKY &bsol;n C) NEGHY &bsol;t D) HIMALAYA ");

scanf(" %[^&bsol;n]", dummy);

second = time(NULL);

ret = difftime(second, first);

if( (strcmpi(dummy, "d") == 0) || (strcmpi(dummy, "himalaya") == 0) )

{

printf(" RIGHT ANSWER ");

flag = 1;

}

else

{

printf(" WRONG ANSWER______The Answer Is ---> D / HIMALAYA ");

flag = 0;

}

}

else if(random(20) == 8)

{

first = time(NULL);

printf(" My Favourite Movie :? ");

printf("&bsol;n&bsol;n A) TITANIC &bsol;t&bsol;t B) TERMINATOR - 2 &bsol;n C) MASK &bsol;t&bsol;t D) RAMBO ");

scanf(" %[^&bsol;n]", dummy);

second = time(NULL);

ret = difftime(second, first);

if( (strcmpi(dummy, "a") == 0) || (strcmpi(dummy, "titanic") == 0) )

{

printf(" RIGHT ANSWER ");

flag = 1;

}

else

{

printf(" WRONG ANSWER______The Answer Is ---> A / TITANIC ");

flag = 0;

}

}

else if(random(20) == 9)

{

first = time(NULL);

printf(" Rabies a Disease Is caused By :? ");

printf("&bsol;n&bsol;n A) LION &bsol;t&bsol;t B) TIGER &bsol;n C) DOG &bsol;t&bsol;t D) MONKEY ");

scanf(" %[^&bsol;n]", dummy);

second = time(NULL);

ret = difftime(second, first);

if( (strcmpi(dummy, "c") == 0) || (strcmpi(dummy, "dog") == 0) )

{

printf(" RIGHT ANSWER ");

flag = 1;

}

else

{

printf(" WRONG ANSWER______The Answer Is ---> C / DOG ");

flag = 0;

}

}

else if(random(20) == 10)

{

first = time(NULL);

printf(" Capital City Of India :? ");

printf("&bsol;n&bsol;n A) NEW DELHI &bsol;t&bsol;t B) NEW YORK &bsol;n C) SYDNEY &bsol;t&bsol;t D) LONDON ");

scanf(" %[^&bsol;n]", dummy);

second = time(NULL);

ret = difftime(second, first);

if( (strcmpi(dummy, "a") == 0) || (strcmpi(dummy, "new delhi") == 0) )

{

printf(" RIGHT ANSWER ");

flag = 1;

}

else

{

printf(" WRONG ANSWER______The Answer Is ---> A / NEW DELHI ");

flag = 0;

}

}

else if(random(20) == 11)

{

first = time(NULL);

printf(" How Many Wonders Are There In This World :? ");

printf("&bsol;n&bsol;n A) 6 &bsol;t&bsol;t B) 27 &bsol;n C) 8 &bsol;t&bsol;t D) 7 ");

scanf(" %[^&bsol;n]", dummy);

second = time(NULL);

ret = difftime(second, first);

if( (strcmpi(dummy, "d") == 0) || (strcmpi(dummy, "7") == 0) )

{

printf(" RIGHT ANSWER ");

flag = 1;

}

else

{

printf(" WRONG ANSWER______The Answer Is ---> D / 7 ");