Смекни!
smekni.com

Розробка гри Відбивання кульки (стр. 3 из 3)

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

}


Додаток Б: