Всё сдал! - помощь студентам онлайн Всё сдал! - помощь студентам онлайн

Реальная база готовых
студенческих работ

Узнайте стоимость индивидуальной работы!

Вы нашли то, что искали?

Вы нашли то, что искали?

Да, спасибо!

0%

Нет, пока не нашел

0%

Узнайте стоимость индивидуальной работы

это быстро и бесплатно

Получите скидку

Оформите заказ сейчас и получите скидку 100 руб.!


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

Тип Реферат
Предмет Информатика
Просмотров
1303
Размер файла
48 б
Поделиться

Ознакомительный фрагмент работы:

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

Курсова робота

Розробка гри “Відбивання кульки”


Зміст

Завдання_________________________________________________________2

Зміст____________________________________________________________3

Вступ___________________________________________________________ 4

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

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

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

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

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

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

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

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

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

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

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

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

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

Висновки ____________________________________________11

Список використаної літератури_________________________12

Додатки______________________________________________13

Додаток А. Текст програми гри “Відбивання кульки”

(Kurs.cpp)________________________________________________14

Додаток Б. Вікно програми________________________________26

Вступ

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

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

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

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() діаметр кульки, розміри лопаток, швидкість їх руху тощо.

aftvin

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

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

Для цього були розроблені клас point (клас точки на екрані) та клас spot(для роботи з плямою на екрані), що наслідує компоненти класу point: функції voidshow() – функція зображення плями на екрані, voidhide() – функція прибирання плями з екрану, та функція voidmove(intxn, intyn) – переміщення зображення.

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

voidhide() – стирає зображення з екрану;

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

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

voidmover(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() ispeed(), після чого на екран виводиться ігрове поле, малюється в центрі кулька, лінія, що розділяє поле навпіл, два прямокутника по бокам. І після натиснення 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() – закриває графічний режим і переводить систему в текстовий режим.

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

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

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

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

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

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

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

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

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

Висновки

В результаті виконання даної курсовоїроботизасобамимовипрограмування С++ булорозробленопрограму, щореалізує гру “Відбивання кульки”. Виконані всі умови розробки програми.

Під час розробки даного курсового проекту, мною було вдосконалені деякі навички програмування на мові С++.


Список використаної літератури

1. В.В. Подбельский. Язык С++. М.: Финансы и статистика, 2005.

2. Шилдт Г. Искусство программирования на С++. СПб.: БХВ-Петербург, 2005

3. htpp://www.codenet.ru/


ДОДАТКИ


Додаток А:

#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();

}


Додаток Б:


Нет нужной работы в каталоге?

Сделайте индивидуальный заказ на нашем сервисе. Там эксперты помогают с учебой без посредников Разместите задание – сайт бесплатно отправит его исполнителя, и они предложат цены.

Цены ниже, чем в агентствах и у конкурентов

Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит

Бесплатные доработки и консультации

Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки

Гарантируем возврат

Если работа вас не устроит – мы вернем 100% суммы заказа

Техподдержка 7 дней в неделю

Наши менеджеры всегда на связи и оперативно решат любую проблему

Строгий отбор экспертов

К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»

1 000 +
Новых работ ежедневно
computer

Требуются доработки?
Они включены в стоимость работы

Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован

avatar
Математика
История
Экономика
icon
159599
рейтинг
icon
3275
работ сдано
icon
1404
отзывов
avatar
Математика
Физика
История
icon
156450
рейтинг
icon
6068
работ сдано
icon
2737
отзывов
avatar
Химия
Экономика
Биология
icon
105734
рейтинг
icon
2110
работ сдано
icon
1318
отзывов
avatar
Высшая математика
Информатика
Геодезия
icon
62710
рейтинг
icon
1046
работ сдано
icon
598
отзывов
Отзывы студентов о нашей работе
63 457 оценок star star star star star
среднее 4.9 из 5
Филиал государственного бюджетного образовательного учреждения высшего образования Московской област
Спасибо Елизавете за оперативность. Так как это было важно для нас! Замечаний особых не бы...
star star star star star
РУТ
Огромное спасибо за уважительное отношение к заказчикам, быстроту и качество работы
star star star star star
ТГПУ
спасибо за помощь, работа сделана в срок и без замечаний, в полном объеме!
star star star star star

Последние размещённые задания

Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн

решить 6 практических

Решение задач, Спортивные сооружения

Срок сдачи к 17 дек.

только что

Задание в microsoft project

Лабораторная, Программирование

Срок сдачи к 14 дек.

только что

Решить две задачи №13 и №23

Решение задач, Теоретические основы электротехники

Срок сдачи к 15 дек.

только что

Решить 4задачи

Решение задач, Прикладная механика

Срок сдачи к 31 дек.

только что

Выполнить 2 задачи

Контрольная, Конституционное право

Срок сдачи к 12 дек.

2 минуты назад

6 заданий

Контрольная, Ветеринарная вирусология и иммунология

Срок сдачи к 6 дек.

4 минуты назад

Требуется разобрать ст. 135 Налогового кодекса по составу напогового...

Решение задач, Налоговое право

Срок сдачи к 5 дек.

4 минуты назад

ТЭД, теории кислот и оснований

Решение задач, Химия

Срок сдачи к 5 дек.

5 минут назад

Решить задание в эксель

Решение задач, Эконометрика

Срок сдачи к 6 дек.

5 минут назад

Нужно проходить тесты на сайте

Тест дистанционно, Детская психология

Срок сдачи к 31 янв.

6 минут назад

Решить 7 лабораторных

Решение задач, визуализация данных в экономике

Срок сдачи к 6 дек.

7 минут назад

Вариационные ряды

Другое, Статистика

Срок сдачи к 9 дек.

8 минут назад

Школьный кабинет химии и его роль в химико-образовательном процессе

Курсовая, Методика преподавания химии

Срок сдачи к 26 дек.

8 минут назад

Вариант 9

Решение задач, Теоретическая механика

Срок сдачи к 7 дек.

8 минут назад

9 задач по тех меху ,к 16:20

Решение задач, Техническая механика

Срок сдачи к 5 дек.

9 минут назад
9 минут назад
10 минут назад
planes planes
Закажи индивидуальную работу за 1 минуту!

Размещенные на сайт контрольные, курсовые и иные категории работ (далее — Работы) и их содержимое предназначены исключительно для ознакомления, без целей коммерческого использования. Все права в отношении Работ и их содержимого принадлежат их законным правообладателям. Любое их использование возможно лишь с согласия законных правообладателей. Администрация сайта не несет ответственности за возможный вред и/или убытки, возникшие в связи с использованием Работ и их содержимого.

«Всё сдал!» — безопасный онлайн-сервис с проверенными экспертами

Используя «Свежую базу РГСР», вы принимаете пользовательское соглашение
и политику обработки персональных данных
Сайт работает по московскому времени:

Вход
Регистрация или
Не нашли, что искали?

Заполните форму и узнайте цену на индивидуальную работу!

Файлы (при наличии)

    это быстро и бесплатно