Реферат: Застосування BORLAND C++ BUILDER для створення ігрових програм

Міністерство освіти інауки УкраїниЗакарпатськийдержавний університетФАКУЛЬТЕТ ІНФОРМАТИКИ

КАФЕДРА ІНФОРМАЦІЙНИХ УПРАВЛЯЮЧИХСИСТЕМ ТА ТЕХНОЛОГІЙ

Реєстраційний №________

Дата ___________________

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

Тема:

Застосування BORLAND C++ BUILDER длястворення ігрових програм

Рекомендована до захисту

“____” __________ 2008р.

Робота захищена

“____” __________ 2008р.

з оцінкою

_____________________

Підписи членів комісії


Зміст

ВступТеоріяПрактична частинаВисновкиЛітература

Вступ

Новітня система об‘эктно — орієнтованогопрограмування C++ Builder виробництва корпорації Borland призначена дляопераційних систем Windows 95 та NT. Інтегроване середовище C++ Builderзабезпечує швидкість візуальної розробки, продуктивність повторновикористовуваних компонентів у сполученні з міццю мовних засобів C++,удосконаленими інструментами та різномасштабними засобами доступу до баз даних.C++ Builder може бути використаний скрізь, де потрібно доповнити існуючідодатки розширеним стандартом мови C++, підвищити швидкодія та додатикористувальницькому інтерфейсу якості професійного рівня.

Задачею нашої роботи, буде розробкапростої ігрової програми “О счасливчик” з використанням дано мови програмування(Borland C++ Builder). В теоретичній частині наведемо основні відомості проінструмент розробки ігрового проекту.


Теорія

Застосування BORLAND C++ BUILDERдля створення ігрових програм Borland C++ Builder — випущененедавно компанією Borland засіб швидкої розробки проектів, що дозволяєстворювати проекту мовою C++, використовуючи при цьому середовище розробки табібліотеку компонентів Delphi. У даній частині роботи розглядається середовищерозробки C++ Builder та основні прийоми, застосовувані при проектуваннікористувальницького інтерфейсу. Середовищерозробки C++ Builder

C++ Builder являє собою SDI-додаток, головне вікно якогомістить інструментальну панель, що набудоване (ліворуч) і палітру компонентів(праворуч). Крім цього, при запуску C++ Builder з'являються вікно інспектораоб'єктів (ліворуч) і форма нового проекту (праворуч). Під вікном форми проектуперебуває вікно редактора коду.

/>

Рис.1. Середовище розробки C++ Builder

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

КомпонентиC++ Builder

Компоненти розділяються на видимі (візуальні) і невидимі(невізуальні). Візуальні компоненти з'являються під час виконання точно таксамо, як і під час проектування. Прикладами є кнопки та редагують поля, що.Невізуальні компоненти з'являються під час проектування як піктограми на формі.Вони ніколи не видні під час виконання, але мають певну функціональність(наприклад, забезпечують доступ до даних, викликають стандартні діалоги Windows95та ін.)

/>

Рис. 2. Приклад використання видимих і невидимих компонентів

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

Кожен компонент C++Builder має три різновиди характеристик: властивості, події та методи.

Якщо вибрати компонентіз палітри та додати його до форми, інспектор об'єктів автоматично покажевластивості та події, які можуть бути використані з тім компонентом. У верхнійчастині інспектора об'єктів є список, що випадає, що дозволяє вибиратипотрібний об'єкт із наявних на формі.

/>

Рис.3. Інспектор об'єктів

Властивостікомпонентів

Властивості є атрибутами компонента, що визначають йогозовнішній вигляд і поводження. Багато властивостей компонента в колонкувластивостей мають значення, яке встановлюється за замовчуванням (наприклад,висота кнопок). Властивості компонента відображаються а сторінці властивостей(Properties). Інспектор об'єктів відображає опубліковані (published)властивості компонентів. Крім published-властивостей, компоненти можуть інайчастіше мають загальні (public), опубліковані властивості, які доступнітільки під час виконання проекту. Інспектор об'єктів використається дляустановки властивостей під час проектування. Список властивостей розташовуєтьсяна сторінці властивостей інспектори об'єктів. Можна визначити властивості підчас проектування або написати код для видозміни властивостей компонента під часвиконання проекту.

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

