Paddle

#include<graphics.h>
#include<stdio.h>
#include<conio.h>
#include<dos.h>
#include<stdlib.h>
#include<ctype.h>

struct but3d
{
   int x,y;
}b[80];
struct opt
{
   int x,y;
   int flag;
   int count;
}op[20];
struct dump
{
   int sc;
   char name[25];
}d[80];

int       bricount=0,count=4,dx=10,x=400,y=400,bcnt=14,ii,length=60;
int       color,incy=0,fallflag=0,dely=5000,padhit=0;
int
ry=390,rx=425,dy=10,score=0,xb,yb,k=233,level=1,j,l=20,w=10,but,escflag=0;
char      s1[10],s[20],ch[1],mx,my,re,open;
int       a[80],t,c[80];
int       hiscore,opc =4;


char      restart();
char      openscreen();
main()
{
union REGS i,o;
int gd=DETECT,gm;
char *p1;
/* start();*/
initgraph(&gd,&gm," ");
setcolor(10);
rectangle(10,10,630,410);
open = openscreen();
switch(toupper(open))
 {
    case  'D' :    dely = 1000; break;
    case  'N' :    dely = 2000; break;
    case  'E' :    dely = 4000; break;
 }
b[1].x=10+2*l;
b[1].y=100;
settextstyle(1,0,3);
sprintf(s1,"Lifes = %d",count);
                    setcolor(6);
                    outtextxy(400,450,s1);
sprintf(s,"Score = %d",score);
                      setcolor(3);
                      outtextxy(100,450,s);

LEVEL :
settextstyle(0,0,1);
if(level==1)
{
   bcnt=63;
   mess1();
}
if(level==2)
{
  bcnt =60;
   mess2();
}

if(level==3)
 {
    bcnt=72;
    mess3();
 }
if(level ==4)
 {
    bcnt = 60;
    mess4();
 }


paddle(x,y,7,length);

sprintf(ch,"%c",k);
setcolor(12);
outtextxy(rx,ry,ch);
settextstyle(1,0,5);
setcolor(2);
rectangle(95,195,600,260);
rectangle(97,197,598,258);

S:
setcolor(12);
outtextxy(100,200,"Press ( SPACE ) to Play");
flushall();
if(getch()!=32)
goto   S;

sprintf(ch,"%c",k);
layer(20,190,610,300);
setcolor(0);
 settextstyle(0,0,1);
outtextxy(rx,ry,ch);
setcolor(4);
op[1].y = 150;
op[1].x = b[25].x;



for(t=1;t<=bcnt;t++ )  { a[t]=0; }
   while( 1)
     {
      setcolor(10);
      rectangle(10,10,630,410);
      if(ry>=y-6-4  )  {
                          if(rx<x+length/6) dx = -30;
                                                     if(rx>x+length-length/6) dx =  30;
                                                     if(rx<=x+length/3&&rx>=x+length/6) dx=-10;
                                                     if(rx>=x+length-length/3&&rx<=x+length-length/6) dx=10;
                                                     if(rx>x+length/3&&rx<=x+length-length/3)  dx = 5;

                                                     music(50);
                                                     dy = -dy;
                                                     music(0);
                                                  }
      if(ry<=10+6+4 )  {music(50); dy =  10; music(0); }
      if(rx>=630-6-10) {music(50); dx = -dx; music(0); }
      if(rx<=10+6+4 )  {music(50); dx = -dx; music(0); }
      ry= ry+dy;
      rx= rx+dx;


      sprintf(ch,"%c",k);
      setcolor(12);
      outtextxy(rx,ry,ch);
      delay(dely);
      setcolor(0);
      outtextxy(rx,ry,ch);
                xb=x;yb=y;

      if(kbhit())
                {
                  i.h.ah=0;
                  int86(22,&i,&o);
                  if(o.h.ah==1)   escflag=1;
                  if(o.h.ah==75)  {
music(41);paddle(x,y,0,length);x-=length/2;paddle(x,y,7,length);
music(0); }
                  if(o.h.ah==77)  {
music(41);paddle(x,y,0,length);x+=length/2;paddle(x,y,7,length);
music(0); }
                  if(o.h.ah==83)  {
                                                        settextstyle(0,0,2);
                                                        setcolor(14);
                                                        rectangle(20,195,600,298);
                                                        rectangle(22,197,598,300);
                                                        setcolor(1);
                                                        outtextxy(120,210,"       ( PAUSE ) " );
                                                        outtextxy(50,250," Press Enter Key to Continue ");
                                                        while(!kbhit()) ;
                                                        layer(20,180,610,310);
                                                     }
                }
      if(fallflag==1)
                {

                      layer(op[1].x,op[1].y,op[1].x+15,op[1].y+11);
                   op[1].y += 10;
                      falloption(op[1].x,op[1].y,opc);
                   if(op[1].y >= y-6-5)    fallflag=0;

                }
       if(op[1].y >= y-6-4)
                   check_catch_option();

      check_died();
      if(bricount==bcnt)
                {
                  change_level();

                   goto LEVEL;
                }

      check_endgame();

      check_hit_brick();

      settextstyle(0,0,1);
    }   /* end of while*/
 } /* end of main*/

/*   sub functions  to check the progress of the game */
check_catch_option()
 {
    if(op[1].x>x&&op[1].x<x+length)
     {
                   layer(op[1].x,op[1].y,op[1].x+15,op[1].y+11);
                   paddle(x,y,7,length);
                   op[1].x=100;
                   op[1].y =150;
                   if(bricount<=15)    count+=1;
                      else if(bricount<=30)  score+= 100;
                                 else if(bricount<=45) length+=20;
                                  else   score += 100;
                   displaylifes();
                   displayscore();
    }
   else if(op[1].x<x||op[1].x>x+length)
      {
                 layer(op[1].x,op[1].y,op[1].x+15,op[1].y+11);
                   paddle(x,y,7,length);
                   op[1].flag =0;
                   op[1].x=100;
                   op[1].y =150;
      }
      op[1].flag =0;
 }

check_died()
   {
      if((rx<x||rx>x+length)&&ry >=y-6-4)
                  {
                    music(10);

                    settextstyle(1,0,3);
                    count=count-1;
                    displaylifes();
                    rx=x+25;ry=y-10;
                    if(x+l+5>= 630 )   rx = 50;
                    music(0);
                   }
     }
 check_endgame()
 {
      if(count==0||escflag==1||level>4)
                  {
                    settextstyle(1,0,5);
                    layer(11,11,628,405);
                       music(40);
              setcolor(2);
                  rectangle(95,195,600,298);
                  rectangle(97,197,598,296);
                      setcolor(14);
                    outtextxy(100,200,"      Game Over");
                    outtextxy(80,240," Another Game (y / n)");
                    music(0);
                    re = restart();
                    if (re=='Y'||re=='y')
                       {
                                   restore_defaults();

                                   main();
                                 }
                    endscreen();
                    closegraph();
                    nosound();
                    exit(0);
                  }
      }

 change_level()
  {
     level+=1;
                  count+=1;
                  bricount=0;
                  length = 50;
                  rx = x+5;
                  ry = y-4-6;
                  settextstyle(1,0,5);
         setcolor(2);
                  rectangle(12,195,624,260);
                  rectangle(13,196,623,259);
                  setcolor(14);
                  outtextxy(40,200," Level is completed");
                  outtextxy(40,300,"Press Space to Continue");
                  getch();
                  layer(11,194,629,400);
  }

 check_hit_brick()
 {

      for(j=1;j<=bcnt;j++)
                 if(rx>=b[j].x-5&&rx<=b[j].x+l&&ry>=b[j].y-10&&ry<=b[j].y+w)
                  {

                      setfillstyle(1,0);
                      bar(b[j].x,b[j].y,b[j].x+l+1,b[j].y+w+1);
                      if(a[j]==0)
                      {
                      music(90);

                      dy = -dy;
                     score = score+10;
            displayscore();
                      bricount++;
                      music(0);
                      if(bricount<=15)    opc =4;
                                 else if(bricount<=30)  opc = 2;
                                  else if(bricount<=45) opc =1;
                                    else opc = 12;
                      if(bricount%5==0&&op[1].flag==0)
                                  {
                                     op[1].flag=1;
                                     fallflag=1;
                                     op[1].y =150;
                                     op[1].x = 100+random(400);
                                  }
                      }
                      a[j]=1;

                  }
    }

/* function to create paddle */

