Розробка програми "Відбивання кульки"

Функціональні можливості програми. Вимоги до програмної реалізації. Структурні зв’язки між функціями програми. Ініціалізація і об’явлення змінних. Виведення на екран головного меню. Розробка тестів, тестування та перевірка. Алгоритм роботи програми.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 19.11.2017
Размер файла 42,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Вступ

Розвиток обчислювальної техніки супроводжується створенням нових і вдосконаленням існуючих мов програмування--засобів спілкування програмістів з ЕОМ. Під мовою програмування розуміють правила подання даних і запису алгоритмів їх обробки, що автоматично виконуються ЕОМ. У більш абстрактному вигляді, - це засіб створення програмних моделей об'єктів і явищ зовнішнього світу. На сьогодні вже створено десятки різних мов (як примітивних, так і близьких до мови людини).

Їх розвиток невпинно йшов від першої мови асемблера до мов високого рівня і до систем автоматизованого проектування. Під час розробки мов програмування за мету ставилося розробити мову, яка могла б виконувати всі необхідні для роботи функції і при цьому не була б складною у використанні.

З часом мови програмування ставали все ефективнішими та зрозумілими навіть для рядових користувачів. За їх допомогою стало можливим одним рядком описувати функції, для опису яких мовами молодших поколінь потрібно було б сотні-тисячі рядків початкового коду.

C++ - універсальна мова програмування, що належить до високорівневих, трансльованих, об'єктно-орієнтованих мов. Була розроблена Бьярном Страуструпом у 1983 році. Базується на мові Сі. У 1990-х роках С++ стала однією з найуживаніших мов програмування загального призначення.

Нововведенням С++ в порівнянні з С є: підтримка об'єктно-орієнтованого програмування через класи, підтримка узагальненого програмування через шаблони, доповнення до стандартної бібліотеки, додаткові типи даних, виключень, простору імен, вбудовувані функції, посилання і оператори керування вільно розподілюваною пам'яттю.

Мова С++ має достатньо шиpокi гpафiчнi можливостi. Всi необхiднi визначення для графiчного модуля мови С++ дано в файлi graphics.h . При виборi вiдповiдного режиму вiн повинен бути включеним в програму за допомогою директиви #include<graphics.h>, а перед використанням графічних функцій повинна бути проініціалізована графічна система (вказаний графічний драйвер та режим його роботи).

1. Розробка і обґрунтування технічного завдання

1.1 Вимоги користувача

Необхідно розробити програму, що відтворює гру “Відбивання кульки”, в якій приймають участь двоє гравців.

Після запуску програми на екрані повинне з'явитися меню, з пунктами для початку гри, виведення підказки, інформації про автора гри та для виходу з меню.

Пункти меню:

– “Нова гра” - запуск гри. Після натискання даної клавіші у робочому вікні з'являється одне за одним меню для вибору кількості ігор (партій) (3, 5, 10) та швидкості руху кульки (3 швидкості), а за ними і ігрове поле. Ігрове поле розділено на дві частини. Зліва та справа присутні лопатки гравців у вигляді прямокутників для відбивання кульки. Знизу ведеться рахунок вдалих ударів для кожного гравця;

– „Допомога” - виводить список клавіш, які використовуються у грі;

– „Про автора” - виводить інформацію про розробника даної програми;

– „Вихід” - дозволяє вийти з програми після її завершення.

1.2 Вимоги до програмної реалізації

Програма повинна відповідати вимогам користувача.

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

Програма має бути реалізована графічно. Вибір відповідних пунктів меню здійснюється за допомогою клавіш курсора та клавіші ENTER. Програма має витримувати усі тести користувача. На кожній сторінці повинна бути доповнена коментарями.

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

Програма повинна відтворювати гру “Відбивання кульки”.

1.3 Функціональні можливості програми

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

ініціалізація алгоритм меню програмний

1.4 Можливі варіанти зміни та вдосконалення програми

Для зміни реалізації основної задачі можна внести зміни у функції new_game(), speed(), num(). Наприклад, для зміни інтервалу можливих швидкостей можна змінити параметр функції delay(), що використовується в new_game() для затримки руху кульки, а також розширити можливі варіанти вибору швидкостей у меню з функції speed(). У функції num() можливо збільшити кількість партій. Можна також змінити в new_game() діаметр кульки, розміри лопаток, швидкість їх руху тощо.

1.5 Варіантний аналіз і вибір методу вирішення основної задачі

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

Для цього були розроблені клас point (клас точки на екрані) та клас spot (для роботи з плямою на екрані), що наслідує компоненти класу point: функції void show() - функція зображення плями на екрані, void hide() - функція прибирання плями з екрану, та функція void move(int xn, int yn) - переміщення зображення.

