Проектування та реалізація комп'ютерної гри SHAFT в Borland C++
Об’єктно-орієнтований аналіз і процес робочого проектування. Структура даних за стосунку та розробка класів. Тестування працездатності системи класів та процес обґрунтування вибору алгоритмів. Розробка програми у вигляді гри для розважальних цілей.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | украинский |
Дата добавления | 08.11.2012 |
Размер файла | 270,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Міністерство освіти і науки України
Донецький національний технічний університет
Кафедра ПМтаІ
Пояснювальна записка
до курсової роботи
з об'єктно-орієнтованого програмування
“SHAFT”
Виконав
студент групи КЕМ-08
Григор'єв Євген
Керівники проекту
Михайлова Т.В.
Павлій В.О.
Донецьк, 2009
Реферат
Кількість сторінок 25, рисунків 14, додатків 4.
За мету в створенні даної курсової роботи ставилось отримання теоретичних знань та практичних навичок проектування і реалізації комп'ютерної гри за посередництвом об'єктно-орієнтованого програмування.
Об'єктом розробки даної курсової роботи є комп'ютерна гра, написана на мові програмування Borland C++. Інтерфейси классів програми були розроблені на основі основних принципів об'єктно-орієнтованого програмування: інкапсуляція, успадкування та поліморфізм. В програмі реалізовані складні алгоритми взаємодії об'єктів різних класів.
Результатом даної курсової роботи є комп'ютерна гра, що може бути використана з розважальною метою, а також для навчання проектуванню об'єктно-орієнтованих програм.
Зміст
Вступ
1. Постановка задачі
2. Об'єктно-орієнтований аналіз і проектування
2.1 Об'єктно-орієнтований аналіз
2.2 Об'єктно-орієнтоване проектування
3. Робоче проектування
3.1 Структури даних за стосунку
3.2 Розробка класів
3.3 Тестування працездатності системи класів
3.4 Обґрунтування вибору алгоритмів
Висновок
Перелік посилань
Додаток А. Технічне завдання
Додаток Б. Керівництво програміста
Додаток В. Керівництво оператора
Додаток Г. Текст програми
проектування тестування алгоритм програма
Вступ
В даній курсовій роботі розглядається програма, що оформлена в вигляді гри. Гра доволі проста в управлінні і має не дуже складний алгоритм.
На сьогодні багато об'єктно-орієнтоване програмування має велике поширення. ООП - одна з парадигм програмування, яка розглядає програму як множину об'єктів, що взаємодіють між собою, на відміну від традиційних поглядів, коли програму розглядали як набір підпрограм, або як перелік інструкцій комп'ютеру. Відповідно до парадигми об'єктно-орієнтованого програмування, кожний об'єкт здатний отримувати повідомлення, обробляти дані, та надсилати повідомлення іншим об'єктам.
Структура даних “клас”, що являє собою об'єктний тип даних, зовнішнє схожа на типи даних процедурно-орієнтованих мов. При цьому елементи такої структури (члени класу) можуть самі бути не тільки даними, але й методами (тобто процедурами чи функціями).
Таке об'єднання називають інкапсуляцією.
Наявність інкапсуляції достатня для об'єктності мови програмування, але це ще не означає об'єктної орієнтованості - для цього потребується наявність успадкування.
Проте навіть наявність інкапсуляції та успадкування не робить мову в повній мірі функціональною з точки зору ООП. Основні переваги проявляються тільки в тому разі, коли в мові програмування реалізований поліморфізм.
Відповідно до цього при розробці комп'ютерна гра, якій присвячена робота, й були використані основні принципи об'єктно-орієнтованого програмування.
1. Постановка задачі
Написання гри на мові С++. Має бути розроблено об'єктно-орієнтоване проектування (з використанням UML) и програмне забезпечення с використанням принципів ООП (інкапсуляції, успадкування, поліморфізму), з анімацією зображення екземпляра класу.
Після запуску програми на початку з'являється заставка, після неї меню, з якого можна або розпочати саму гру натиском клавіші “Enter”, або вийти неї натиском клавіші “Esc”, а також побачити десятку кращих результатів.
За правилами гри треба рухати квадратиком вліво чи вправо за допомогою клавіш “<” чи “>”, зістрибуючи с одних на інші острівки, які рухаються угору. Мета - протриматися якомога довше. Під час гри про поточний рахунок (кількість очок) буде інформувати лічильник. Якщо ж квадратик добереться до верху чи впаду вниз, то гра завершиться: вам запропонують ввести ім'я для збереження рахунку, якщо він увійде до десятки кращих, та знову з'явиться меню.
2. Об'єктно-орієнтований аналіз і проектування
2.1 Об'єктно-орієнтований аналіз
У грі присутні три класи.
Перший клас - TIsland. У цьому класі описані функції малювання, руху вгору острівку. Малюється та затирається острівок за допомогою функції Write(int k), де параметр k - колір острівку. Рухається острівок за допомогою функції Up().
Другий клас - TBar. Це клас гравця, квадрат. Цей клас промальовує рух вгору та вниз, реакцію на натискання клавіш < та > гравцем, перевіряє, чи є під квадратом острівок (колір під квадратом).
Третій клас - THighScore. Він зберігає та завантажує десятку кращих результатів із файлу, додає найкращий рахунок у десятку.
2.2 Об'єктно-орієнтоване проектування
Рисунок 2.1 Діаграми класів TBar і TIsland
Размещено на http://www.allbest.ru/
Рисунок 2.2 Ліаграма класу THighScore
Размещено на http://www.allbest.ru/
Рисунок 2.3 Діаграма прецедентів
3. Робоче проектування
3.1 Структури даних за стосунку
Застосунок складається із чотирьох головних функцій: Introduction(), Logo(), graph() і Play().
У функції Introduction() промальовується заставка, що з'являється на початку гри.
За допомогою функції Logo() з'являється головне меню гри, в якому можна розпочати або закінчити гру, а також продивитися десятку кращих результатів.
Функція graph() використовується для ініціалізації графічного режиму.
Функції Play() - це безпосередньо гра, у цій функції створюються об'єкти класів та робота з ними.
Об'єкт класу THighScore створюється у глобальній області.
Десятка кращих результатів зберігається у файлі “Score.dat”.
3.2 Розробка класів
Клас TBar є базовим класом, клас TIsland є нащадком класу TBar.
Даними класу TBar є два прихованих значення: x та y. Вони використовуються як координати квадратика для базового класу і острівку - для нащадка.
Фукція Write() відповідає за промальовку квадратика в першому класі, і за промальовку острівку у другому класі.
Функції Up(), Down(), Left(), Right() класу TBar рухають квадратик відповідно вгору, вниз, вліво та вправо. У класі ж TIsland використовується лише функція Up(), яка піднімає остівок угору.
Також у класі квадратика присутні функції GetY() та Getpixel(). Перша повертає поточне значення y для перевірки, чи не перетнув квадратик межі грального екрану. Друга перевіряє колір під квадратиком (рисунок 3.1): якщо він чорний, то квадратик падає униз, якщо іншого кольору, то під квадратиком є острівок і він підіймається угору.
int TBar::Getpixel()
{
return(getpixel(x,y+20)+getpixel(x+19,y+20));
}
Рисунок 3.1 Фрагмент коду
Остання функція класу TIsland - Reset(int X). Вона скидає острівок, якщо від дійшов догори, у нижнє положення, а параметр Х визначає місце, де він з'явиться.
Даними третього класу THighScore є структура list[10], яка складається з цілого значення score та строки символів name[10]. У цій структурі зберігається десятка кращих результатів.
Методи класу Load(), Save() відповідно завантажують з файлу, зберігають у файл десятку кращих результатів. Функція Add(char *name, int score) додає рахунок у десятку (рисунок 3.2), якщо від перебільшив хоч один рахунок із десятки, Print() - виводить на екран десятку кращих результатів.
void THighScore::Add(char *name, int score)
{
for(int i=0;i<10;i++)
{
if(score>=list[i].score)
{
for(int k=8;k>=i;k--)
{
list[k+1].score=list[k].score;
strncpy(list[k+1].name,list[k].name,10);
}
list[i].score=score;
strncpy(list[i].name,name,10);
break;
}
}
}
Рисунок 3.2 Фрагмент коду
3.3 Тестування працездатності системи класів
Протестуємо різні етапи гри:
Запустимо гру. На екрані має з'явитися заставка та меню гри.
Рисунок 3.3 Заставка
Рисунок 3.4 Меню гри
Натискаємо “Enter”. На екрані з'являється квадратик, острівки та рахунок.
Рисунок 3.5 Початок гри
Перевіримо рух квадратика вбік. Натиснемо вправо, потім вліво.
Рисунок 3.6 Рух квадратика вправо
Рисунок 3.7 Рух квадратика вліво
Коли квадратик впаде, на екрані з'являється запит імені для збереження результату.
Рисунок 3.8 Запит імені
3.4 Обґрунтування вибору алгоритмів
Размещено на http://www.allbest.ru/
Рисунок 3.9 Блок-схема головного алгоритму
Размещено на http://www.allbest.ru/
Рисунок 3.10 Блок-схема алгоритму функції Up() класу TIsland
Размещено на http://www.allbest.ru/
Рисунок 3.14 - Блок-схема алгоритму функції Load() класу THighScore
Висновок
В даній курсовій роботі була розроблена програма у вигляді гри, із використанням основних принципів об'єктно-орієнтованого програмування, що дозволяє упевнитися у перевазі над процедурно-орієнтованим програмуванням. Завдяки простоті коду програми гри, кожен може розібратися в усіх методах її складання.
Гра має великий потенціал для розширення та вдосконалення. Наприклад, можна додати у меню можливість змінювати швидкість руху у грі, що впливало б на складність гри, але й підвищувало кількість очок. Також гарно було б, аби деякі з острівків були іншого кольору і на них не можна було б стрибати. Або щоб на деяких острівках з'являлися спеціальні бонуси. Перспективи гри величезні, а із використанням ООП удосконалення програми гри можна провести без особливих труднощів.
Перелік посилань
1. http://ru.wikipedia.org/wiki/ООП
2. http://vkontakte.ru/club432
3. Х. Дейтел, П. Дейтел - Как программировать на C, 2006 г., 912 стр.
Додаток А
Технічне завдання
Міністерство освіти та науки України
Донецький національний технічний університет
Кафедра прикладної математики та інформатики
Затверджую
Зав. каф. ПМтаI
Башков Є.О.
__ . __ . 2009 р.
Технічне завдання
до курсової роботи з дисципліни
«Об'єктно-орієнтоване програмування»
студенту гр. КЕМ-08 Григор'єву Євгену
Тема: Проектування та реалізація комп'ютерної гри “SHAFT”
Завдання
Сценарій
За правилами гри треба рухати квадратиком вліво чи вправо, зістрибуючи с одних на інші острівки, які рухаються угору. Мета - протриматися якомога довше. Якщо ж квадратик добереться до верху чи впаду вниз, то гра завершиться.
Вимоги до програмного виробу
Має бути розроблено об'єктно-орієнтоване проектування (з використанням UML) и програмне забезпечення с використанням принципів ООП (інкапсуляції, успадкування, поліморфізму), з анімацією зображення екземпляра класу.
Курсова робота має бути виконана на мові С++ в операційній системі MS-DOS.
Вимоги до програмної документації
Пояснювальна записка до курсової роботи має супроводжуватися наступними програмними документами: опис програми; керівництво програміста; керівництво оператора; текст програми.
Графік виконання курсової роботи
№ |
Назва етапу |
Тижні |
|
1 |
Видача завдання до курсової роботи |
1-2 |
|
2 |
Постановка задачі. Визначення вимог до програми |
1-2 |
|
3 |
Технічне проектування |
2 |
|
4 |
Робоче проектування |
4-5 |
|
5 |
Написання програми |
6-10 |
|
6 |
Комплексне налагодження и тестування |
11-12 |
|
7 |
Написання пояснювальної записки |
13-15 |
|
8 |
Захист курсової |
16-18 |
Дата видачі завдання 11.02.09
Завдання прийняв до виконання Григор'єв Є.А.
Керівники проекту Михайлова Т.В.
Павлій В.О.
Додаток Б.
Керівництво програміста
Призначення програми - комп'ютерна гра, призначена для розважальних цілей. Мінімальні системні вимоги: операційна система Windows XP або DOS, монітор з мінімальним розширенням екрану 640 на 480 пікселів, відеокарта, клавіатура.
Програма працює в графічному, повноекранному режимі. Управління передається через методи об'єктів. Інформація, що отримується від користувача - натискання клавіш - від цього залежить подальший хід гри. Вихідні дані - сама гра, рух об'єктів.
Повідомлення про помилку можуть виникати, якщо в папці із грою відсутній файл драйверів “EGAVGA.BGI” або файл із даними про десятку кращих результатів “SCORE.DAT”.
Додаток В.
Керівництво оператора
Розроблена програма у вигляді гри для розважальних цілей.
Мінімальні системні вимоги: операційна система Windows XP або DOS, монітор з мінімальним розширенням екрану 640 на 480 пікселів, відеокарта, клавіатура.
Можливі помилки, якщо файл “EGAVGA.BGI” буде відсутній у папці з грою.
Додаток Г.
Текст програми
typedef struct
{
int score;
char name[10];
}HighScoreList;
//-------------------------------------
class THighScore
{
private:
HighScoreList list[10];
public:
THighScore();
void Load();
void Save();
void Print();
void Add(char *name, int score);
};
//-------------------------------------
class TBar
{
protected:
int x;
int y;
private:
void Write(int k);
public:
TBar();
void Up();
void Down();
void Left();
void Right();
int GetY();
int Getpixel();
};
//-------------------------------------
class TIsland : public TBar
{
private:
void Write(int k);
public:
TIsland(int X);
void Up();
void Reset(int X);
};
//-------------------------------------
THighScore *highscore;
#include <graphics.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dos.h>
#include "SHAFT.H"
//-------------------------------------
THighScore::THighScore()
{
for(int i=0; i<10; i++)
{
list[i].score=0;
strcpy(list[i].name, "");
}
}
//-------------------------------------
void THighScore::Print()
{
setcolor(YELLOW);
settextstyle(0,0,2);
outtextxy(100, 170,"HIGH SCORE");
settextstyle(0,0,1);
int y=200;
char buffer[10];
for(int i=0;i<10;i++)
{
y+=20;
sprintf(buffer,"%d.",i+1);
outtextxy(110,y,buffer);
outtextxy(135,y,list[i].name);
sprintf(buffer,"%d",list[i].score);
outtextxy(230,y,buffer);
}
}
//-------------------------------------
void THighScore::Add(char *name, int score)
{
for(int i=0;i<10;i++)
{
if(score>=list[i].score)
{
for(int k=8;k>=i;k--)
{
list[k+1].score=list[k].score;
strncpy(list[k+1].name,list[k].name,10);
}
list[i].score=score;
strncpy(list[i].name,name,10);
break;
}
}
}
//-------------------------------------
void THighScore::Load()
{
int r;
FILE *f;
if((f=fopen("Score.dat","r"))!=NULL)
{
for(int i=0;i<10;i++)
{
fscanf(f,"%s", list[i].name);
fscanf(f,"%d", &r); list[i].score=r;
}
fclose(f);
}
}
//-------------------------------------
void THighScore::Save()
{
FILE *f;
char buffer[10];
if((f=fopen("Score.dat","w"))!=NULL)
{
for(int i=0;i<10;i++)
{
fprintf(f,"%s ",list[i].name);
sprintf(buffer,"%d",list[i].score);
fprintf(f,"%s ",buffer);
}
fclose(f);
}
}
//-------------------------------------
TIsland::TIsland(int X) : TBar()
{
x=10+X*80;
y=390;
}
//-------------------------------------
void TIsland::Write(int k)
{
setfillstyle(1,k);
bar(x,y,x+79,y+19);
}
//-------------------------------------
void TIsland::Up()
{
if(y>10)
{
Write(0);
y-=1;
Write(12);
}
}
//-------------------------------------
void TIsland::Reset(int X)
{
Write(0);
x=10+X*80; y=390;
}
//-------------------------------------
void TBar::Write(int k)
{
setfillstyle(1,k);
bar(x,y,x+19,y+19);
}
//-------------------------------------
TBar::TBar()
{
x=150; y=20;
Write(4);
}
//-------------------------------------
void TBar::Up()
{
Write(0);
y-=1;
Write(4);
}
//-------------------------------------
void TBar::Down()
{
if(y<389)
{
Write(0);
y+=1;
Write(4);
}
}
//-------------------------------------
void TBar::Left()
{
if(x>10 && (getpixel(x-1,y)+getpixel(x-1,y+19))==0)
{
Write(0);
x-=5;
Write(4);
}
}
//-------------------------------------
void TBar::Right()
{
if(x<310 && (getpixel(x+20,y)+getpixel(x+20,y+19))==0)
{
Write(0);
x+=5;
Write(4);
}
}
//-------------------------------------
int TBar::Getpixel()
{
return(getpixel(x,y+20)+getpixel(x+19,y+20));
}
//-------------------------------------
int TBar::GetY()
{
return(y);
}
//-------------------------------------
void Introduction()
{
int i=0,x=0,y=0,x0=0,y0=20,k=4,r=2,R=1,kl,maxx=getmaxx(),maxy=getmaxy(),maxY=maxy;
randomize();
setfillstyle(1,7);
bar(x,y,x+19,y+19);
while(i==0)
{
while(r==R)
R=1+random(15);
r=R;
if(maxY<y0)
break;
delay(4);
switch(k)
{
case 1:// UP
if(y>y0+19)
{
y=y-20;
setfillstyle(1,r);
bar(x,y,x+19,y+19);
}
else
{
k=4;
y0=y0+20;
}
break;
case 2://DOWN
if(y<maxy-19)
{
y=y+20;
setfillstyle(1,r);
bar(x,y,x+19,y+19);
}
else
{
k=3;
maxy=maxy-20;
}
break;
case 3://LEFT
if(x>x0+19)
{
x=x-20;
setfillstyle(1,r);
bar(x,y,x+19,y+19);
}
else
{
k=1;
x0=x0+20;
}
break;
case 4://RiGHT
if(x<maxx-19)
{
x=x+20;
setfillstyle(1,r);
bar(x,y,x+19,y+19);
}
else
{
k=2;
maxx=maxx-20;
}
break;
}
}
}
//-------------------------------------
void Play()
{
cleardevice();
setbkcolor(0);
setcolor(WHITE);
setlinestyle(0,0,0);
line(9,9,330,9);
line(9,9,9,410);
line(9,410,330,410);
line(330,9,330,410);
setcolor(YELLOW);
settextstyle(0,0,3);
outtextxy(435, 100,"SCORE");
setcolor(WHITE);
settextstyle(0,0,2);
outtextxy(35, 435,"Press ESC to stop");
int game=0,
key,
k=0,
i=0,
score=0;
char buffer[10],name[10],*p;
TBar *Bar=new TBar;
randomize();
TIsland island[5]={TIsland(random(4)),TIsland(random(4)),
TIsland(random(4)),TIsland(random(4)),
TIsland(random(4)),};
while(game==0)
{
delay(1);
if(kbhit()!=0)
{
key=getch();
switch(key)
{
case 75://Vlevo
Bar->Left();
break;
case 77://Vpravo
Bar->Right();
break;
case 27://Esc
game=-1;
break;
}
}
if(Bar->Getpixel()==0)
Bar->Down();
if(Bar->Getpixel()==0)
Bar->Down();
if(Bar->Getpixel()==0)
Bar->Down();
else
{
Bar->Up();
Bar->Up();
}
if(k==0)
{
if(i<5)
i++;
k=75;
score++;
setfillstyle(1,0);
bar(350,180,640,300);
setcolor(YELLOW);
settextstyle(0,0,10);
sprintf(buffer,"%d",score);
if(score<10)
outtextxy(455,200,buffer);
else
if(score<100)
outtextxy(410,200,buffer);
else
outtextxy(370,200,buffer);
}
k--;
for(int j=0;j<i;j++)
island[j].Up();
for(j=0;j<5;j++)
{
if(island[j].GetY()==10)
island[j].Reset(random(4));
}
if(Bar->GetY()==10||Bar->GetY()==389)
break;
}
restorecrtmode();
textmode(C4350);
clrscr();
gotoxy(27,25);
cprintf("Enter your name: ");
p=cgets(name);
highscore->Add(p,score);
setgraphmode(getgraphmode());
}
//-------------------------------------
void Logo()
{
cleardevice();
setbkcolor(RED);
setcolor(GREEN);
settextstyle(0,0,15);
outtextxy(35, 20,"SHAFT");
setcolor(LIGHTGRAY);
setlinestyle(0,0,3);
line(0,137,640,137);
line(0,140,640,140);
setcolor(LIGHTBLUE);
settextstyle(0,0,3);
outtextxy(420, 200,"ENTER");
outtextxy(380, 230,"to start");
outtextxy(440, 320,"ESC");
outtextxy(390, 350,"to quit");
setcolor(WHITE);
settextstyle(0,0,0);
outtextxy(350, 445,"WWW: http://vkontakte.ru/id10238537");
outtextxy(350, 460,"E-mail: eugenegrig@gmail.com");
highscore->Print();
}
//-------------------------------------
void graph()
{
int gdriver=VGA,gmode=VGAHI,errorcode;
initgraph(&gdriver,&gmode,"");
errorcode=graphresult();
if(errorcode!=grOk)
{
printf("Oshibka grafiki:: %s\n", grapherrormsg(errorcode));
printf("Nagmite lubuy klavishy dly vihoda.");
getch();
exit(1);
}
}
//-------------------------------------
void main(void)
{
int game=0,key;
graph();
highscore=new THighScore;
Introduction();
highscore->Load();
while(game==0)
{
Logo();
do
key=getch();
while(key!=13 && key!=27);
switch(key)
{
case 13://Enter
Play();
break;
case 27://Esc
game=-1;
break;
}
}
highscore->Save();
closegraph();
}
Размещено на Allbest.ru
Подобные документы
Принципи об'єктно-орієнтованого підходу. Розробка програмного комплексу з використанням цього алгоритму і користувальницьких класів на мові програмування С++. Реалізація простого відкритого успадкування. Тестування працездатності системи класів.
курсовая работа [98,0 K], добавлен 06.05.2014Розроблення графічних схем класів та алгоритмів. Контрольний приклад та аналіз результатів комп’ютерної реалізації програми, її лістінг. Проектування інтерфейсу користувача. Послідовність побудування класів "Особа", "Службовець" й "Організація".
курсовая работа [839,0 K], добавлен 16.06.2014Об’єктно-орієнтоване програмування мовою С++. Основні принципи об’єктно-орієнтованого програмування. Розробка класів з використанням технології візуального програмування. Розробка класу classProgressBar. Базовий клас font. Методи тестування програми.
курсовая работа [211,3 K], добавлен 19.08.2010Концепції об'єктно-орієнтованого програмування. Методи створення класів. Доступ до методів базового класу. Структура даних, функції. Розробка додатку на основі діалогових вікон, програми меню. Засоби розробки програмного забезпечення мовами Java та С++.
курсовая работа [502,5 K], добавлен 01.04.2016Аналіз об'єктів дослідження, проектування баз даних. Розробка програмного забезпечення для роботи зі спроектованою базою даних. Реалізація індексів, опис метаданих в середовищі MySQL. Специфікація DDL для MySQL, протокол тестування DDL-сценарії.
контрольная работа [389,9 K], добавлен 05.01.2014Розробка програмного додатку - гри "Jump way", яка поєднала в собі сучасні методи побудови 2D ігор. Обґрунтування вибору мови програмування. Проектування UML-діаграм класів. Користувацький інтерфейс. Програмна реалізація гри. Інструкція користувача.
курсовая работа [1,2 M], добавлен 09.01.2017Реалізація, за допомогою технології Windows Forms, програми обліку даних про волонтерів та подій, на які вони зареєстровані. можливості об'єктно-орієнтованого програмування. Створення класів. Методи, властивості. Використання Multiple Document Interface.
курсовая работа [1,5 M], добавлен 02.12.2015Редагування за допомогою текстового редактора NotePad вхідного файлу даних. Програмна реалізація основного алгоритму з використанням засобів об'єктно-орієнтованого програмування. Об’ява та опис класів і об'єктів. Розробка допоміжних програмних засобів.
курсовая работа [69,4 K], добавлен 14.03.2013Характеристика і функції телефонних довідників. Визначення об'єктів і класів і залежностей (зв'язків) між ними. Побудова діаграми ієрархії класів. Реалізація програми в середовищі Borland Delphi. Її інтерфейс і демонстрація можливостей. Тестовий приклад.
курсовая работа [349,3 K], добавлен 25.01.2016Характеристика програмної взаємодії людини з комп'ютером. Визначення функціональних та експлуатаційних потреб при голосовому управлінні. Реалізація програмного забезпечення. Розробка тестів та тестування системи. Аналіз ефективності даної програми.
курсовая работа [2,8 M], добавлен 15.10.2014