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

For this final assignment, you are required to create a solution, as a team (you

ID: 3823404 • Letter: F

Question

For this final assignment, you are required to create a solution, as a team (you may have a team of up to 4 members), to a game or graphical application of your choice! Some game possibilities are listed below:

Chess

Texas Hold 'em

Battleship

Checkers

Others?

Your goal for the assignment is build a complete graphical, and possibly networked, game or application. As a team you must ultimately decide how you will implement graphics. You have many tools and library options available to implement the graphics portion of the assignment. Some include the Unreal Engine, SFML, Qt, SDL, Allegro, DirectX, OpenGL, etc. Please be sure to also add some directions of how to play the game or use your application.

Aside from the requirements listed in the above paragraph, you are free to complete this assignment as you see fit. During our normally scheduled class period on Wednesday, April 26, we will have a Gamefest! At which point you will need to allow other students in the class play your game or use your application.

Have fun with this assignment!


this assignment is suppose to be in C++, so please do it in C++. Thanks in advance

Explanation / Answer

I am implementing Chess game using C++

/*
Language: CC++
Category: Games
Description: It is chess. Two players can play it.
To simplify the code i have not intriduced the mouse.
We can play it using Keyboard.I have made this using
general rules.
*/

#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
}


//////GAME OVER/////
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