void show() - функція, що малює коло, заповнює її кольором та запам'ятовує його бітовий образ в пам'яті;

void hide() - стирає зображення з екрану;

void move(int xn, int yn) - містить в собі функції hide() та show(). Після стирання зображення змінює координати центру плями та виводить її у новому місці з центром у точці (xn, yn).

Аналогічно до процедур роботи з плямою були створені процедури для роботи з прямокутниками (лопатками): void showr() - малювання прямокутника; void hider() - процедура стирання прямокутника;

void mover(int xn, int yn) - переміщення прямокутника, де xn, yn - координати його верхнього лівого кута в новій позиції.

Функція new_game() об'єднує роботу всіх вище переглянутих функцій. Основною задачею цієї функції є узгодження роботи всіх інших функцій і перехоплення і оброблення нажатих користувачем клавіш.

2. Розробка структури програмної системи

2.1 Початок загального алгоритму вирішення задачі

1. Початок;

2. Ініціалізація і об'явлення змінних;

3. Ініціалізація графіки;

4. Виведення на екран головного меню гри;

5. Перевіряємо, яка кнопка натиснута:

Якщо натискаємо кнопку “Нова гра”, викликається функція new_game(), а в ній викликаються одна за одною функції num() (повертає значення кількості ігор), speed() (повертає значення швидкості), після завершення двох останніх функцій починається сама гра;

При натисканні кнопки “Допомога” викликається функція help() з підказкою про використання клавіш у грі;

Якщо натиснута кнопка “Про автора”, то запускається функція about(), яка виводить прізвище, імя розробника програми та деяку інформацію про нього;

Якщо ж натиснути кнопку (Вихід), це приведе до виходу з програми.

6. Кінець.

2.2 Структурні зв'язки між функціями програми

На початку програми робимо доступними бібліотеки з допомогою заголовних файлів: graphics.h; conio.h; stdlib.h; dos.h. Потім описуємо функції і підключаємо графічний режим.

Далі йде виклик функції menu(). Виводиться головне меню гри з чотирма кнопками: 1.Нова гра, 2.Допомога, 3.Про автора, 4.Вихід.

При виборі 1-го пункту запускається функція new_game(), яка виконує головне завдання. В ній викликаються функції num() i speed(), після чого на екран виводиться ігрове поле, малюється в центрі кулька, лінія, що розділяє поле навпіл, два прямокутника по бокам. І після натиснення ENTER кулька починає рухатися по полю, а гравці повинні керувати лопатками та відбивати її.

При натисканні кнопки 2 спрацьовує функція help().

Якщо натиснута кнопка 3, то спрацьовує функція about(), яка при використанні стандартних функцій графічної бібліотеки: setcolor(), outtextxy(), виводить інформацію, тобто прізвище, імя, та номер групи розробника даної програми.

Коли натиснута кнопка 4, командою break переривається цикл перевірки і програма закінчує свою роботу.

3. Програмна реалізація

Директива #include<…> призначена для включення в текст програми тексту файла із каталогу “заголовочних файлів”, що постачаються разом зі стандартними бібліотеками компілятора. На початку програми відбувається

підключення бібліотек graphics.h; conio.h; stdlib.h; dos.h.

graphics.h - використовується для графічної реалізації програми;

stdlib.h - включений в програму для виклику стандартних бібліотечних функцій randomize(), itoa(), random();

conio.h - для стандартної функції getch() та kbhit();

dos.h - для стандартної функції delay().

В головній функції програми int main() визиваються наступні функції:

initgraph(&dr, &mod,””) - ініціалізація графіки;

menu() - виклик головного меню гри;

closegraph() - закриває графічний режим і переводить систему в текстовий режим.

4. Тестування і перевірка програми

4.1 Розробка тестів

Тестування направлене на знаходження та виправлення помилок у програмах. Один з методів тестування базується на спостереженні за роботою програми. Відомо, що помилки у програмному забезпеченні мають схильність групуватися (принцип Парето). В програмі завжди є модулі, які є більш проблематичними, ніж інші. Для даної програми таким модулем є функція new_game(), що виконує в програмі провідну роль.

Отож, запустимо програму і будемо вести спостереження. При тестуванні нас цікавитимуть:

1. Чи є помилки у графічній реалізації;

2. Чи правильно відбивається кулька від стінок та лопаток;