Події

Сторінка подій (Events) інспектори об'єктів показує списокподій, розпізнаваних компонентом (програмування для операційних систем ізграфічним користувальницьким інтерфейсом, зокрема, для Windows 95 або WindowsNT пре думає опис реакції проекту на ті або інші події, а сама операційнасистема займається постійним опитуванням комп'ютера з метою виявлення настанняякої-небудь події). Кожен компонент має свій власний набір оброблювачів подій.В C++ Builder варто писати функції, називані оброблювачами подій, і зв'язуватиподії із цими функціями. Створюючи оброблювач тої чи іншої події, ви доручаєтепрограмі виконати написану функцію, якщо ця подія відбудеться.

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

/>

Рис.4. Прототип оброблювача подій.

Методи

Метод є функцією, що пов'язана з компонентом, і якаоголошується як частина об'єкта. Створюючи оброблювачі подій, можна викликатиметоди, використовуючи наступну нотацію: ->, наприклад:

Edit1->Show();

Відзначимо, що при створенні форми пов'язані з нею модуль ізаголовний файл із розширенням *.h генеруються обов'язково, тоді як пристворенні нового модуля він не зобов'язаний бути пов'язаний з формою(наприклад, якщо в ньому втримуються процедури розрахунків). Імена форми тамодуля можна змінити, причому бажано зробити це відразу після створення, покина них не з'явилося багато посилань в інших формах і модулях.

Менеджерпроектів

Файли, що утворять додаток – форми та модулі — зібрані впроект. Менеджер проектів показує списки файлів і модулів проекту та дозволяєстворювати навігацію між ними. Можна викликати менеджер проектів, вибравшипункт меню View/Project Manager. За замовчуванням знову створений проектодержує ім'я Project1.cpp.

/>

Рис.5. Менеджер проектів

За замовчуванням проектспочатку містить файли для однієї форми та вихідного коду одного модуля. Однакбільшість проектів містять кілька форм і модулів. Щоб додати модуль або формудо проекту, потрібно клацнути правою кнопкою миші та вибрати пункт New Form зконтекстного меню. Можна також додавати існуючі форми та модулі до проекту,використовуючи кнопку Add контекстного меню менеджера проектів і вибираючимодуль або форму, яку потрібно додати. Форми та модулі можна видалити вбудь-який момент протягом розробки проекту. Однак, через те, що форма зв'язанізавжди з модулем, не можна видалити одне без видалення іншого, за виняткомслучаючи, коли модуль не має зв'язку з формою. Видалити модуль із проектуможна, використовуючи кнопку Remove менеджера проектів.

Якщо вибрати кнопкуOptions у менеджері проектів, відкриється діалогова панель опцій проекту, уякій можна вибрати головну форму проекту, визначити, які форми будутьстворюватися динамічно, які параметри компіляції модулів (у тому числістворених в Delphi 2.0, тому що C++ Builder може включати їх у проекти) ікомпонування.

/>

Рис. 6. Установка опцій проекту

Важливим елементомсередовища розробки C++ Builder є контекстне меню, яке з‘являється принатисканні на праву клавішу миші та дозволяє швидкий доступ до найбільше частовикористовуваних команд.

Зрозуміло, C++ Builderмає убудовану систему контекстно-контекстно-залежної допомоги, доступної длябудь-якого елемента інтерфейсу та довідкової інформації, що є великим джерелом,про C++ Builder.

Створенняпроектів у З++ Builder

