Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Finish the Chess C++ Program, in the bolded lines. Files given are Chess7C.cpp a

ID: 3770758 • Letter: F

Question

Finish the Chess C++ Program, in the bolded lines. Files given are Chess7C.cpp and chess.h

Chess7C.cpp

#include <iostream>
#include <iomanip>
#include <string>
using namespace std;

#include "Chess.h"

// Depending on the value of the Color parameter, the string returned is either "Black" or "White"
// if shortVersion = false. If shortVersion= true (default), then the return value is either "B" or "W"

string getColorName(Color c, bool shortVersion=true)
{
// Fill in your code here
   string color = "";
if(c == Black)
color = shortVersion ? "Black" : "B";
else if(c == White)
color = shortVersion ? "White" : "W";

return color;
  
}

// Depending on the value of the ChessPieceType parameter, the string returned is
// "Pawn", "Rook", etc. if shortVersion = false
// If shortVersion= true (default), then the return value is either "P" or "R", etc.

string getChessPieceName(ChessPieceType ct, bool shortVersion=true)
{
// Fill in your code here
   string str = "";
switch(ct) {
case Pawn:
str = shortVersion ? "Pawn" : "P";
break;
case Rook:
str = shortVersion ? "Rook" : "R";
break;
case Knight:
str = shortVersion ? "King" : "N";
break;
case Bishop:
str = shortVersion ? "Bishop" : "B";
break;
case Queen:
str = shortVersion ? "Queen" : "Q";
break;
case King:
str = shortVersion ? "King" : "K";
break;
}
return str;
}

// No code needed here, but we need this to make array declarations to work (arrays call default constructors)
ChessPiece::ChessPiece()
{}

// Add implementation for other Constructor, isAt, isCaptured, getId, getFullName, getColor, setCaptured,
void isAt(ChessPieceType ct, int row, int col) {
char *pieceName;
pieceName = getChessPieceName(ct, false);
cout << " The chess piece " << pieceName << " is At row " << row << " and column " << col;
}