paddle(int x,int y,int c,int len)
  {
     setcolor(c);
     rectangle(x,y,x+len,y+5);
     rectangle(x+1,y+1,x+len-1,y+4);
     rectangle(x+1,y+2,x+len-1,y+3);
     line(x,y-1,x+len,y-1);
     ellipse(x,y+2,0,360,4,3);
     ellipse(x+len,y+2,0,360,4,3);
  }

/*   functions to create bricks   */

mess1()
 {
   for(j=1;j<=bcnt/3;j++)
     {
                b[j].y=b[1].y;
                  button3d(b[j].x,b[j].y,l,w,6);
                  letter(b[j].x,b[j].y,l,w,3,0);
                b[j+1].x=b[j].x+l+5;
      }
   b[j].x=b[1].x;
   for(j=bcnt/3+1;j<=2*bcnt/3;j++)
     {
                b[j].y=b[1].y+w+5;
                  button3d(b[j].x,b[j].y,l,w,1);
                                   letter(b[j].x,b[j].y,l,w,4,14);
                b[j+1].x=b[j].x+l+5;
     }
   b[j].x=b[1].x;
   for(j=2*bcnt/3+1;j<=bcnt;j++)
     {
                b[j].y=b[1].y+2*w+10;
                  button3d(b[j].x,b[j].y,l,w,6);
                                   letter(b[j].x,b[j].y,l,w,5,0);
                b[j+1].x=b[j].x+l+5;
     }

 }
mess2()
{
  for(j=1;j<=bcnt/4;j++)
   {
    b[j].y = 100;
    button3d(b[j].x,b[j].y,l,w,8,14);
    letter(b[j].x,b[j].y,l,w,6);
    b[j+1].x=b[j].x+l+2;
   }
   b[j].x =200;
   for(j=bcnt/4+1;j<=bcnt/2;j++)
   {
    b[j].y = 100+2*w;
    button3d(b[j].x,b[j].y,l,w,4,14);
    letter(b[j].x,b[j].y,l,w,6);
    b[j+1].x=b[j].x+l+2;
   }
   b[j].x = 200;
   for(j=bcnt/2+1;j<=3*bcnt/4;j++)
   {
    b[j].y = 100+4*w;
    button3d(b[j].x,b[j].y,l,w,1,14);
    letter(b[j].x,b[j].y,l,w,6);
    b[j+1].x=b[j].x+l+2;
   }
   b[j].x =  b[1].x;
   for(j=3*bcnt/4+1;j<=bcnt;j++)
   {
    b[j].y = 100+6*w;
    button3d(b[j].x,b[j].y,l,w,6,14);
    letter(b[j].x,b[j].y,l,w,6);
    b[j+1].x=b[j].x+l+2;
   }

  }
mess3()
  {
    for(j=1;j<=24;j+=1)
                {
                   b[j].y = b[1].y;
                   button3d(b[j].x,b[j].y,l,w,9);
          letter(b[j].x,b[j].y,l,w,1);
                   b[j+1].x=b[j].x+l+2;
                }
   b[j].x=b[1].x;
   for(j=25;j<=48;j+=1)
                {
                   b[j].y = b[1].y+w+2;
                   button3d(b[j].x,b[j].y,l,w,9);
          letter(b[j].x,b[j].y,l,w,1);
                   b[j+1].x=b[j].x+l+2;
                }
   b[j].x=b[1].x;
   for(j=49;j<=72;j+=1)
      {
                  b[j].y = b[1].y+2*w+4;
                   button3d(b[j].x,b[j].y,l,w,9);
                   letter(b[j].x,b[j].y,l,w,1);
                   b[j+1].x=b[j].x+l+2;
     }

  }
 mess4()
  {
    b[j].x =b[1].x;
   for(j=1;j<=13;j+=1)
                {
                   b[j].y = 100 - 1;
                   button3d(b[j].x,b[j].y,l,w,9,14);
                   letter(b[j].x,b[j].y,l,w,1);
                   b[j+1].x=b[j].x+2*l;
                }
    b[j].x=b[1].x+2*w;
    for(j=14;j<=25;j+=1)
                {
                   b[j].y = 100+2*w;
                   button3d(b[j].x,b[j].y,l,w,9,14);
                   letter(b[j].x,b[j].y,l,w,1);
                   b[j+1].x=b[j].x+2*l;
                }
     b[j].x=b[1].x+4*w;
     for(j=26;j<=36;j+=1)
                {
                   b[j].y = 100+4*w;
                   button3d(b[j].x,b[j].y,l,w,9,14);
                   letter(b[j].x,b[j].y,l,w,1);
                   b[j+1].x=b[j].x+2*l;
                }
     b[j].x=b[1].x+6*w;
     for(j=37;j<=46;j+=1)
                {
                   b[j].y = 100 + 6*w;
                   button3d(b[j].x,b[j].y,l,w,9,14);
                   letter(b[j].x,b[j].y,l,w,1);
                   b[j+1].x=b[j].x+2*l;
                }
      b[j].x = b[1].x + 8*w;
                for(j=47;j<=55;j++)
                 {
                   b[j].y = 100 + 8*w ;
                   button3d(b[j].x,b[j].y,l,w,9,14);
                   letter(b[j].x,b[j].y,l,w,1);
                   b[j+1].x=b[j].x+2*l;
                }
 }
 /*  function to clear a layer */

  layer(int x1,int y1,int x2,int y2)
   {
      setfillstyle(1,0);
      bar(x1,y1,x2,y2);
   }