3. Ситуація, коли кулька пролітає поза лопаткою: чи можемо ми не влучити і чи правильно ведеться рахунок. Для цього необхідно випробувати ряд випадків відбивання кульки в різних положеннях лопаток, а також, спеціально не влучити і впевнитись у тому, що супернику було нараховано очко на його рахунок.

4.2 Аналіз результатів роботи програми

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

Висновки
В результаті виконання даної курсової роботи засобами мови програмування С++ було розроблено програму, що реалізує гру “Відбивання кульки”. Виконані всі умови розробки програми.
Під час розробки даного курсового проекту, мною було вдосконалені деякі навички програмування на мові С++.
Список використаної літератури
1. В.В. Подбельский. Язык С++. М.: Финансы и статистика, 2005.
2. Шилдт Г. Искусство программирования на С++. СПб.: БХВ-Петербург, 2005

Додатки

Додаток А

#include <graphics.h>

#include <conio.h>

#include <dos.h>

#include <stdlib.h>

short num()//функцiя вибору кiлькостi iгор

{

int x,y,i,key;

x=212;y=77;

setcolor(BLUE);

setlinestyle(0,0,3);

rectangle(x,y,x+221,y+86);

rectangle(x+3,y+3,x+221-3,y+86-3);

circle(x+25,y+43,10);

settextstyle(0,HORIZ_DIR,2);

outtextxy(x+45,y+38,"3 гри");

outtextxy(x+46 ,y+39,"3 гри");

y=y+90;

rectangle(x,y,x+221,y+86);

rectangle(x+3,y+3,x+221-3,y+86-3);

circle(x+25,y+43,10);

outtextxy(x+45,y+38,"5 iгор");

outtextxy(x+46 ,y+39,"5 iгор");

y=y+90;

rectangle(x,y,x+221,y+86);

rectangle(x+3,y+3,x+221-3,y+86-3);

circle(x+25,y+43,10);

outtextxy(x+45,y+38,"10 iгор");

outtextxy(x+46 ,y+39,"10 iгор");

x=212;y=120;i=0;

setfillstyle(1,4);

setlinestyle(0,0,0);

setcolor(4);

circle(x+24,y+i*90,9);

floodfill(x+24,y+i*90,4);

while(!kbhit())

{

key=getch();if(key==13) break;//вихiд з функцii

key=getch();

//управлiння клавiшами курсора

switch(key)

{

case 72:

i--;

if(i<0) i=2;

setfillstyle(1,4);

setcolor(4);

circle(x+24,y+i*90,9);

floodfill(x+24,y+i*90,4);

setfillstyle(1,0);

setcolor(0);

if(i==2){circle(x+24,y,9);

floodfill(x+24,y,0);}

else {circle(x+24,y+(i+1)*90,9);

floodfill(x+24,y+(i+1)*90,0);}

break;

case 80:

i++;

if(i>2)i=0;

setfillstyle(1,4);

setcolor(4);

circle(x+24,y+i*90,9);

floodfill(x+24,y+i*90,4);

setfillstyle(1,0);

setcolor(0);

if(i==0){

circle(x+24,y+2*90,9);

floodfill(x+24,y+2*90,0);}

else {circle(x+24,y+(i-1)*90,9);

floodfill(x+24,y+(i-1)*90,0);}

break;

}

}

setlinestyle(0,0,0);

settextstyle(0,HORIZ_DIR,0);

setcolor(15);

setfillstyle(0,14);

cleardevice();

if(i==0)return 3;

if(i==1)return 5;

if(i==2)return 10;

return 0;

}

short speed()//функцiя вибору швидкостi руху плями (кульки)

