Code Corona

نسخه کامل: pegged یک بازی جالب که به نوعی تست هوش نیز می باشد
شما در حال مشاهده نسخه ساده شده مطالب هستید. نسخه کامل را به همراه قالب بندی ببینید.
کد:
//Author:Mohammad
#include <iostream>
#include <conio.h>
#include <iomanip.h>
#include <math.h>
using namespace std;
const int size=7;
int main();

struct cell
{
       char face;
       int state;
};
class  pegged
{
       public:
              pegged();
              pegged(int);
              pegged(int,int);
              void game();
              void move(int,int,int,int);
              bool checkwin();
              bool gameover();
              void display();      
        private:
           cell table[size][size];
};
pegged::pegged()
{
   int i,j;            
                
   table[0][0].face=table[0][1].face=table[0][5].face=table[0][6].face=
   table[1][0].face=table[1][1].face=table[1][5].face=table[1][6].face=
   table[5][0].face=table[5][1].face=table[5][5].face=table[5][6].face
   =table[6][0].face=table[6][1].face=table[6][5].face=table[6][6].face=' ';
  
   table[0][0].state=table[0][1].state=table[0][5].state=table[0][6].state=
   table[1][0].state=table[1][1].state=table[1][5].state=table[1][6].state=
   table[5][0].state=table[5][1].state=table[5][5].state=table[5][6].state
   =table[6][0].state=table[6][1].state=table[6][5].state=table[6][6].state=-1;          
  
   for(i=0;i<size;i++)
    for(j=0;j<size;j++)
      if(table[i][j].state!=-1)
      {
        table[i][j].state=1;                      
        table[i][j].face=2;
        }
    table[3][3].state=0;
    table[3][3].face=' ';//for making the hole among the table    
}
pegged::pegged(int a)
{
   int i,j;                
                  
   table[0][0].face=table[0][1].face=table[0][5].face=table[0][6].face=
   table[1][0].face=table[1][1].face=table[1][5].face=table[1][6].face=
   table[5][0].face=table[5][1].face=table[5][5].face=table[5][6].face
   =table[6][0].face=table[6][1].face=table[6][5].face=table[6][6].face=' ';
  
   table[0][0].state=table[0][1].state=table[0][5].state=table[0][6].state=
   table[1][0].state=table[1][1].state= table[1][5].state= table[1][6].state=
  table[5][0].state=table[5][1].state=table[5][5].state=table[5][6].state
   =table[6][0].state=table[6][1].state=table[6][5].state=table[6][6].state=-1;          
  
   table[0][2].face=table[0][3].face=table[0][4].face=table[1][2].face=
   table[1][4].face=table[2][0].face=table[2][1].face=table[2][2].face=
   table[2][4].face=table[2][5].face=table[2][6].face=table[3][0].face=
   table[3][6].face=table[4][0].face=table[4][1].face=table[4][2].face=
   table[4][4].face=table[4][5].face=table[4][6].face=table[5][4].face=
   table[6][2].face=table[5][2].face= table[6][3].face=table[6][4].face=' ';
  
  
   table[0][2].state=table[0][3].state=table[0][4].state=table[1][2].state=
   table[1][4].state=table[2][0].state=table[2][1].state=table[2][2].state=
   table[2][4].state=table[2][5].state=table[2][6].state=table[3][0].state=
   table[3][6].state=table[4][0].state=table[4][1].state=table[4][2].state=
   table[4][4].state=table[4][5].state=table[4][6].state=table[5][2].state=
   table[5][4].state=table[6][2].state=table[6][3].state=table[6][4].state=0;
  
  
   for(i=0;i<size;i++)
    for(j=0;j<size;j++)
      if(table[i][j].state!=-1&&table[i][j].state!=0)
      {
        table[i][j].state=1;                      
        table[i][j].face=2;
        }
     table[3][3].state=1;
     table[3][3].face=2;                              
}                  
pegged::pegged(int a,int b)
{
  int i,j;                
                  
   table[0][0].face=table[0][1].face=table[0][5].face=table[0][6].face=table[1][0].face=
   table[1][1].face= table[1][5].face=table[1][6].face=table[5][0].face=
   table[5][1].face=table[5][5].face=table[5][6].face=table[6][0].face=
   table[6][1].face=table[6][5].face=table[6][6].face=' ';
  
   table[0][0].state=table[0][1].state=table[0][5].state=table[0][6].state=
   table[1][0].state=table[1][1].state=table[1][5].state=table[1][6].state=
   table[5][0].state=table[5][1].state=table[5][5].state=table[5][6].state
   =table[6][0].state=table[6][1].state=table[6][5].state=table[6][6].state=-1;          
  
   table[0][2].face=table[0][3].face=table[0][4].face=table[1][2].face=
   table[1][4].face=table[2][0].face=table[2][1].face=table[3][1].face=
   table[3][2].face=table[3][4].face=table[3][5].face=table[2][5].face=
   table[2][6].face=table[3][0].face=table[3][6].face=table[4][0].face=
   table[4][1].face=table[4][2].face=table[4][4].face=table[4][5].face=
   table[4][6].face=table[5][2].face=table[5][3].face=table[5][4].face=
   table[6][2].face=table[6][3].face=table[6][4].face=' ';  
  
   table[0][2].state=table[0][3].state=table[0][4].state=table[1][2].state=
   table[1][4].state=table[2][0].state =table[2][1].state=table[3][1].state=
   table[3][2].state=table[3][4].state=table[3][5].state=table[2][5].state=
   table[2][6].state=table[3][0].state=table[3][6].state=table[4][0].state=
   table[4][1].state=table[4][2].state=table[4][4].state=table[4][5].state=
   table[4][6].state= table[5][2].state=table[5][3].state=table[5][4].state=
   table[6][2].state=table[6][3].state=table[6][4].state=0;
  
   for(i=0;i<size;i++)
    for(j=0;j<size;j++)
      if(table[i][j].state!=-1&&table[i][j].state!=0)
      {
        table[i][j].state=1;                      
        table[i][j].face=2;
        }
     table[3][3].state=1;
     table[3][3].face=2;              
                  
                  
}              
                            