void isCaptured(ChessPieceType ctBy, ChessPieceType cted) {
pieceNameCaptured = getChessPieceName(ct, false);
pieceNameCapturedBy = getChessPieceName(ct, false);
cout << " The chess piece " << pieceNameCaptured << " is captured by the chess piece " << pieceNameCapturedBy ;
}
// get the id of row, column
getId ((ChessPieceType ct, int row, int col) {
cout << " The row and column of The chess Piece " << ct << " is " << row << " , " << col;

}

// returns true if move to rowParm:colParm is legal. Also row, and col get updated if legal.
bool ChessPiece::move(int rowParm, int colParm)
{
int deltaRow = abs(rowParm - row);
int deltaCol = abs(colParm - col);
  
// HINT: from deltaRow, deltasCol and chessPieceType you can do figure out most issues
// For example for a Rook you will be looking for either deltaRow or deltaCol to be zero
// For a bishop, you are looking for deltaRow = deltaCol
// For a knight, you want are looking for values of either 2,1 or 1,2 for deltaRow and deltaCol.
// I will let you figure out the rest.
// Note that for a Pawn, it matters what color you are. Black move down and White moves up.
  
// If everything is good, update row and col to rowParm and rowCol
   row = rowParm;
col = colParm;
}

bool ChessPiece::captureMove(int rowParm, int colParm)
{
// If the chessPieceType is not a Pawn, just call "move" above to do the work.
if (ct != "Pawn") move(rowParm, colParm);
// When capturing a piece, Pawns move on a short diagonal.
// Make sure it is a proper Pawn capture in this routine. If everything is good, make the
// update of row and col to rowParm and rowCol.
   row = rowParm;
col = colParm;
}


  

  

Chess::Chess()
{
// This one is done for you :-)
  
ChessPieceType kingRow[]= {Rook, Knight, Bishop, Queen, King, Bishop, Knight, Rook};
int index = 0;
// Fill in the 32 Chess pieces into their original locations on the chess board

for (int col =0; col < NUM_COLS; col++)
{
chessPieces[index++] = ChessPiece (kingRow[col], Black, 0, col);
chessPieces[index++] = ChessPiece (kingRow[col], White, 7, col);
chessPieces[index++] = ChessPiece (Pawn, Black, 1, col);   
chessPieces[index++] = ChessPiece (Pawn, White, 6, col);
}
}


// Find Index of a piece at row and col if it exists
int Chess::findPieceAt(int row, int col)
{
// Loop through the chessPieces array and call "isAt(row, col)" to see if you
// can find a piece at the desired chess board square. Return -1 if nothing can
// be found at this specified square. Otherwise return the index in the
// chessPieces arry for the piece that is located at the desired loccation.
  
}
  
// This routine has the logic associated with making a chess piece move.
// Return true to indicate success
bool Chess::move(Color turn, int oldRow, int oldCol, int newRow, int newCol)
{

// Steps to take:
  
// 1.) if newRow:newCol are not valid chess board locations return false and
// print out an appropriate error
// 2.) If there is no chess piece at oldRow:oldCol, then return false and
// print out an appropriate error (note that findPieceAt can be called for this)
// 3.) Check if there is a chess piece at the location newRow:newCol
// 4.) If no piece exists
// then call the move method on the chess piece at oldRow:oldCol (No capture is going to happen).
// A good (true) return code from move should generate a positive message: " Successful Move ... (more information)
// 5.) Check out the chess piece at the location of newRow:newCol. If the color of this piece
// matches the color in "turn", report an error because the piece you are trying to capture is on your team.
// Return false in this situation.
// 6.) Otherwise, we can assume that the piece at newRow:newCol is on the other team and we want to call
// the routine captureMove to see if we can complete a successful Capture move.
// 7.) If captureMove returns a true, then we need to call setCaptured on the piece captured at newRow: newCol. We can
// Also return true along with printing out a positive message about a successful Capture move.   
  
  
}

  
void Chess::gameLoop(istream & input)
{
// This one is done for you :-)

Color turn = Black; // Black will start the game

int curRow, curCol, newRow, newCol;
bool continueRunning = true;
displayBoard();

while (continueRunning)
{
cout << getColorName(turn, false) << "'s turn : Enter curRow curCol newRow newCol : " << endl;
input >> curRow >> curCol >> newRow >> newCol;
if (!input || curRow < 0)
{
cout << "Exitting Game Loop " << endl;
continueRunning = false;
}
else
{
if (move(turn, curRow, curCol, newRow, newCol))
{
// Success, display board
displayBoard();

// After successful move, toggle turn back and forth between White and Black
if (turn == Black) turn = White;
else turn = Black;
}
else
{
cout << "Bad move choice ... try again bozo " << endl;
}

}
}
}


// Draw the Chess Board
void Chess::displayBoard()
{
// This one is done for you :-)

cout << endl << "*****************************************"
<< endl << " ";
for (int c=0; c < NUM_COLS; c++)
cout << setw(4) << c;

cout << endl;

for (int r = 0 ; r < NUM_ROWS; r++)
{
cout << " ---------------------------------" << endl << r << ": |";
cout << setfill(' ')<< right;
for (int c=0; c < NUM_COLS; c++)
{
int index = findPieceAt(r,c);
if (index < 0 )
cout << " |"; // No piece here
else
cout << setw(3) << chessPieces[index].getId() << '|'; // Label Square with Piece Name
}
cout << endl;
}
cout << " ---------------------------------" << endl;

cout << "Captured Pieces: ";
for (int i=0; i < NUM_CHESS_PIECES; i++)
{
if (chessPieces[i].isCaptured())
cout << setw(3) << chessPieces[i].getId();
}

cout << endl << "+++++++++++++++++++++++++++++++++++++++++++" << endl;

chess.h

Explanation / Answer

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <ctype.h>  //For toupper
#include <dos.h>                //For Delay

int board[8][8],turn=0,count1=0,count2=0;
int gameover();
char strFileName[15];
void printboard();
void wrongStart();
void initialize();
void cleartext();
void check();

//Prototypes
int pawn(int x,int y,int x1,int y1);
int horse(int x,int y,int x1,int y1);
int rook(int x,int y,int x1,int y1);
int bishop(int x,int y,int x1,int y1);
int queen(int x,int y,int x1,int y1);
int king(int x,int y,int x1,int y1);

void main()
{

  //Graphics Initialization
int gdriver = DETECT;
int gmode;
initgraph(&gdriver,&gmode,"e:\borlandc\bgi");

//Loading Intro
for(float i=0; i<=6;i=i+0.1)
{
  setcolor(12);
  settextstyle(4,HORIZ_DIR,i);
  outtextxy(50,120,"WELCOME TO THE CHESS");
  delay(30);
  cleardevice();
}
outtextxy(50,120,"WELCOME TO THE CHESS");
settextstyle(1,HORIZ_DIR,3);
getch();
cleardevice();

//Displaying Group Members
setcolor(CYAN);
outtextxy(50,220,"Designed by:");
setcolor(6);
outtextxy(50,250,"Atif Zia Khan");

//Displaying Roll Numbers
outtextxy(350,250,"L1F01BSCS0144");
getch();
cleardevice();
cleardevice();

settextstyle(1,HORIZ_DIR,2);
setcolor(12);
outtextxy(50,10,"During the game Press: ");
outtextxy(50,10,"______________________ ");


setcolor(6);
settextstyle(1,HORIZ_DIR,1.5);
outtextxy(50,60,"F2 to save file ");
outtextxy(50,80,"F3 to load file ");
outtextxy(50,100,"ESC to exit game ");
outtextxy(50,120,"U to undo selection ");
outtextxy(50,200," Press any key to play ");
getch();
cleardevice();


cleartext();
initialize();
char ch;
int x=-1,y=-1,x1=-1,y1=-1;
setcolor(9);
outtextxy(10,400,"Player 1");
for(;;)
{
        int game;
   game=gameover();
     if(game==0)
     {
    break;
     }
   FILE *fp;
   ch=getch();
   if(ch==0){
    ch=getch();
   if(ch=='<'){


     //////SAVE/////

     for(;;)
     {
       
cout<<"
Enter File name to save ";
    cin>>strFileName; //Enter File Name
    fp=fopen(strFileName,"r+");
    if(fp!=NULL)
    {
     cout<<"File already exist ";
    }
    else
    {
        fp=fopen(strFileName,"w+");
        if(fp==NULL)
        {
        cout<<"Invalid File Name ";
        }
        else
      break;
    }
     }//end for
    fprintf(fp,"%d ",turn);
    for(int i=0;i<8;i++)
    {
   for(int j=0;j<8;j++)
       {
     fprintf(fp,"%d ",board[i][j]);
       }
    }
    fclose(fp);
    cleartext();
    x=-1;
     y=-1;
     x1=-1;
     y1=-1;
     continue;
    }

   if(ch=='=')
   {
////Load/////


    for(;;)
    {
    
cout<<"
Enter File name to Load ";
      cin>>strFileName;
      fp=fopen(strFileName,"r+");
       if(fp==NULL)
       {
      cout<<"File does not exist ";
       }
       else
       {
     break;
       }
    }//end for
     fscanf(fp,"%d",&turn);
       for(int i=0;i<8;i++){
         for(int j=0;j<8;j++){
          fscanf(fp,"%d",&board[i][j]);
      }
     }
    fclose(fp);
    printboard();
    cleartext();
     x=-1;
     y=-1;
     x1=-1;
     y1=-1;
    setcolor(0);
    outtextxy(10,400,"Player Û");
    if(turn!=0){
     check();
     setcolor(2);
     outtextxy(10,400,"Player 2");
     }
    else{
     check();
     setcolor(9);
     outtextxy(10,400,"Player 1");
     }
      continue;
      }
   }

  if(ch==27){
   break;
   }
  else if(ch=='u'||ch=='U'){
  x=-1;
  x1=-1;
  y1=-1;
  y=-1;
  cleartext();
  continue;
  }
  if(x==-1){
   ch=toupper(ch);
   if(ch>=65 && ch<=72){
    cout<<ch;
    x=ch-65;
    }
   }
  else if(y==-1)
  {
   if(ch>='1' && ch<='8')
   {
    cout<<ch;
    y=ch-'1';
    if(board[y][x]==0){
     wrongStart();
     x=-1;
     y=-1;
     }
    else
    {
     if(turn==0)
     {
      if(board[y][x]<0)   
//if Player 1 has selected a piece of Player 2
      {
       wrongStart();
       x=-1;
       y=-1;
      }
     }
     else if(turn!=0)
     {
      if(board[y][x]>0)
      {
       wrongStart();
       x=-1;
       y=-1;
      }
     }
    }
   }
   if(x!=-1 && y!=-1)
    cout<<" enter final position ¯ ";
  }
  else if(x1==-1)
  {  //Converting lower to upper case

   ch=toupper(ch);
   if(ch>=65 && ch<=72)
   {
    cout<<ch;
    x1=ch-65;
   }
  }
  else if(y1==-1)
  {
   if(ch>='1' && ch<='8')
   {
    cout<<ch;
    y1=ch-'1';
   }
  int b=0,killed=0;

/////pawn/////

     if(abs(board[y][x])>=9 &&
abs(board[y][x])<=16){ //if piece selscted has value greater than 8
and less than 17
    b = pawn(x,y,x1,y1);
    }//end pawn

//////horse//////

        else if(abs(board[y][x])==2 ||
abs(board[y][x])==7){    //if piece selscted has value 2 and 7
    b = horse(x,y,x1,y1);
    }//end horse

////queen///

        else if(abs(board[y][x])==4){ ////if piece
selscted has value 4
    b = queen(x,y,x1,y1);
    }//end queen
///king///

        else if(abs(board[y][x])==5){ //if piece
selscted has value 5
    b = king(x,y,x1,y1);
    }//end king

///rook///

        else if(abs(board[y][x])==1 ||
abs(board[y][x])==8){    //if piece selscted has value 1 and 8
    b = rook(x,y,x1,y1);
    }//end rook

///bishop///

        else if(abs(board[y][x])==3 ||
abs(board[y][x])==6){    //if piece selscted has value 3 and 6
    b = bishop(x,y,x1,y1);
    }//end bishop

   if(b==2){
   if(abs(board[y][x])>=9 && abs(board[y][x])<=16){
        char pp;
      
cout<<" 
which piece Q,R,H,B";
         pp=getch();
         if(turn==0){
          if(pp=='r')
    board[y1][x1]=1;
          else if(pp=='h')
    board[y1][x1]=2;
          else if(pp=='b')
    board[y1][x1]=3;
          else if(pp=='q')
    board[y1][x1]=4;
          }
         else{
          if(pp=='r')
    board[y1][x1]=-1;
          else if(pp=='h')
    board[y1][x1]=-2;
          else if(pp=='r')
    board[y1][x1]=-3;
          else if(pp=='q')
    board[y1][x1]=-4;
    }

          board[y][x]=0;
          killed =1;
    }
     else if(abs(board[y][x])==5){
        if(board[y][x]==5){
          if(count1==1);
     wrongStart();}
        else if(board[y][x]==-5){
          if(count1==1);
     wrongStart();}
        else{
          board[y][x+1]=board[y1][x1];
          board[y][x+2]=board[y][x];
          board[y1][x1]=0;
          board[y][x]=0;
          killed=1;
    }
    }
         printboard();
        }
   else if(b==1)
   {
    if(turn==0)
    {
     if(board[y1][x1]<0)
     {
      board[y1][x1]=board[y][x];
      board[y][x] = 0;
      killed=1;
     }
    }
    if(turn!=0)
    {
     if(board[y1][x1]>0)
     {
      board[y1][x1]=board[y][x];
      board[y][x] = 0;
      killed=1;
     }
    }
    if(board[y1][x1]==0)
    {
     int temp=board[y][x];
     board[y][x]=board[y1][x1];
     board[y1][x1]=temp;
     killed=1;
    }
    printboard();
   }
   x=-1;
   y=-1;
   x1=-1;
   y1=-1;
        setcolor(0);
        outtextxy(30,340,"Check");
   if(killed==0){
    wrongStart();
    continue;
    }
   cleartext();
   setcolor(0);
   outtextxy(10,400,"Player Û");
   if(turn==0){
    check();
    turn=1;
    setcolor(2);
    outtextxy(10,400,"Player 2");
    }
   else{
    check();
    turn=0;
    setcolor(9);
    outtextxy(10,400,"Player 1");
    }
   }//end legal move
  }//end for
}//end main

void printboard(){
for(int i=0;i<8;i++){
  for(int j=0;j<8;j++){
   if((i+j)%2==0)
    setcolor(WHITE);
   else
    setcolor(BLACK);

   outtextxy(270+(j*45),105+(i*45),"ÛÛ");


   if(board[i][j]<0)
    setcolor(GREEN);
   else if(board[i][j]>0)
    setcolor(9);

   if(abs(board[i][j])>=9 && abs(board[i][j])<=16){
     outtextxy(270+(j*45),105+(i*45),"P");}

   else if(abs(board[i][j])==1 || abs(board[i][j])==8){
     outtextxy(270+(j*45),105+(i*45),"R");}

   else if(abs(board[i][j])==2 || abs(board[i][j])==7){
     outtextxy(270+(j*45),105+(i*45),"H");
     }
   else if(abs(board[i][j])==3 || abs(board[i][j])==6){
     outtextxy(270+(j*45),105+(i*45),"B");
     }
   else if(abs(board[i][j])==4){
     outtextxy(270+(j*45),105+(i*45),"Q");
     }
   else if(abs(board[i][j])==5){
     outtextxy(270+(j*45),105+(i*45),"K");
     }
   }
  }
}
void wrongStart()
{
cout<<" Wrong Input Press any key to continue...";
char ch=getch();
if(ch==0){
  getch();
  }
for(int i=1;i<=30;i++)
  for(int j=1;j<=4;j++)
  {
   gotoxy(i,j);
   cout<<" ";
  }
gotoxy(1,1);
cout<<"enter initial position ¯ ";
}

/////ClearText////void cleartext(){
for(int i=1;i<=27;i++)
  for(int j=1;j<=8;j++){
   gotoxy(i,j);
   cout<<" ";
   }
gotoxy(1,1);
cout<<"enter initial position ¯ ";
}

/////Initialize////

void initialize(){
   setcolor(WHITE);
   rectangle(250,90,610,450);

   // Board Printing
   for (int i=250;i<560;i+=90)
  for (int j=90;j<450;j+=90)
   {
   bar(i,j,i+45,j+45);
   bar(i+45,j+45,i+90,j+90);
   }

    //Asigning the Values in the empty spaces
    for(i=2;i<=5;i++)
  for(int j=0;j<=7;j++)
   board[i][j] = 0;

  for(int j=0;j<=7;j++)
  {
   board[0][j] = j+1;
   board[1][j] = j+9;      //Pawns for player 1
   board[7][j] = 0-(j+1);
   board[6][j] = 0-(j+9); //Pawns for player 2
   }
printboard();

setcolor(YELLOW);

   outtextxy(265,55,"A");
   outtextxy(310,55,"B");
   outtextxy(355,55,"C");
   outtextxy(400,55,"D");
   outtextxy(445,55,"E");
   outtextxy(490,55,"F");
   outtextxy(535,55,"G");
   outtextxy(580,55,"H");

   outtextxy(220,105,"1");
   outtextxy(220,150,"2");
   outtextxy(220,195,"3");
   outtextxy(220,240,"4");
   outtextxy(220,285,"5");
   outtextxy(220,330,"6");
   outtextxy(220,375,"7");
   outtextxy(220,420,"8");
}


////HORSE//////

int horse(int x,int y,int x1,int y1)
{
int a=0;
if((y1==y+2 && x1==x+1)||(y1==y+2 && x1==x-1)||(y1==y+1 &&
x1==x+2)||(y1==y+1 && x1==x-2)||(y1==y-1 && x1==x+2)||(y1==y-1 &&
x1==x-2)||(y1==y-2 && x1==x+1)||(y1==y-2 && x1==x-1)){
  a = 1;
  }
return a;
}

/////KING////

int king(int x,int y,int x1,int y1)
{
     int a = 0;
     if((y1==y+1 && x1==x)||(y1==y-1 && x1==x)||(y1==y+1 &&
x1==x+1)||(y1==y+1 && x1==x-1)||(y1==y-1 && x1==x+1)||(y1==y-1 &&
x1==x-1)||(y1==y && x1==x+1)||(y1==y && x1==x-1)){
a = 1;
}
/////CASTLING//////

     else
if(board[y][x+1]==0&&board[y][x+2]==0&&(abs(board[y1][x1])
==abs(board[y][x+3])==1||abs(board[y1][x1])==
abs(board[y][x+3])==8)){

      return 2;
     }
  if(a==1)
  {
    if(board[y][x]==5)
    count1=1;
    if(board[y][x]==-5)
    count2=1;
  }
  return a;
}

//////BISHOP/////

int bishop(int x,int y,int x1,int y1)
{
  int a=1,i;
  if(abs(x1-x)!=abs(y1-y))
  {
   a=0;
  }

  if((x<x1)&&(y<y1))
  {
   for(i=1;(i+x)<x1;i++)
   {
     if(board[y+i][x+i]!=0)
     a=0;
   }
  }

       else if((x>x1)&&(y>y1)){
for(i=1;(x-i)>x1;i++){
if(board[y-i][x-i]!=0)
     a=0;
}
}
else if((x>x1)&&(y<y1)){
for(i=1;(x-i)>x1;i++){
   if(board[y+i][x-i]!=0)
     a=0;
}
}
else if((x<x1)&&(y>y1)){
for(i=1;(y-i)>y1;i++){
if(board[y-i][x+i]!=0)
     a=0;
}
}
return a;
}


////////QUEEN///////
int queen(int x,int y,int x1,int y1){
   if(x==x1||y==y1){              
//if queen moves in + direction
return rook(x,y,x1,y1);
   }
   else if(abs(x1-x)==abs(y-y1)){
//if queen moves in diagnol
direction
return bishop(x,y,x1,y1);
   }
   else
return 0;
}


///ROOK////
int rook(int x,int y,int x1,int y1){
int a=1;
if(y1==y)
{
  for(int i=x+1;i<x1;i++)
  {
   if(board[y1][i]!=0)
   {
    a = 0;
    break;
   }
  }
  for(i=x-1;i>x1;i--)
  {
   if(board[y1][i]!=0)
   {
    a = 0;
    break;
   }
  }
}
else if(x1==x)
{
  for(int i=y+1;i<y1;i++)
  {
   if(board[i][x1]!=0)
   {
    a = 0;
    break;
   }
  }
  for(i=y-1;i>y1;i--)
  {
   if(board[i][x1]!=0)
   {
    a = 0;
    break;
   }
  }
}
else
{
  a=0;
}
return a;
}


///PAWN/////
int pawn(int x,int y,int x1,int y1){
int a=0;
if(turn==0){
  if(y==1){
    if(y1==(y+2) && x1==x){
  if(board[y1][x1]==0&&board[y+1][x]==0){
    a = 1;
      }
   }
   }
   if(y1==y+1 && x1==x){
   if(board[y1][x1]==0){
    a = 1;
    }
    }
    else if(y1==(y+1) && (x1==(x+1)||x1==(x-1))){
     if(board[y1][x1]<0){
    a = 1;
    }
    }
  }
   else if(turn==1){
  if(y==6){
     if( y1==(y-2) && x1==x){
   if(board[y1][x1]==0&&board[y-1][x]==0){
    a = 1;
      }
   }
        }
    if( y1==(y-1) && x1==x){
   if(board[y1][x1]==0){
    a = 1;
    }
    }
    else if(y1==(y-1) && (x1==(x-1)||x1==(x+1))){
     if(board[y1][x1]>0){
    a = 1;
    }
    }
}
   if(a==1)
   {
     if(turn==0)
     {
if(y1==7)
return 2;
     }
     else
     {
if(y1==0)
return 2;
     }
    }
return a;
}

////////Check////////


void check()
{
   int t=0,i,j,x1,y1;
    if(turn==0){
      for(i=0;i<=7;i++)
      {
   for(j=0;j<=7;j++)
   {
   if(board[i][j]==-5)
   {
     y1=i; x1=j;
      break;
   }
    }
      }
       for(j=0;j<=7;j++){
for(i=0;i<=7;i++){
if (t==1){
     setcolor(9);
     rectangle(20,335,100,365);
     outtextxy(30,340,"Check");
     break;
    }

if(board[j][i]>=9 && board[j][i]<=16)
  t = pawn(i,j,x1,y1);
else if(board[j][i]==2 || board[j][i]==7)
  t = horse(i,j,x1,y1);
else if(board[j][i]==4)
  t = queen(i,j,x1,y1);
else if(board[j][i]==1 || board[j][i]==8)
  t = rook(i,j,x1,y1);
else if(board[j][i]==3 || board[j][i]==6)
  t = bishop(i,j,x1,y1);

}// for
       }// for
     }//endif turn
    else {
     for(i=0;i<=7;i++){
      for(j=0;j<=7;j++){
       if(board[i][j]==5){
y1=i; x1=j;
   break;
       }
   }
       }
       for(j=0;j<=7;j++){
for(i=0;i<=7;i++){
if (t==1){
     setcolor(GREEN);
      rectangle(20,335,100,365);
     outtextxy(30,340,"Check");
     break;
    }

if(board[j][i]>=(-9) && board[j][i]<=(-16))
  t = pawn(i,j,x1,y1);
else if(board[j][i]==(-2) || board[j][i]==(-7))
  t = horse(i,j,x1,y1);
else if(board[j][i]==(-4))
  t = queen(i,j,x1,y1);
else if(board[j][i]==(-1) || board[j][i]==(-8))
  t = rook(i,j,x1,y1);
else if(board[j][i]==(-3) || board[j][i]==(-6))
  t = bishop(i,j,x1,y1);

}// for
       }// for
}// end else
}

int gameover(){
int i,j,a=0,b=0;

for(i=0;i<=7;i++)
{
  for(j=0;j<=7;j++)
  {
         if(board[i][j]==5)
         b=1;
         if(board[i][j]==-5)
         a=1;
  }
}
if(b==0)
{
        setcolor(12);
        outtextxy(30,340,"Game Over");
               setcolor(GREEN);
        outtextxy(30,300,"Player 1 Loses");
        getch();
        return 0;
}
else if(a==0)
{
  setcolor(9);
  outtextxy(30,340,"Game Over");
  outtextxy(30,300,"Player 2 Loses");
  getch();
  return 0;
}
return 1;
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at drjack9650@gmail.com
Chat Now And Get Quote