{

int x,y,i,key;

x=212;y=77;

setcolor(BLUE);

setlinestyle(0,0,3);

rectangle(x,y,x+221,y+86);

rectangle(x+3,y+3,x+221-3,y+86-3);

circle(x+25,y+43,10);

settextstyle(0,HORIZ_DIR,2);

outtextxy(x+41,y+38,"Швидкiсть 1");

outtextxy(x+42 ,y+39,"Швидкiсть 1");

y=y+90;

rectangle(x,y,x+221,y+86);

rectangle(x+3,y+3,x+221-3,y+86-3);

circle(x+25,y+43,10);

outtextxy(x+41,y+38,"Швидкiсть 2");

outtextxy(x+42 ,y+39,"Швидкiсть 2");

y=y+90;

rectangle(x,y,x+221,y+86);

rectangle(x+3,y+3,x+221-3,y+86-3);

circle(x+25,y+43,10);

outtextxy(x+41,y+38,"Швидкiсть 3");

outtextxy(x+42 ,y+39,"Швидкiсть 3");

x=212;y=120;i=0;

setfillstyle(1,4);

setlinestyle(0,0,0);

setcolor(4);

circle(x+24,y+i*90,9);

floodfill(x+24,y+i*90,4);

while(!kbhit())

{

key=getch();if(key==13) break;//вихiд з функцii

key=getch();

//управлiння клавiшами курсора

switch(key)

{

case 72:

i--;

if(i<0) i=2;

setfillstyle(1,4);

setcolor(4);

circle(x+24,y+i*90,9);

floodfill(x+24,y+i*90,4);

setfillstyle(1,0);

setcolor(0);

if(i==2){circle(x+24,y,9);

floodfill(x+24,y,0);}

else {circle(x+24,y+(i+1)*90,9);

floodfill(x+24,y+(i+1)*90,0);}

break;

case 80:

i++;

if(i>2)i=0;

setfillstyle(1,4);

setcolor(4);

circle(x+24,y+i*90,9);

floodfill(x+24,y+i*90,4);

setfillstyle(1,0);

setcolor(0);

if(i==0){

circle(x+24,y+2*90,9);

floodfill(x+24,y+2*90,0);}

else {circle(x+24,y+(i-1)*90,9);

floodfill(x+24,y+(i-1)*90,0);}

break;

}

}

setlinestyle(0,0,0);

settextstyle(0,HORIZ_DIR,0);

setcolor(15);

setfillstyle(0,14);

cleardevice();

return 3-i+1;

}

void help()//процедура виводу пiдсказки

{

settextstyle(0,HORIZ_DIR,2);

setcolor(RED);

outtextxy(25,25,"Клавiшi керування:");

setcolor(GREEN);

settextstyle(1,HORIZ_DIR,0);

outtextxy(30,50,"Enter-початок гри");

setcolor(BLUE);

outtextxy(30,75,"ПЕРШИЙ ГРАВЕЦЬ:");

setcolor(GREEN);

outtextxy(30,100,"W - рух лопатки доверху");

outtextxy(30,125,"S - рух лопатки донизу");

setcolor(BLUE);

outtextxy(30,150,"ДРУГИЙ ГРАВЕЦЬ:");

setcolor(GREEN);

outtextxy(30,175,"Up - рух лопатки доверху");

outtextxy(30,200,"Down - рух лопатки донизу");

settextstyle(0,HORIZ_DIR,0);

setcolor(15);

outtextxy(30,250,"Для виходу натиснiть будь-яку клавiшу...");

getch();

}

void about()//процедура виводу iнформацii про автора

{

settextstyle(0,HORIZ_DIR,2);

setcolor(RED);

outtextxy(25,25,"Автор:");

setcolor(GREEN);

settextstyle(1,HORIZ_DIR,0);

outtextxy(30,50,"студент групи 1IС-05 ТКАЧУК АНДРIЙ");

settextstyle(0,HORIZ_DIR,0);

setcolor(15);

outtextxy(30,100,"Для виходу натиснiть будь-яку клавiшу...");

getch();

}

//Клас точки на екранi

class point

{

protected: // Захищенi данi класу:

int x, y; //Координати точки

// Прототипи загальнодоступних компонентних функцiй:

public:

// Конструктор з параметрами.

point(int xi = 0, int yi = 0);

int& givex(void); // Доступ до х ???

int& givey(void); // Доступ до у ???

void show(void); // Зобразити точку на екранi

// Перемiстити точку в нове мiсце екрану:

// (хn=0, уn=0 - замовчуванi значення параметрiв)

void move(int xn = 0, int yn = 0);

private: // Власна функцiя класу:

void hide(); // Забрати з екрану зображення точки

};

//***************************

// Описання функцiй класу.

//***************************

// Описання конструктора класу.

point::point(int xi, int yi)

{x=xi; y=yi;} // визначення даних об'екту

// Описання функцiй доступа до координат центру

// Описання функцiй зображення точки на екранi

void point::show(void)

// зафарбовуе пiксель з координатами

// X, Y поточним кольором малюнку

{putpixel(x,y,getcolor());}

//Забрати з екрану зображення точки

void point::hide(void)

// аналогiчно, але кольором фону

{putpixel(x,y,getbkcolor());}

// Перемiстити точку на нове мicце екрану

// з координатами XN, YN.

void point::move(int xn, int yn)

{

//спочатку забираемо з екрану поточну точку

hide();

//встановлюемо новi координати точки

x=xn; y=yn;

//Зображаемо на экранi точку на новому мicцi

show();

}

// Клас роботи з плямою на екранi.

// 'public' дозволить зберегти статуси доступу

// для наслiдуемих компонентiв класу POINT:

class spot:public point