/*  functon to produce various sounds */

  music(int opt)
   {
     int a;
     if(opt==0)  nosound();
   /*  for(a=1;a<=opt;a++)
     {
                sound(5+2*opt);
                delay(10);
     } */
   }

char   openscreen()
   {

     char reply;
     layer(11,11,629,399);
     settextstyle(0,0,1);
     setcolor(12);
     outtextxy(300,0,"DJ-BALL");
     settextstyle(4,0,3);
     setcolor(2);
     outtextxy(31,14*7,"    Use Left and Right arrows to move your
Paddle.");
     outtextxy(31,17*7,"    You will lose a life when the ball touch the
");
     outtextxy(31,20*7,"    ground. For each brick you will get 10
points.");
     outtextxy(31,23*7,"    if all the bricks are over in each level
you");
     outtextxy(31,26*7,"    will get a bonus life.
");
     line(10,26*10,630,26*10);
     setcolor(4);

     settextstyle(1,0,3);
     outtextxy(31,29*10,"    SELECT LEVEL  ");

     outtextxy(31,33*10,"    (D)ifficult   ");
     outtextxy(31,35*10,"    (N)ormal      ");
     outtextxy(31,37*10,"    (E)asy        ");

      reply = getch();

     layer(11,11,629,399);
     return(reply);
   }
/* function for option falling */
falloption(int x,int y,int c)
    {
                button3d(x,y,10,10,c);
                letter(x,y,10,10,'+',0);
                delay(1000);
    }
endscreen()
    {
    }

restore_defaults()
    {
                 bricount=0;count=4;dx=10;x=400;y=400;bcnt=14;padhit=0;
      ry=390;rx=425;dy=10;score=0;k=233;level=1;l=20;w=10;escflag=0;
      length=50;
    }

 char restart()
  {
      return(getch());
  }

/*   function to create a single brick */

 button3d(int x,int y,int l,int w,int c)
 {
   setcolor(LIGHTGRAY);
   setfillstyle(1,c);

   bar(x,y,x+l,y+w);

   setcolor(WHITE);
   line(x,y,x+l,y);
   line(x,y,x,y+w);


   setcolor(DARKGRAY);
   line(x+l+1,y,x+l+1,y+w+1);
   line(x,y+w+1,x+l+1,y+w+1);
}

/* function to display symbol on brick */

letter(int x,int y,int l,int w,int ch,int c)
 {
   char s[1];
   setcolor(c);
   sprintf(s,"%c",ch);
   outtextxy(x + l/4 + 2,y + w/5, s);
 }

 displaylifes()
  {
     settextstyle(1,0,3);

                     setcolor(0);
                    outtextxy(400,450,s1);
                    sprintf(s1,"Lifes = %d",count);

                    setcolor(6);
                    outtextxy(400,450,s1);
 }
 displayscore()
  {
                      settextstyle(1,0,3);
                      setcolor(0);
                      outtextxy(100,450,s);
                      sprintf(s,"Score = %d",score);
                      setcolor(3);
                      outtextxy(100,450,s);
   }

 

Leave a Reply