Monday, August 15, 2011

A project on Mine Gamea using Object Oriented Programing

A project on Mine Gamea using Object Oriented Programing code will given  below
#include <iostream.h>
#include <string.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <graphics.h>




class cboard
{
private:
    int board[10][10];
    char falseboard[10][10];
    char mssg[80]; // for graphics0
    int row,column,mine;  // to take input from keyboard
    int j,k,i;
    int count,count2,count1;


public:

    cboard()
    {                        //   use inheritance to initialize  array to null
        board[10][10]=0;
        falseboard[10][10]='\0';
        count=0;
        count2=0;
        count1=0;





    for(j=0;j<10;j++)
        {     //loop to initialize all value of board zero
            for(k=0;k<10;k++)
            {
                board[j][k]=0;
            }
            board[(rand()%8)][(rand()%8)]=9;   // some value make mine randomly by using rand()
            board[(rand()%8)][(rand()%8)]=9;
            board[(rand()%8)][(rand()%8)]=9;        //function,.. I initialize 9 because
                       // every value of board max value 8.
                                       // so 9 for mine.
        }







            for(j=0;j<10;j++)
        {            //loop to initialize all value of falseboard to unseen
            for(k=0;k<10;k++)
                falseboard[j][k]=char(2);
        }



    }










    void showboard();
    void calculation();
    void countnum();
    void showfalseboard();
    void takeinput();
    void falsemain();
    void makezerovisible();

};



void cboard::countnum()
{

    for(i=0;i<9;i++)
        for(j=0;j<9;j++)
            if(board[i][j]==9)
                count++;



}


void cboard::calculation()
{
     for(i=0;i<9;i++)     // loop for incrementing neighbours value for corresponding mine
  {                            //check for mine,if found then increment or not
       for(j=0;j<8;)
       {
           if(board[i][j]==9){
               k++;
               if(board[i-1][j-1]!=9)
                   board[i-1][j-1]+=1;
               if(board[i-1][j]!=9)
                   board[i-1][j]+=1;
               if(board[i-1][j+1]!=9)
                   board[i-1][j+1]+=1;
               if(board[i][j-1]!=9)
                   board[i][j-1]+=1;
               if(board[i+1][j-1]!=9)
                   board[i+1][j-1]+=1;
               if(board[i+1][j]!=9)
                   board[i+1][j]+=1;
               if(board[i+1][j+1]!=9)
                   board[i+1][j+1]+=1;
               if(board[i][j+1]!=9)
                   board[i][j+1]+=1;

               board[i][j]=9;
               j++;
          }
           else
               j++;
       }
   }
}


void cboard::showboard()
{
      cleardevice();
      setbkcolor(4);
        printf("        GAME IS OVER");
          
             for(int j=0;j<9;j++)        // to print mine board
        {
            cout<<endl<<endl<<"                  ";
            for(int k=0;k<9;k++)
            {
                if(board[j][k]==9)
                    cout<<"  "<<"["<<char(15)<<"]";
                   
                else
                    cout<<"  "<<"["<<board[j][k]<<"]";
                   
            }


        }
}



void cboard::makezerovisible()
{
    for(i=0;i<9;i++)
        for(j=0;j<9;j++)
        {
            if(board[i][j]==0){
                count1++;
                falseboard[i][j]=char(0);
             }
        }
}


















void cboard::showfalseboard()
{
        cout<<endl<<"     Total mines: "<<count<<endl<<endl<<"                 ";


    for(i=0;i<9;i++)  // to print 0 to 8 to identify column
        cout<<"    "<<i;


        for(j=0;j<9;j++)        // to print mine board
        {
            cout<<endl<<endl<<"                 "<<j; // print 0 to 8 to identify row
            for(k=0;k<9;k++)
             cout<<"  "<<"["<<falseboard[j][k]<<"]";
        }
        makezerovisible();
}









void cboard::takeinput()
{

    cout<<endl<<endl<<"Enter 9 9 for mine position declare"<<endl<<"Enter position (first row then column): ";

    cin>>row>>column;

    if(count<=count2)
    {
          for(i=0;i<9;i++)
          for(j=0;j<9;j++)
             if(falseboard[i][j]!=char(2)) ;
             else
               break;

    clrscr();
    cleardevice();
    setbkcolor(15);

       //    getch();
    showboard();
    cout<<"\n       You WIN";
    cout<<"\n       Congratulations";
    getch();
    exit(1);
    }



    if(row!=9){
    if((board[row][column])==9&&row!=9)
    { // if input mine then game will b over
        clrscr();
        cout<<"          Game over"<<endl;
        showboard ();
        getch();
        exit(1);
        //break;
    }
    clrscr();
    cleardevice();
      //    showboard();


    switch(board[row][column])
    {

       case 0: falseboard[row][column]=char(0); makezerovisible(); break;
       case 1: falseboard[row][column]='1'; break;
       case 2: falseboard[row][column]='2'; break;
       case 3: falseboard[row][column]=char(51); break;
       case 4: falseboard[row][column]=char(52); break;
       case 5: falseboard[row][column]=char(53); break;
       case 6: falseboard[row][column]=char(54); break;
       case 7: falseboard[row][column]=char(55); break;
       case 8: falseboard[row][column]=char(56); break;
      // case 9: showboard();break;
    }
    }


    if(row==9&&column==9){
         cout<<"Enter row and column of mine :";
         cin>>row>>column;
         count2++;
         falseboard[row][column]=char(15);
         }
    clrscr();
    cleardevice();
    showfalseboard();



    takeinput();



}





void cboard::falsemain()
{       clrscr();
    cleardevice();
    calculation();
    countnum();
    showfalseboard();
    takeinput();





}


void graphics(){

   /* select a driver and mode that supports */
   /* multiple background colors.            */
   int gdriver = EGA, gmode = EGAHI, errorcode;
   int bkcol, maxcolor, x, y;
   char msg[80];
   char *directories;

   /* initialize graphics and local variables */
//   cout<<"\nEnter tc directories: ";
  // cin>>directories;
   initgraph(&gdriver, &gmode, "f:\\tc\\bgi");

   /* read result of initialization */
   errorcode = graphresult();
   if (errorcode != grOk)  /* an error occurred */
   {
      printf("Graphics error: %s\n", grapherrormsg(errorcode));
      printf("Press any key to halt:");
      getch();
      exit(1); /* terminate with an error code */
   }

   /* maximum color index supported */
   maxcolor = getmaxcolor();

   /* for centering text messages */
  settextjustify(CENTER_TEXT, CENTER_TEXT);
  x = getmaxx() / 2;
   y = getmaxy() / 2;

   /* loop through the available colors */
   for (bkcol=1; bkcol<=maxcolor; bkcol++)
   //{
      /* clear the screen */
      cleardevice();

      /* select a new background color */
      bkcol=1;
      setbkcolor(bkcol);
      sprintf(msg,"Wellcome");

      /* output a messsage */
      if (bkcol == WHITE)
     setcolor(EGA_BLUE);
      //sprintf(msg, "Background color: %d", bkcol);
      outtextxy(x, y, msg);
    getch();
   // sprintf(msg,"Nasir");
   //}

   /* clean up */
//   closegraph();







}



void main()
{
    cboard object;
        graphics();
    object.falsemain();

}

No comments:

Post a Comment

Vision