{

//Статус доступностi даних в похiдному класi:

protected:

int rad; // Радiус плями (зображення)

int vis; // Видимiсть плями на екранi

int tag; // Ознака збереження образу в памятi

void *pspot; // показник на область пам'ятi для

// зображення (для бiтового образу)

public:

// Конструктор класу SPOT:

spot(int xi, int yi, int ri):

// Виклик конструктора базового класу:

point(xi,yi)

{

vis=tag=0; rad = ri;

// Визначити розмiри бiтового образу та

// видiлити пам'ять для нього. Розмiр

// визначаемо, задавши координати ЛIВИЙ

// ВЕРХНIЙ та ПРАВИЙ НИЖНIЙ.

pspot = new char[imagesize(xi-ri,yi-ri,xi+ri,yi+ri)];

}

~spot() // Деструктор класу SPOT

{

hide(); // Забрати з екрану зображення плями

tag =0; // скинути ознаку збереження в пам'ятi

delete pspot; // Звiльнити пам'ять бiтового образу

}

// Описання функцii зображення плями на екранi

void show ()

{ // Якщо бiтового образу НЕМАЕ в пам'ятi:

if (!tag)

{ // Намалювати поточним кольором на екранi

// коло вказаного радiуса та центру:

circle(x,y,rad);

// Замалювати вже обмежену зону кольорiв

// границi, де X,Y - внутрiшнi точки зони

floodfill(x,y,getcolor()) ;

// Запам'ятати бiтовий образ в пам'ятi:

getimage(x-rad,y-rad,x+rad,y+rad,pspot);

// введення ознаки збереження в пам'ятi

tag=1;

}

// Якщо Е, то

else

// Перенести зображення з пам'ятi на екран,

// починаючи з ЛIВОГО ВЕРХНЬОГО, СКIЛЬКИ,

putimage(x-rad,y-rad,pspot,XOR_PUT);

vis=1;

}

// Описання функцii прибирання плями з екрану

void hide()

{

// Вихiд, якщо немае чого прибирати

if (!vis) return;

// Iнакше,стерти зображення з екрану:

putimage(x-rad,y-rad,pspot,XOR_PUT);

// вводимо ознаку очистки екрану

vis=0;

}

// Перемiстити зображення:

void move(int xn, int yn)

{

hide(); // Прибрати старе зображення з екрану

// Змiнити координати центру плями:

x=xn; y=yn;

show(); // Вивести зображення в новому мiсцi

}

void hider()//Процедура стирання прямокутника

{

// Вихiд, якщо немае що прибирати

if (!vis) return;

// Инакше стерти зображення з екрану:

putimage(x,y,pspot,XOR_PUT);

// взвожу ознаку очистки екрану

vis=0;

}

void mover(int xn,int yn)//Процедура переносу прямокутника

{

hider();

x=xn;y=yn;

showr();

}

void showr ()//Процедура малювання прямокутника

{ // Якщо бiтового образу НЕМАЕ в пам'ятi:

if (!tag)

{ // Намалювати поточним кольором на екранi

// прямокутник в заданому мicцi:

rectangle(x,y,x+5,y+rad);

// Замалювати уже обмежену зону кольорiв

// границi, де X,Y - внутрiшнi точки зони

floodfill(x,y,getcolor()) ;

// Запам'ятати бiтовий образ в пам'ятi:

getimage(x,y,x+5,y+rad,pspot);

// взвод ознаки збереження в пам'ятi

tag=1;

}

// Якщо Е, то

else

// Перенести зображення з пам'ятi на екран

// починаючи з ЛIВОГО ВЕРХНЬОГО, СКIЛЬКИ,

putimage(x,y,pspot,XOR_PUT);

vis=1;

}

};

void new_game()

