WWW.REFERATCENTRAL.ORG.UA - Я ТУТ НАВЧАЮСЬ

... відкритий, безкоштовний архів рефератів, курсових, дипломних робіт

ГоловнаІнформатика, Компютерні науки → Розробка гри “Відбивання кульки” - Курсова робота

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

пам'ят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=475))dv=2;//Вiдбиття вiд
if((dv==3)&&(j+1>=475))dv=4;//нижньоi границi екрану
if((i-1=j1-3)&&(j<=j1+55))//Якщо пляма потрапляе в область
//прямокутника 1го гравця
{
if(dv==3)dv=1; //Вiдбиття вiд
if(dv==4)dv=2; //прямокутника 1го гравця
}
if(i-1=i2-5)&&(j>=j2-3)&&(j=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=5))j2-=5;//вверх
if((ch==80)&&(j2+5p2)outtextxy(260,200,"Гравець 1 перемiг!");
if(p2>p1)outtextxy(260,200,"Гравець 2 перемiг!");
outtextxy(260,150,"<<>>");
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(i3)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
Loading...

 
 

Цікаве