Першим кроком у розробці проекту C++ Builder є створенняпроекту. Файли проекту містять згенерований автоматично вихідний текст, що стаєчастиною проекту, коли воно скомпільовано та підготовлене до виконання. Щобстворити новий проект, потрібно вибрати пункт меню File/New Application.

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 __fastcallTForm1::Button1Click(TObject *Sender)

{

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

{

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

Edit1->Text ="";

}

}

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

/>

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

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

/>

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

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

void __fastcallTForm1::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("\n\n WELCOME TO WHO'LL BE AMILLIONAIRE "

          "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"

          "\n\n\t $$$$$$$$$$$$$$$$$$$$$ MAINMENU $$$$$$$$$$$$$$$$$$$$ "

          "\n$ $ "

          "\n$ $ "

          "\n\t $ Choice 1: READ THE RULES OFTHE GAME$ "

          "\n$ $ "

          "\n\t $ Choice 2: ENTER THE NAME'SOF 10 CONTENDERS $ "

                    "\n$ $ "

          "\n\t $ Choice 3: PLAY GAME$ "

                    "\n$ $ "

          "\n\t $ Choice 4: EXIT$ "

                    "\n$ $ "

          "\n\t$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ");

 printf("\n\n\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 BEA MILLIONAIRE ] :? ");

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

          scanf(" %[^\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 AnswerIs ---> B / GURJIT SINGH ");

          flag = 0;

          }

 }

 else if(random(20) == 1)

 {

          first = time(NULL);

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

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

          scanf(" %[^\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 AnswerIs ---> A / PACIFIC ");

          flag = 0;

          }

 }

 else if(random(20) == 2)

 {

          first = time(NULL);

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

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

          scanf(" %[^\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 AnswerIs ---> D / 7 ");

          flag = 0;

          }

 }

 else if(random(20) == 3)

 {

          first = time(NULL);

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

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

          scanf(" %[^\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 AnswerIs ---> C / BORLAND ");

          flag = 0;

          }

 }

 else if(random(20) == 4)

 {

          first = time(NULL);

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

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

          scanf(" %[^\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 AnswerIs ---> A / CHEETAH ");

          flag = 0;

          }

 }

 else if(random(20) == 5)

 {

          first = time(NULL);

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

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

          scanf(" %[^\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 AnswerIs ---> B / PRINTER ");

          flag = 0;

          }

 }

 else if(random(20) == 6)

 {

          first = time(NULL);

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

          printf("\n\n A) NILE \t\t B) SMILE \nC) MISSISSIPII \t D) GANGA ");

          scanf(" %[^\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 AnswerIs ---> A / NILE ");

          flag = 0;

          }

 }

 else if(random(20) == 7)

 {

          first = time(NULL);

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

          printf("\n\n A) K2 \t\t B) ROCKY \nC) NEGHY \t D) HIMALAYA ");

          scanf(" %[^\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 AnswerIs ---> D / HIMALAYA ");

          flag = 0;

          }

 }

 else if(random(20) == 8)

 {

          first = time(NULL);

          printf(" My Favourite Movie :?");

          printf("\n\n A) TITANIC \t\t B)TERMINATOR — 2 \n C) MASK \t\t D) RAMBO ");

          scanf(" %[^\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 AnswerIs ---> A / TITANIC ");

          flag = 0;

          }

 }

 else if(random(20) == 9)

 {

          first = time(NULL);

          printf(" Rabies a Disease Is causedBy :? ");

          printf("\n\n A) LION \t\t B) TIGER \nC) DOG \t\t D) MONKEY ");

          scanf(" %[^\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 AnswerIs ---> C / DOG ");

          flag = 0;

          }

 }

 else if(random(20) == 10)

 {

          first = time(NULL);

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

          printf("\n\n A) NEW DELHI \t\t B) NEWYORK \n C) SYDNEY \t\t D) LONDON ");

          scanf(" %[^\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 AnswerIs ---> A / NEW DELHI ");

          flag = 0;

          }

 }

 else if(random(20) == 11)

 {

          first = time(NULL);

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

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

          scanf(" %[^\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 AnswerIs ---> D / 7 ");

          flag = 0;

          }

 }

 else if(random(20) == 12)

 {

          first = time(NULL);

          printf(" Tan 45 Degree :? ");

          printf("\n\n A) 1/2 \t\t B) 2 \n C) 1\t\t\t D) 0 ");

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

          second = time(NULL);

          ret = difftime(second, first);

          if( (strcmpi(dummy, «c») == 0)|| (strcmpi(dummy, «1») == 0) )

          {

          printf(" RIGHT ANSWER ");

          flag = 1;

          }

          else

          {

          printf(" WRONG ANSWER______The AnswerIs ---> C / 1 ");

          flag = 0;

          }

 }

 else if(random(20) == 13)

 {

          first = time(NULL);

          printf(" Oracle 8i Is A :? ");

          printf("\n\n A) LANGUAGE \t\t B)SUBJECT \n C) DATABASE \t\t D) NONE ");

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

          second = time(NULL);

          ret = difftime(second, first);

          if( (strcmpi(dummy, «c») == 0)|| (strcmpi(dummy, «database») == 0) )

          {

          printf(" RIGHT ANSWER ");

          flag = 1;

          }

          else

          {

          printf(" WRONG ANSWER______The AnswerIs ---> C / DATABASE");

          flag = 0;

          }

 }

 else if(random(20) == 14)

 {

          first = time(NULL);

          printf(" C++ Was Developed By :?");

          printf("\n\n A) BJARNE STROUSTRUP\t\t B) GURJIT \n C) DENNIS RITCHIE \t\t D) KERNINGHAM ");

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

          second = time(NULL);

          ret = difftime(second, first);

          if( (strcmpi(dummy, «a») == 0)|| (strcmpi(dummy, «bjarne stroustrup») == 0) )

          {

          printf(" RIGHT ANSWER ");

          flag = 1;

          }

          else

          {

          printf(" WRONG ANSWER______The AnswerIs ---> A / BJARNE STROUSTRUP ");

          flag = 0;

          }

 }

 else if(random(20) == 15)

 {

          first = time(NULL);

          printf(" Which Lizard Can ChangeColors :? ");

          printf("\n\n A) WALL \t\t B) MONSTER\n C) CHAMELEON \t\t D) NONE ");

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

          second = time(NULL);

          ret = difftime(second, first);

          if( (strcmpi(dummy, «c») == 0)|| (strcmpi(dummy, «chameleon») == 0) )

          {

          printf(" RIGHT ANSWER ");

          flag = 1;

          }

          else

          {

          printf(" WRONG ANSWER______The AnswerIs ---> C / CHAMELEON ");

          flag = 0;

          }

 }

 else if(random(20) == 16)

 {

          first = time(NULL);

          printf(" Mowgli Is a Character Of ThePopular Comic :? ");

          printf("\n\n A) CASPER \t\t B) JUNGLEBOOK \n C) ANASTITIA \t\t D) ALLADIN ");

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

          second = time(NULL);

          ret = difftime(second, first);

          if( (strcmpi(dummy, «b») == 0)|| (strcmpi(dummy, «jungle book») == 0) )

          {

          printf(" RIGHT ANSWER ");

          flag = 1;

          }

          else

          {

          printf(" WRONG ANSWER______The AnswerIs ---> B / JUNGLE BOOK ");

          flag = 0;

          }

 }

 else if(random(20) == 17)

 {

          first = time(NULL);

          printf(" Author Of The Jungle Book :?");

          printf("\n\n A) G B SHAW \t\t\t\t B)PREM CHAND \n C) WILLIAM SHAKESPEARE \t\t D) RUDYARD CIPLING ");

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

          second = time(NULL);

          ret = difftime(second, first);

          if( (strcmpi(dummy, «d») == 0)|| (strcmpi(dummy, «rudyard cipling») == 0) )

          {

          printf(" RIGHT ANSWER ");

          flag = 1;

          }

          else

          {

          printf(" WRONG ANSWER______The AnswerIs ---> D / RUDYARD CIPLING ");

          flag = 0;

          }

 }

 else if(random(20) == 18)

 {

          first = time(NULL);

          printf(" India Is a :? ");

          printf("\n\n A) PENNINSULA \t\t B)ISLAND \n C) PLATEAU \t\t D) NONE ");

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

          second = time(NULL);

          ret = difftime(second, first);

          if( (strcmpi(dummy, «a») == 0)|| (strcmpi(dummy, «penninsula») == 0) )

          {

          printf(" RIGHT ANSWER ");

          flag = 1;

          }

          else

          {

          printf(" WRONG ANSWER______The AnswerIs ---> A / PENNINSULA ");

          flag = 0;

          }

 }

 else if(random(20) == 19)

 {

          first = time(NULL);

          printf(" Earth's Only NaturalSatellite :? ");

          printf("\n\n A) SUN \t\t B) PLUTO \nC) JUPITER \t\t D) MOON ");

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

          second = time(NULL);

          ret = difftime(second, first);

          if( (strcmpi(dummy, «d») == 0)|| (strcmpi(dummy, «moon») == 0) )

          {

          printf(" RIGHT ANSWER ");

          flag = 1;

          }

          else

          {

          printf(" WRONG ANSWER______The AnswerIs ---> D / MOON ");

          flag = 0;

          }

 } else

 {

          goto raj;

         }

 }

 return(ret);

 }

 void rules()

 {

 clrscr();

 printf(«Hello And Welcome To WHO'LL BE AMILLIONAIRE „);

 printf(“ \n\n»);

 printf(" This Game Will Be Played Using 10Contenders One Out Of 10,");

 printf(" Will \n Be Selected In The FirstRound: FASTEST CONTENDER FIRST \n\n");

 printf(" He/She Will Then be Asked 15Questions And Shall Win Money[$] As: \n");

 printf("\n Question No. 1 -> $1000 "

          "\n Question No. 2 -> $2000 "

          "\n Question No. 3 -> $3000 "

          "\n Question No. 4 -> $4000 "

          "\n Question No. 5 -> $5000[ 1stHURDLE ] "

          "\n Question No. 6 -> $10,000"

          "\n Question No. 7 -> $20,000"

          "\n Question No. 8 -> $40,000"

          "\n Question No. 9 -> $80,000"

          "\n Question No.10 -> $1,60,000"

          "\n Question No.11 -> $3,20,000 [2nd HURDLE ] "

          "\n Question No.12 -> $9,60,000"

          "\n Question No.13 -> $28,80,000"

          "\n Question No.14 -> $86,40,000"

          "\n Question No.15 -> $25,920,000[ You Are a Millionaire ]");

 printf("\n\n\n To CONTINUE READING The RulesOf This Game Please Press ENTER.....");

 getch();

 printf(" \n\n (** If You Fail To Cross The[1st HURDLE] You Take Home $ 0 **)");

 printf(" \n (** Cross [1st HURDLE] = You Winatleast $10,000 **) \n (** Cross [2nd HURDLE] = You Win Atleast $4,80,000 **)");

 getch();

 }

 void contend()

 {

 int j;

 clrscr();

 printf(" \n\n Please Enter The 10 Contenders:\n\n");

 for(j = 0; j < n; j++)

 {

          printf("\n CONTENDER %2d: ",j+1);

          scanf(" %[^\n]", &name[j]);

 }

 }

 void game()

 {

          int que, i, val=0;

          long sum = 0;

          float ret=0, temp = 100;

          clrscr();

          for(i = 0; i < n; i++)

          {

          printf("\n\n %d. %s — ", i+1,name[i]);

          ret = question();

          if(flag == 1)

          {

          printf("\n\n %s You took %fseconds", name[i], ret);

          take = flag;

                   if(ret < temp)

                   {

                    temp = ret;

                    val = i;

                   }

          }

 }

 if(take == 0)

 {

          printf("\n\n \a NOBODY QUALIFIES FORTHE FINAL ");

          getch();

 }

 else if(take == 1)

 {

          printf(" \n\n Congratulations %s YouShall Play Because You Took %f seconds ", name[val], temp);

          printf(" \n\n\n %s, Let's PLAYWHO'LL BE A MILLIONAIRE ........PLEASE PRESS ANY KEY ", name[val] );

          getch();

          for(i = 0; i < 15; i++)

          {

          printf("\n\n Here's Your %d Question%s --> ", i+1, name[val]);

          printf("\n");

          question();

          if(flag == 1 && i <= 4)

          {

                    printf("\n\n %s You WIN $%ld ", name[val], sum += 1000);

          }

          else if(flag == 0 && i <= 4)

          {

                    printf("\n\n\a %s SORRY YouWIN $ 0", name[val]);

                    getch();

                    goto close;

          }

          if(i == 4)

          {

                    textcolor(LIGHTMAGENTA);

                    printf("\n\n");

                    cprintf(" Congratulations%s — $$ Crossing The 1st HURDLE — YOU WIN $5000 ", name[val]);

          }

          if( (flag == 1) && (i > 4&& i <= 10) )

          {

                    printf("\n\n %s You WIN $%ld ", name[val], sum *= 2);

          }

          else if( (flag == 0) && (i > 4&& i <= 10) )

          {

                    printf("\n\n\a %s SORRY YouWIN $ 10,000", name[val]);

                    getch();

                    goto close;

          }

          if(i == 10)

          {

                    textcolor(LIGHTGREEN);

                    printf("\n\n");

                    cprintf(" Congratulations%s — $$ Crossing The 2nd HURDLE — YOU WIN $3,20,000 ", name[val]);

          }

          if( (flag == 1) && (i > 10&& i <= 14) )

          {

                    printf("\n\n %s You WIN $%ld ", name[val], sum *= 3);

          }

          else if( (flag == 0) && (i > 10&& i <= 14) )

          {

                    printf("\n\n\a %s SORRY YouWIN $ 3,20,000", name[val]);

                    getch();

                    goto close;

          }

          if(i == 14)

          {

                    for(int k = 0; k < 1000; k++)

                    {

                    textbackground(LIGHTRED);

                    textcolor(LIGHTGREEN);

                    cprintf("_ MILLIONAIRE_");

                    }

          }

                    getch();

          } // END OF for

 }// END OF else

 close:

 }// END OF game()

 main()

 {

 clrscr();

 while(choice != 4)

 {

          choice = 0;

          textcolor(LIGHTCYAN);

          menu();

          switch(choice)

          {

                    case 1: textcolor(LIGHTGREEN);

                             rules();

                             break;

                    case 2:textcolor(LIGHTMAGENTA);

                             contend();

                             break;

                    case 3: textcolor(LIGHTCYAN);

                             game();

                             break;

                    case 4: break;

                    default: printf("\n\aSorryWrong Choice Entered, ENTER ->> [1/2/3/4] ");

                             getch();

                             getch();

          }

 }

 return(0);

 }


Результат роботи програми

/>

Скрін 1. Загальний текстовий інтерфейс ігрової програми

/>

Скрін 2. Початок гри

/>

Скрін 3. Етапи гри (варіанти відповідей)

Висновки

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

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


Література

[1] Касаткин А.И., Вальвачев А.Н.Профессиональное прогрпммирование на языке Си. Мн., 1992. 240 С.

[2] Бруно Бабэ. Просто и ясно оBorland C++. М., 1996. 400 С.

[3] Справочник по классам BorlandC++ 4.0. К., 1994. 256 С.

[4] ObjectWindows для C++. К.,1993., 208 С.

еще рефераты
Еще работы по информатике, программированию