{

int sc,p1=0,ch,p2=0,kol,i,j,dv=5,i1,j1,i2,j2;

char s1[10],s2[10];

kol=num();

sc=speed();

setfillstyle(1,15);

{

i1=10;//Позиiя прямокутника 1го гравця по осi X

j1=205;//Початкова позиiя 1го гравця по осi Y

i2=630;//Позиiя прямокутника 2го гравця по осi X

j2=205;//Початкова позиiя 2го гравця по осi Y

i=320;//Початкове положення

j=240;// плями А

spot A(i,j,3); // Створюеться невидима пляма А

spot P1(i1,j1,50);// Створюеться невидимий прямокутник 1го гравця

spot P2(i2,j2,50);// Прямокутник 2го гравця

randomize();

A.show(); // Виведення плями А на екранi

P1.showr();//Виведення прямокутника 1го гравця на екран

P2.showr();//Виведення прямокутника 2го гравця на екран

setcolor(BLUE);

outtextxy(10,450,"Гравець 1");

outtextxy(10,460,"Score:");//Виведення рахунку для 1го гравця

itoa(p1,s1,10);//Переведення рахунку в строковий параметр

outtextxy(60,460,s1);//Виведення рахунку на екран

setcolor(RED);

outtextxy(550,450,"Гравець 2");

outtextxy(550,460,"Score:");//Виведення рахунку для 2го гравця

itoa(p2,s2,10);

outtextxy(600,460,s2);

setcolor(GREEN);

line(320,0,320,480);

do

//Визначення поведiнки плями А и ii взаемозалеж. з границями екрану

{

if((dv==2)&&(j-1<=5))dv=1;//Вiдбиття вiд

if((dv==4)&&(j-1<=5))dv=3;//верхньоi границi екрану

if((dv==1)&&(j+1>=475))dv=2;//Вiдбиття вiд

if((dv==3)&&(j+1>=475))dv=4;//нижньоi границi екрану

if((i-1<=i1+5)&&(j>=j1-3)&&(j<=j1+55))//Якщо пляма потрапляе в область

//прямокутника 1го гравця

{

if(dv==3)dv=1; //Вiдбиття вiд

if(dv==4)dv=2; //прямокутника 1го гравця

}

if(i-1<=5)//Якщо пляма не влучила в прямокутник 1го гравця

{

dv=5; //зупинити рух плями А

setcolor(BLACK);

outtextxy(600,460,s2);//Замалювати текст попереднього рахунку

setcolor(RED);

p2++;

itoa(p2,s2,10);

outtextxy(600,460,s2);//Виведення нового рахунку на екран

kol--;//Зменшити змiнну кiлькостi iгор

i=320; //Помiстити

j=240; //пляму А в

A.move(i,j); //середину екрану

if(kol==0)ch=27;//Якщо число iгор рiвне 0, вийти

}

if((i+1>=i2-5)&&(j>=j2-3)&&(j<=j2+55))//Спiвставлення прямокутника

//2го гравця та плями А

{

if(dv==1)dv=3; //Вiдбиття руху

if(dv==2)dv=4; //вiд прямокутника 2го граця

}

if(i+1>=640)

{

dv=5;

setcolor(BLACK);

outtextxy(60,460,s1);

setcolor(BLUE);

p1++;

itoa(p1,s1,10);

outtextxy(60,460,s1);//Вивiд на екран змiненого рахунку

kol--;//Зменшення кiлькостi iгор

i=320; //Повернення

j=240; //плями А

A.move(i,j); //в центр екрану

if(kol==0)ch=27;//Якщо уci iгри зiгранi - вихiд

}

switch(dv)//Змiнa руху плями А

{//вiдносно заданого напряму

case 1: i+=1;j+=1;break;

case 2: i+=1;j-=1;break;

case 3: i-=1;j+=1;break;

case 4: i-=1;j-=1;break;

Default: break;

}

A.move(i,j);// Перемiстити пляму A

if(kbhit())//Якщо натиснута клавiша

{

ch=getch();//Запам'ятати код натиснутоi клавiшi

//Гравець 1 може рухати лише якщо пляма А

if((dv==3)||(dv==4)){// рухаеться в його сторону

if((ch==119)&&(j1-5>=5))j1-=5;//при натисненнi клавiшi W, змiнити

//координаты

if((ch==115)&&(j1+5<=425))j1+=5;//при натисненнi клавiшi S

//змiнити координати

}

//Гравець 2 може рухати лише якщо пляма А

if((dv==1)||(dv==2)){//рухаеться в його сторону

if((ch==72)&&(j2-5>=5))j2-=5;//вверх

if((ch==80)&&(j2+5<=425))j2+=5;//вниз

}

if ((ch==13)&&(dv==5))dv=random(4)+1;//Якщо натиснутий Enter i

//пляма А без руху, змiнити рух плями

P1.mover(i1,j1);//Показати на екранi нове положення 1го прямокутника

P2.mover(i2,j2);//Показати на екранi нове положення 2го прямокутника

}

delay(5*sc);//Затримка при перемiщеннi плями А

}

while(ch!=27);//Вихiд iз циклу при натисненнi Esc

setcolor(LIGHTGREEN);

if(p1>p2)outtextxy(260,200,"Гравець 1 перемiг!");

if(p2>p1)outtextxy(260,200,"Гравець 2 перемiг!");

outtextxy(260,150,"<<<GAME OVER>>>");

delay(3000);

cleardevice();

} }