void pegged::game()
{
     int row,col,row1,col1;
     while(1)
     {
        display();
        if(checkwin())
        {
           display();          
           cout<<"\n\t\tYOU WIN THE GAME.YOU ARE VERY SMART. ";
           getch();
           main();
           }//end of if
     /*    else if(gameover())
         {
              display();
              cout<<"SORRY YOU LOSE THE GAME.";
              getch();
              exit(0);
              }//end of else if*/
                          
        cout<<"please enter the source place info:";
        cout<<"\nenter the row:";
        cin>>row;
        cout<<"enter the coloum:";
        cin>>col;
        cout<<"please enter the destination info:";
        cout<<"\nenter ther row:";
        cin>>row1;
        cout<<"enter the coloum:";
        cin>>col1;
        move(row,col,row1,col1);
        }//end of while        
}
void pegged::move(int r,int c,int r1,int c1)
{
     if(r<0||c>6||r>6||c<0||r1<0||r1>6||c1>6||c1<0)
     {
       cout<<"your move is incorect.";    
       getch();
       return;
       }//end of if
      if(table[r][c].state==0||table[r1][c1].state==1)
        {
         cout<<"your move is incorrect.";
         getch();
         return ;
         }
      if(r1>r&&c1>c||r1<r&&c1<c)
      {
        cout<<"your move is incorrect.";
        getch();
        return ;
        }
        
      if(c1==c && r1<r)    //for move up
      
        if(table[r-1][c].state==1)
        {
           table[r][c].face=' ';
           table[r][c].state=0;
           table[r-1][c].state=0;
           table[r-1][c].face=' ';
           table[r1][c1].face=2;
           table[r1][c1].state=1;
           }
          else
              cout<<"your move is incorect.";
              
      if(r1==r && c1<c)   //for move left
      
         if(table[r][c-1].state==1)
         {
           table[r][c].face=' ';
           table[r][c].state=0;
           table[r][c-1].state=0;
           table[r][c-1].face=' ';
           table[r1][c1].face=2;
           table[r1][c1].state=1;
           }
          else
              cout<<"your move is incorrect.";
              
      if(r1>r && c1==c)    //for move down
      
          if(table[r+1][c].state==1)
          {
            table[r][c].face=' ';
            table[r][c].state=0;
            table[r+1][c].state=0;
            table[r+1][c].face=' ';
            table[r1][c1].face=2;
            table[r1][c1].state=1;                                                                              
            }
            else
                cout<<"your move is incorrect.";
                
      if(r1==r && c1>c)    //for move right
      {
           if(table[r][c+1].state==1)
           {
            table[r][c].face=' ';
            table[r][c].state=0;
            table[r][c+1].state=0;
            table[r][c+1].face=' ';
            table[r1][c1].face=2;
            table[r1][c1].state=1;                                                                  
            }
           else
               cout<<"your move is incorrect.";
               }        
              
}            
bool pegged::checkwin()
{
  int i,j,num=0;
  for(i=0;i<size;i++)  
   for(j=0;j<size;j++)
     if(table[i][j].state!=0&&table[i][j].state!=-1)
        num++;
   if(num==1)
     return 1;
   return 0;
}        
bool pegged::gameover()
{
    int i,j,num;
    for(i=0;i<size;i++)
     for(j=0;j<size;j++)
      if(table[i][j].state!=-1 && table[i][j].state!=0)
         if(table[i+1][j].state==1||table[i][j+1].state==1||table[i-1][j].state==1||table[i][j-1].state==1)
            return 0;
   return 1;
}            

void  pegged::display()
{
      int i,j;
      system("cls");
      cout<<"A fantastic game from   www.codecorona.com";
      cout<<"\n\n";
      cout<<"\t\t\t\t   ";
      for(i=0;i<7;i++)
      cout<<i<<"  ";
      cout<<"\n\n";
      for(i=0;i<size;i++,cout<<"\t\t"<<endl<<endl)
      {
       cout<<"\t\t\t\t";
       cout<<i<<"  ";                      
       for(j=0;j<size;j++)
            cout<<table[i][j].face<<"  ";                    
            }
}

int main()
{
    system("cls");
    int num;
    cout<<"\n1-play solitaire mode."
          "\n\n2-play plus mode."
          "\n\n3-play cross mode.";
    cout<<"\n\n\t\tplease enter your choice:";
    cin>>num;
    if(num==1)      
    {
      pegged my;
      system("color 79");
      my.game();
      }
    if(num==2)
    {
      pegged my(0);
      system("color 79");
      my.game();
      }      
     if(num==3)
     {
       pegged my(1,1);
       system ("color 79");
       my.game();
       }        
    
    getch();
    return 0;
}
لینک‌های مرجع