short menu()//функцiя для виводу головного меню i вибору подальших дiй

{

int x,y,i,key;

x=212;y=77;

setcolor(BLUE);

setlinestyle(0,0,3);

rectangle(x,y,x+221,y+86);

rectangle(x+3,y+3,x+221-3,y+86-3);

circle(x+25,y+43,10);

settextstyle(0,HORIZ_DIR,2);

outtextxy(x+43,y+38,"Нова гра");

outtextxy(x+44 ,y+39,"Нова гра");

y=y+90;

rectangle(x,y,x+221,y+86);

rectangle(x+3,y+3,x+221-3,y+86-3);

circle(x+25,y+43,10);

outtextxy(x+43,y+38,"Допомога");

outtextxy(x+44 ,y+39,"Допомога");

y=y+90;

rectangle(x,y,x+221,y+86);

rectangle(x+3,y+3,x+221-3,y+86-3);

circle(x+25,y+43,10);

outtextxy(x+43,y+38,"Про автора");

outtextxy(x+44 ,y+39,"Про автора");

y=y+90;

rectangle(x,y,x+221,y+86);

rectangle(x+3,y+3,x+221-3,y+86-3);

circle(x+25,y+43,10);

outtextxy(x+43,y+38,"Вихiд");

outtextxy(x+44 ,y+39,"Вихiд");

x=212;y=120;i=0;

setfillstyle(1,4);

setlinestyle(0,0,0);

setcolor(4);

circle(x+24,y+i*90,9);

floodfill(x+24,y+i*90,4);

while(!kbhit())

{

key=getch();if(key==13) break;//вихiд з функцii

key=getch();

//управлiння клавiшами курсора

switch(key)

{

case 72:

i--;

if(i<0) i=3;

setfillstyle(1,4);

setcolor(4);

circle(x+24,y+i*90,9);

floodfill(x+24,y+i*90,4);

setfillstyle(1,0);

setcolor(0);

if(i==3){circle(x+24,y,9);

floodfill(x+24,y,0);}

else {circle(x+24,y+(i+1)*90,9);

floodfill(x+24,y+(i+1)*90,0);}

break;

case 80:

i++;

if(i>3)i=0;

setfillstyle(1,4);

setcolor(4);

circle(x+24,y+i*90,9);

floodfill(x+24,y+i*90,4);

setfillstyle(1,0);

setcolor(0);

if(i==0){

circle(x+24,y+3*90,9);

floodfill(x+24,y+3*90,0);}

else {circle(x+24,y+(i-1)*90,9);

floodfill(x+24,y+(i-1)*90,0);}

break;

}

}

setlinestyle(0,0,0);

settextstyle(0,HORIZ_DIR,0);

setcolor(15);

setfillstyle(0,14);

cleardevice();

switch(i)

{

case 0:new_game();cleardevice();menu();break;

case 1:help();cleardevice();menu();break;

case 2:about();cleardevice();menu();break;

case 3:break;

}

return i;

}

void main ()

{

int dr=DETECT,mod;

initgraph(&dr,&mod,"");

menu();

closegraph();

}

Додаток Б

Размещено на Allbest.ur

...

Подобные документы

  • Розробка і обґрунтування технічного завдання, вимоги до програмної реалізації та користувача. Можливі варіанти зміни та вдосконалення програми. Початок загального алгоритму вирішення задачі. Структурні зв’язки між функціями програми, її тестування.

    курсовая работа [1,8 M], добавлен 14.03.2013

  • Призначення драйверів та порядок роботи з драйверами в MS-DOS. Розробка драйверів консолі. Структура драйвера та призначення компонентів. Розробка структури алгоритму, програми налагодження драйвера. Опис змінних програми та роботи модулів програми.

    курсовая работа [1,0 M], добавлен 22.06.2012

  • Призначення гри в хрестики-нулики та програмне забезпечення, необхідне для її функціонування. Написання програми в середовищі Borland C++ Builder. Способи виклику програми. Характер вхідних та вихідних даних. Алгоритм та тестування роботи програми.

    курсовая работа [321,6 K], добавлен 01.04.2016

  • Опис методів і алгоритмів вирішення задачі в середовищі розробки Myeclipse. Основні функції програмного продукту, його структура. Розробка алгоритму та програми, інструкція користувачу. Результати тестування, лістинг основних блоків. Вікно головного меню.

    курсовая работа [1,8 M], добавлен 24.02.2014

  • Проектування архітектури гри "Тетріс". Аналіз вимог до неї. Вивчення особливостей реалізації, кодування та тестування програми. Алгоритм побудови робочого поля. Вибір мови програмування. Розробка і налагодження тексту програми. Інструкції з експлуатації.

    курсовая работа [460,9 K], добавлен 04.03.2014

  • Можливості програмування за допомогою Delphi. Розробка програми "Кадровий облік", її функції. Алгоритм задачі: логіка програми, визначення структури даних та інтерфейсу. Аналіз програми та її тестування: переваги та недоліки у порівнянні з аналогами.

    курсовая работа [1,6 M], добавлен 07.05.2009

  • Характеристика програмної взаємодії людини з комп'ютером. Визначення функціональних та експлуатаційних потреб при голосовому управлінні. Реалізація програмного забезпечення. Розробка тестів та тестування системи. Аналіз ефективності даної програми.

    курсовая работа [2,8 M], добавлен 15.10.2014

  • Розробка програми для вирішення графічної задачі. При вирішенні задачі необхідно cтворювати програму у середовищі програмування Turbo Pascal. Розробка алгоритму функціонування програми і надання блок-схеми алгоритму. Демонстрація роботи програми.

    курсовая работа [1,3 M], добавлен 23.06.2010

  • Написання програми для виведення чисел Фібоначчі. Загальна характеристика мови Паскаль. Науковий доробок Леонардо Фібоначчі. Історія і властивості послідовності. Особливості програмування мовою Turbo Pascal. Відкалібрування та синхронізування програми.

    курсовая работа [325,1 K], добавлен 09.10.2013

  • Програми, які виводять на екран характеристики комп'ютера. Розробка програми "Монітор використання ресурсів комп’ютера" на мові програмування ASM-86. Алгоритм програми та її реалізація. Системні вимоги, інструкція для користувача, лістинг програми.

    курсовая работа [22,2 K], добавлен 08.08.2009

  • Створення програми, що видає результати голосування та підсумки виборів. Алгоритм розробки програми. Опис структури даних та вимоги до них, стандартних процедур та функцій, файлів та їх призначення. Приклад тестування та результати роботи програми.

    курсовая работа [1,0 M], добавлен 28.06.2012

  • Побудова інформаційно-математичної моделі та алгоритм задачі. Визначення структури даних. Розробка інтерфейсу програми з користувачем. Складання коду програми. Реалізація проекту у візуальному середовищі. Тестування та інструкція з експлуатації програми.

    курсовая работа [1,3 M], добавлен 14.04.2009

  • Розробка програми, що надає користувачу можливості керування додатками Microsoft PowerPoint: запуск вказаного додатку, переключення слайдів, виведення інформації про слайд , коректне завершення і вивантаження з пам’яті презентації, що переглядається.

    курсовая работа [2,1 M], добавлен 21.04.2011

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

    курсовая работа [932,8 K], добавлен 03.06.2010

  • Розробка структурної схеми системи управління, головні вимоги до основних елементів. Обґрунтування та вибір елементної бази. Блок-схема алгоритму і програми реалізації закону управління (лістинг програми). Зміст програми керування мікроконтроллером.

    курсовая работа [170,7 K], добавлен 28.08.2012

  • Принципи роботи команд мікросхеми 24LC08: читання, запису даних. Опис і блок-схеми програми і підпрограм, що обслуговує пристрій. Вибір середовища програмування і розробка програми, яка забезпечує можливість демонстрації команд. Проведення тестування.

    курсовая работа [114,2 K], добавлен 08.12.2011

  • Аналіз сучасного стану технологій програмування. Порівняння відстані між центрами кіл з радіусами. Класи, які використовуються при розробці програми меню. Розробка та виконання тестового прикладу. Виведення кіл на екран та інструкція користувача.

    курсовая работа [229,0 K], добавлен 14.03.2013

  • Розробка програми, яка вираховує з введених чисел парні та непарні та додає парні числа. Особливості синтаксису й семантики операторів мови С++. Перевірка коректності введення кількості чисел. Написання коду програми, проведення її тестування на прикладі.

    лабораторная работа [860,5 K], добавлен 20.12.2012

  • Інструменти середовища C++Builder, які були використані в програмі. Робота з файлами, їх відкриття, відображення та закриття. Розробка основних функцій для реалізації програми. Тестування програмного забезпечення. Блок-схема та алгоритм програми.

    курсовая работа [924,3 K], добавлен 14.01.2014

  • Призначення менеджеру пристроїв. Обґрунтування вибору мови програмування. Розробка структурної схеми і опис діалогового інтерфейсу програми. Блок-схема програмного додатку, основні функції і алгоритм його роботи. Методики і інструкція його тестування.

    курсовая работа [3,4 M], добавлен 17.11.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.