TIC-TAC-TOE Enhanced Version – C++

Enhanced Tic Tac Toe Game

This is an enhanced version of Tic-Tac-Toe (TTT) game by adding one more row and column. Actually I have played this newer version of Tic-Tac-Toe (TTT) game on a video game. So, when I learnt C/C++ programming, it was my wish to program this game myself using C/C++.

As in basic Tic-Tac-Toe game game you win when you complete a line either in vertical, horizontal or diagonal orientation. Same in this game you will win when you have same sign in all four boxes, either horizontally, vertically or diagonally.

Also, this makes the game more interesting when you have also some sequence in your sign in different boxes, eg. if you have same sign say ‘x’ in the same column of 4 different boxes, or you have ‘x’ in first box of first column, second box in second column, third box in third column, fourth box in fourth column. There are 13 ways you can win. You can try the game and try to understand the winning sequence. Its very interesting game.

Enhanced Tic Tac Toe Game – Player Selection

I developed it to play it with another player. But, when you will try to play this game with computer, the computer will give you very easy response, so that you can win easily. I am still working on computer’s play by using artificial intelligence. Still, you can play it with another player giving a tough and interesting competition.

If you want further information you can contact me at dheerajvaid[at]hotmail.com or on my mobile +91-93161-61666 & also thanks to Administrator to place my code in his site.

#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <dos.h>
#include <math.h>
#include <string.h>
#include <stdio.h>
#include <time.h>


#define HORZ_BAR 205
#define VERT_BAR 186
#define UP_LEFT_CORNER 201
#define LO_LEFT_CORNER 200
#define UP_RIGHT_CORNER 187
#define LO_RIGHT_CORNER 188
#define MIDDLE_JOINT 206
#define RIGHT_JOINT 185
#define LEFT_JOINT 204
#define UPPER_JOINT 203
#define LOWER_JOINT 202
#define SOLID_CURSOR 219
#define FADED_CURSOR 219
#define UP 72
#define DOWN 80
#define LEFT 75
#define RIGHT 77
#define ESC 27

void drawMainWindow(void);
void playMusic(void);
void drawPlayBox(int, int);
void drawRect(int, int, int, int);
void playGame(void);
void clearCursor();
void moveCursor(int);
void quitGame(void);
void errorTone(void);
int win(int&, int&);
void resetGame(void);
void machineTurn(void);

int curX = 7, curY = 4, globalX = 0, globalY = 0, scoreX = 0, scoreO = 0;
char mark[16][16] = {' '};
enum {TURN_X = 0, TURN_O = 1};
int turn = TURN_X, playMachine = 0;

int findX[] = {7, 11, 15, 19, 25, 29, 33, 37, 43, 47, 51, 55, 61, 65, 69, 73};
int findY[] = {4, 6, 8, 10, 8, 10, 12, 14, 12, 14, 16, 18, 16, 18, 20, 22};

char name[2][10];

void resetGame(void)
{
 globalX = 0, globalY = 0;
 curX = 7, curY = 4;

 textcolor(4);
 textbackground(4);

 for(int i = 0; i < 16; i++)
  for(int j = 0; j < 16; j++)
   mark[i][j] = ' ';

 for(i = 7; i <= 19; i+= 4)
 {
  for(j = 4; j <= 10; j += 2)
  {
   gotoxy(i, j);
   cprintf(" ");
  }
 }

 for(i = 25; i <= 37; i += 4)
 {
  for(int j = 8; j <= 14; j += 2)
  {
   gotoxy(i, j);
   cprintf(" ");
  }
 }

 for(i = 43; i <= 55; i += 4)
 {
  for(int j = 12; j <= 18; j += 2)
  {
   gotoxy(i, j);
   cprintf(" ");
  }
 }

 for(i = 61; i <= 73; i += 4)
 {
  for(int j = 16; j <= 22; j += 2)
  {
   gotoxy(i, j);
   cprintf(" ");
  }
 }

 gotoxy(31, 21);
 textcolor(4);
 textbackground(4);
 cprintf("                      ");

 textcolor(4);
 textbackground(4);
 gotoxy(25, 22);
 cprintf("                                ");

 textbackground(4);
 textcolor(2);
 gotoxy(curX, curY);
 cprintf("%c",SOLID_CURSOR);

 playGame();
}

void wasteTime(void)
{
 textcolor(0);
 textbackground(4);
 gotoxy(42, 6);
 cprintf("Thinking!!!");

 for(int i = 100; i <= 500 + (random(15) * 100); i += 100)
 {
  sound(i); delay(100); nosound(); delay(50);
 }

 nosound();

 textbackground(4);
 gotoxy(42, 6);
 cprintf("           ");
}

void machineTurn(void)
{
 int machineX, machineY;

 wasteTime();

 do
 {
  machineX = random(16);
  machineY = random(4);

  if(machineX < 4)
   machineY = machineY;
  else if(machineX < 8)
   machineY += 4;
  else if(machineX < 12)
   machineY += 8;
  else if(machineX < 16)
   machineY += 12;

  //gotoxy(36,5);
  //cprintf("x = %d, y = %d, mark = \'%c\'", machineX, machineY, mark[machineX][machineY]);
 }while(mark[machineX][machineY] == 'X' || mark[machineX][machineY] == 'O');

 textcolor(0);
 textbackground(4);
 gotoxy(curX, curY);

 if(mark[globalX][globalY] != ' ')
 {
  cprintf("X");
 }
 else
 {
  textcolor(4);
  cprintf(" ");
 }

 textcolor(0 + BLINK);
 textbackground(2);
 curX = findX[machineX];
 curY = findY[machineY];

 globalX = machineX;
 globalY = machineY;

 //gotoxy(36, 6);
 //cprintf("CurX = %d, CurY = %d", curX, curY);

 gotoxy(curX, curY);
 cprintf("O");
 mark[globalX][globalY] = 'O';

 sound(500);delay(100);nosound();
}

void playGame(void)
{
 int x, y, blink = 0;
 char keyCode, ch, c;

 while(1)
 {
  textcolor(0);
  textbackground(2);
  gotoxy(33, 4);
  cprintf("%28c",' ');

  gotoxy(33, 4);
  cprintf("  Turn of \'%s\' (%c)",((turn) ? strupr(name[1]) : strupr(name[0])), ((turn) ? 'O' : 'X'));

  if(playMachine == 1 && turn == TURN_O)
  {
   machineTurn();
   turn = TURN_X;
  }
  else
  {
   keyCode = getch();
   switch(keyCode)
   {
    case 0:
     moveCursor(getch());
    break;

    case 'x':
    case 'X':
     if(turn == TURN_X && mark[globalX][globalY] != 'X' && mark[globalX][globalY] != 'O')
     {
      textcolor(0 + BLINK);
      textbackground(2);
      gotoxy(curX, curY);
      cprintf("X");
      mark[globalX][globalY] = 'X';
      turn = TURN_O;

      sound(500);delay(100);nosound();
     }
     else
      errorTone();
    break;

    case 'o':
    case 'O':
     if(turn == TURN_O && mark[globalX][globalY] != 'X' && mark[globalX][globalY] != 'O')
     {
      textcolor(0 + BLINK);
      textbackground(2);
      gotoxy(curX, curY);
      cprintf("O");
      mark[globalX][globalY] = 'O';
      turn = TURN_X;

      sound(500);delay(100);nosound();
     }
     else
      errorTone();
    break;

    case 27:
     quitGame();
    break;
   }
  }

  blink = win(x, y);

  if(blink > 0)
  {
   c = (turn ? 'X' : 'O');

   curX = findX[x];
   curY = findY[y];

   textcolor(0 + BLINK);
   textbackground(4);

   switch(blink)
   {
    case 1:
     gotoxy(curX, curY); cprintf("%c",c);
     gotoxy(curX + 18, curY + 4); cprintf("%c",c);
     gotoxy(curX + 36, curY + 8); cprintf("%c",c);
     gotoxy(curX + 54, curY + 12); cprintf("%c",c);
    break;

    case 2:
     gotoxy(curX, curY); cprintf("%c",c);
     gotoxy(curX + 4, curY); cprintf("%c",c);
     gotoxy(curX + 8, curY); cprintf("%c",c);
     gotoxy(curX + 12, curY); cprintf("%c",c);
    break;

    case 3:
     gotoxy(curX, curY); cprintf("%c",c);
     gotoxy(curX, curY + 2); cprintf("%c",c);
     gotoxy(curX, curY + 4); cprintf("%c",c);
     gotoxy(curX, curY + 6); cprintf("%c",c);
    break;

    case 4:
     gotoxy(curX, curY); cprintf("%c",c);
     gotoxy(curX + 4, curY + 2); cprintf("%c",c);
     gotoxy(curX + 8, curY + 4); cprintf("%c",c);
     gotoxy(curX + 12, curY + 6); cprintf("%c",c);
    break;

    case 5:
     gotoxy(curX, curY); cprintf("%c",c);
     gotoxy(curX - 4, curY + 2); cprintf("%c",c);
     gotoxy(curX - 8, curY + 4); cprintf("%c",c);
     gotoxy(curX - 12, curY + 6); cprintf("%c",c);
    break;

    case 6:
     gotoxy(curX, curY); cprintf("%c",c);
     gotoxy(curX + 22, curY + 4); cprintf("%c",c);
     gotoxy(curX + 44, curY + 8); cprintf("%c",c);
     gotoxy(curX + 66, curY + 12); cprintf("%c",c);
    break;

    case 7:
     gotoxy(curX, curY); cprintf("%c",c);
     gotoxy(curX + 18, curY + 6); cprintf("%c",c);
     gotoxy(curX + 36, curY + 12); cprintf("%c",c);
     gotoxy(curX + 54, curY + 18); cprintf("%c",c);
    break;

    case 8:
     gotoxy(curX, curY); cprintf("%c",c);
     gotoxy(curX + 14, curY + 4); cprintf("%c",c);
     gotoxy(curX + 28, curY + 8); cprintf("%c",c);
     gotoxy(curX + 42, curY + 12); cprintf("%c",c);
    break;

    case 9:
     gotoxy(curX, curY); cprintf("%c",c);
     gotoxy(curX + 18, curY + 2); cprintf("%c",c);
     gotoxy(curX + 36, curY + 4); cprintf("%c",c);
     gotoxy(curX + 54, curY + 6); cprintf("%c",c);
    break;

    case 10:
     gotoxy(7, 4); cprintf("%c",c);
     gotoxy(29, 10); cprintf("%c",c);
     gotoxy(51, 16); cprintf("%c",c);
     gotoxy(73, 22); cprintf("%c",c);
    break;

    case 11:
     gotoxy(19, 4); cprintf("%c",c);
     gotoxy(33, 10); cprintf("%c",c);
     gotoxy(47, 16); cprintf("%c",c);
     gotoxy(61, 22); cprintf("%c",c);
    break;

    case 12:
     gotoxy(19, 10); cprintf("%c",c);
     gotoxy(33, 12); cprintf("%c",c);
     gotoxy(47, 14); cprintf("%c",c);
     gotoxy(61, 16); cprintf("%c",c);
    break;

    case 13:
     gotoxy(7, 10); cprintf("%c",c);
     gotoxy(29, 12); cprintf("%c",c);
     gotoxy(51, 14); cprintf("%c",c);
     gotoxy(73, 16); cprintf("%c",c);
    break;
   }

   textcolor(4);
   textbackground(4);
   gotoxy(33,4);
   cprintf("%28c",' ');

   gotoxy(31, 21);
   textcolor(0);
   textbackground(2);
   cprintf("\'%s\' won the game",strupr((turn) ? name[0] : name[1]));

   if(turn)
   {
    scoreX += 100;
    gotoxy(18, 16);
    cprintf("%-4d",scoreX);
    turn = TURN_X;
   }
   else
   {
    scoreO += 100;
    gotoxy(18, 17);
    cprintf("%-4d",scoreO);
    turn = TURN_O;
   }

   while(!kbhit())
   {
    sound(500);delay(100);nosound();delay(100);
    sound(400);delay(300);nosound();delay(100);
    sound(600);delay(100);nosound();delay(100);
    sound(700);delay(300);nosound();delay(100);
    sound(600);delay(50);nosound();delay(100);
    sound(500);delay(100);nosound();delay(100);
   }

   textcolor(0);
   textbackground(2);
   gotoxy(25, 22);
   cprintf("Do you want to play again(Y\\N)?");

   do
   {
    ch = getch();
   }while (!(ch == 'y' || ch == 'Y' || ch == 'n' || ch == 'N'));

   if (ch == 'n' || ch == 'N')
   {
    textmode(C40);
    _setcursortype(_NOCURSOR);
    delay(1000);

    textcolor(14 + BLINK);

    gotoxy(13, 12);
    cprintf("Thanx for playing!");

    for(int i = 100; i <= 1000; i += 100)
    {
     sound(i);
     delay(200);
    }

    nosound();

    textmode(C80);

    exit(1);
   }
   else
   {
    resetGame();
    break;
   }

  }

  //textcolor(0);
  //textbackground(4);
  //gotoxy(5,20);
  //cprintf("x = %2d, y = %2d, value = \'%c\'", globalX, globalY, mark[globalX][globalY]);
 }
}

int win(int& x, int& y)
{
 for(x = 0; x < 4; x++)     //same position in different blocks
  for(y = 0; y < 4; y++)
   if(mark[x][y] == mark[x + 4][y + 4] && mark[x][y] == mark[x + 8][y + 8] && mark[x][y] == mark[x + 12][y + 12] && (mark[x][y] == 'X' || mark[x][y] == 'O'))
    return 1;

 for(x = 0; x < 16; x += 4)  //horizontal sequence same block
  for(y = x; y < (x + 4); y++)
   if(mark[x][y] == mark[x + 1][y] && mark[x][y] == mark[x + 2][y] && mark[x][y] == mark[x + 3][y] && (mark[x][y] == 'X' || mark[x][y] == 'O'))
    return 2;

 for(y = 0; y < 16; y += 4)  //vertical sequence same block
  for(x = y; x < (y + 4); x++)
   if(mark[x][y] == mark[x][y + 1] && mark[x][y] == mark[x][y + 2] && mark[x][y] == mark[x][y + 3] && (mark[x][y] == 'X' || mark[x][y] == 'O'))
    return 3;

 for(x = 0; x < 16; x += 4)    //diagonal \  in same block
  if(mark[x][x] == mark[x + 1][x + 1] && mark[x][x] == mark[x + 2][x + 2] && mark[x][x] == mark[x + 3][x + 3] && (mark[x][x] == 'X' || mark[x][x] == 'O'))
  {
   y = x;
   return 4;
  }

 for(x = 3; x < 16; x += 4)  //diagonal /  in same block
  if(mark[x][x - 3] == mark[x - 1][x - 2] && mark[x][x - 3] == mark[x - 2][x - 1] && mark[x][x - 3] == mark[x - 3][x - 0] && (mark[x][x - 3] == 'X' || mark[x][x - 3] == 'O'))
  {
   y = x - 3;
   return 5;
  }

 for(x = 0, y = 0; y < 4; y++)   //horizontal sequence in diff. bolcks
  if(mark[x][y] == mark[x + 5][y + 4] && mark[x][y] == mark[x + 10][y + 8] && mark[x][y] == mark[x + 15][y + 12] && (mark[x][y] == 'X' || mark[x][y] == 'O'))
   return 6;

 for(y = 0, x = 0; x < 4; x++) // vertical sequence in diff. blocks
  if(mark[x][y] == mark[x + 4][y + 5] && mark[x][y] == mark[x + 8][y + 10] && mark[x][y] == mark[x + 12][y + 15] && (mark[x][y] == 'X' || mark[x][y] == 'O'))
   return 7;

 for(x = 3, y = 0; y < 4; y++) //horizontal sequence backward
  if(mark[x][y] == mark[x + 3][y + 4] && mark[x][y] == mark[x + 6][y + 8] && mark[x][y] == mark[x + 9][y + 12] && (mark[x][y] == 'X' || mark[x][y] == 'O'))
   return 8;

 for(y = 3, x = 0; x < 4; x++) //vertical sequence backward
  if(mark[x][y] == mark[x + 4][y + 3] && mark[x][y] == mark[x + 8][y + 6] && mark[x][y] == mark[x + 12][y + 9] && (mark[x][y] == 'X' || mark[x][y] == 'O'))
    return 9;

 if(mark[0][0] == mark[5][5] && mark[0][0] == mark[10][10] && mark[0][0] == mark[15][15] && (mark[0][0] == 'X' || mark[0][0] == 'O'))
  return 10;     //vertically diagonal downward from left

 if(mark[3][0] == mark[6][5] && mark[3][0] == mark[9][10] && mark[3][0] == mark[12][15] && (mark[3][0] == 'X' || mark[3][0] == 'O'))
  return 11;    //vertically diagonal downward from right

 if(mark[3][3] == mark[6][6] && mark[3][3] == mark[9][9] && mark[3][3] == mark[12][12] && (mark[3][3] == 'X' || mark[3][3] == 'O'))
  return 12;  //vertically diagonal upward from right

 if(mark[0][3] == mark[5][6] && mark[0][3] == mark[10][9] && mark[0][3] == mark[15][12] && (mark[0][3] == 'X' || mark[0][3] == 'O'))
  return 13; //vertically diagoanl upward from left

 return 0;
}

void errorTone(void)
{
 sound(500);delay(50);nosound();
 sound(600);delay(100);nosound();
}

void quitGame()
{
 char ch;

 textcolor(0);
 textbackground(2);
 gotoxy(25, 22);
 cprintf("Do you really want to quit(Y\\N)?");

 do
 {
  ch = getch();
 }while (!(ch == 'y' || ch == 'Y' || ch == 'n' || ch == 'N'));

   if (ch == 'y' || ch == 'Y')
   {
  textmode(C40);
  _setcursortype(_NOCURSOR);
  delay(1000);

  textcolor(14 + BLINK);

  gotoxy(13, 12);
  cprintf("Thanx for playing!");

  for(int i = 100; i <= 1000; i += 100)
  {
   sound(i);
   delay(200);
  }

  nosound();

  textmode(C80);

  exit(1);
   }

   textcolor(4);
   textbackground(4);
   gotoxy(25, 22);
   cprintf("%32c",' ');
}

void moveCursor(int move)
{
 if(mark[globalX][globalY] != 'X' && mark[globalX][globalY] != 'O')
 {
  clearCursor();
 }
 else
 {
  textcolor(0);
  textbackground(4);
  gotoxy(curX, curY);
  cprintf("%c",mark[globalX][globalY]);
 }

 switch(move)
 {
  case UP:
   curY -= 2;
   if(curY == 2 && curX >= 7) { curY = 22; curX = curX + 54; globalY = 16; globalX += 12;}
   if(curY == 6 && curX >= 25) { curY = 10; curX = curX - 18; globalX -= 4;}
   if(curY == 10 && curX >= 43) { curY = 14; curX = curX - 18; globalX -= 4;}
   if(curY == 14 && curX >= 61) { curY = 18; curX = curX - 18; globalX -= 4;}

   globalY--;
  break;

  case LEFT:
   curX -= 4;
   if(curX == 3 && curY <= 10) { curX = 73; curY = curY + 12; globalY += 12; globalX = 16;}
   if(curX == 21 && curY <= 14) { curX = 19; curY -= 4; globalY -= 4;}
   if(curX == 39 && curY <= 18) { curX = 37; curY -= 4; globalY -= 4;}
   if(curX == 57 && curY <= 22) { curX = 55; curY -= 4; globalY -= 4;}

   globalX--;
  break;

  case RIGHT:
   curX += 4;
   if(curX == 23 && curY <= 10) { curX = 25; curY += 4; globalY += 4;}
   if(curX == 41 && curY <= 14) { curX = 43; curY += 4; globalY += 4;}
   if(curX == 59 && curY <= 18) { curX = 61; curY += 4; globalY += 4;}
   if(curX == 77 && curY <= 22) { curX = 7; curY -= 12; globalY -= 12; globalX = -1;}

   globalX++;
  break;

  case DOWN:
   curY += 2;
   if(curY == 12 && curX <= 21) { curY = 8; curX = curX + 18; globalX += 4;}
   if(curY == 16 && curX <= 37) { curY = 12; curX = curX + 18; globalX += 4;}
   if(curY == 20 && curX <= 55) { curY = 16; curX = curX + 18; globalX += 4;}
   if(curY == 24 && curX <= 73) { curY = 4; curX = curX - 54; globalY = -1; globalX -= 12 ;}

   globalY++;
  break;
 }

 if(mark[globalX][globalY] != 'X' && mark[globalX][globalY] != 'O')
 {
  textcolor(2);
  textbackground(4);
  gotoxy(curX, curY);
  cprintf("%c",SOLID_CURSOR);
 }
 else
 {
  textcolor(0);
  textbackground(2);
  gotoxy(curX, curY);
  cprintf("%c",mark[globalX][globalY]);
 }

}

void clearCursor()
{
 if(mark[globalX][globalY] != 'X' && mark[globalX][globalY] != 'O')
 {
  textcolor(4);
  textbackground(4);
  gotoxy(curX, curY);
  cprintf("%c",219);
 }
 else
 {
  textcolor(0);
  textbackground(2);
  gotoxy(curX, curY);
  cprintf("%c",mark[globalX][globalY]);
 }
}

void drawMainWindow()
{
 int i, j, k, l;
 char option;

 textmode(C40);
 _setcursortype(_NOCURSOR);
 textcolor(7);
 textbackground(4);
 gotoxy(15, 1);
 cprintf("TIC-TAC-TOE");

 gotoxy(3, 3);
 cprintf("Play with another player(y\\n)?");
 option = getche();

 gotoxy(10,5);
 cprintf("Player X :: ");
 cin.getline(name[0], 10);
 strupr(name[0]);

 fflush(stdin);
 fflush(stdout);

 if(option != 'y' && option != 'Y')
 {
  strcpy(name[1], "MACHINE");
  playMachine = 1;
 }
 else
 {
  gotoxy(10, 7);
  cprintf("Player O :: ");
  cin.getline(name[1], 10);
  strupr(name[1]);
  playMachine = 0;
 }

 randomize();

 int check = random(2);

 textcolor(15 + BLINK);
 textbackground(0);
 gotoxy(12,13);

 if(check == 0)
 {
  cprintf("Turn of %s",name[0]);
  turn = TURN_X;
 }
 else
 {
  cprintf("Turn of %s",name[1]);
  turn = TURN_O;
 }

 getch();

 textmode(C80);
 delay(1000);
 _setcursortype(_NOCURSOR);
 _wscroll = -1;

 textbackground(4);
 clrscr();

 textcolor(14);
 drawRect(1, 1, 80, 25);

 textcolor(0);

 for(i = 3 ; i <= 78; i++)
 {
  gotoxy(i, 2);
  cprintf("%c",SOLID_CURSOR);

  gotoxy(i, 24);
  cprintf("%c",SOLID_CURSOR);

  delay(5);
  sound(pow(i, 2) + 100);
 }

 for(i = 3 ; i <= 24; i++)
 {
  gotoxy(3, i);
  cprintf("%c",SOLID_CURSOR);

  gotoxy(78, i);
  cprintf("%c",SOLID_CURSOR);

  delay(5);
  sound(pow(i, 2) + 100);
 }

 playMusic();

 nosound();
 delay(500);

 textcolor(14);
 textbackground(4);
 sound(100);
 delay(200);
 drawPlayBox(5, 3);

 sound(200);
 delay(200);
 drawPlayBox(23, 7);

 sound(400);
 delay(200);
 drawPlayBox(41, 11);

 sound(800);
 delay(200);
 drawPlayBox(59, 15);

 delay(200);
 textcolor(14);
 textbackground(0);
 for(i = 3 ; i <= 78; i++)
 {
  gotoxy(i, 2);
  cprintf("%c",4);

  if(i <= 40)
  {
   gotoxy(i, 24);
   cprintf("%c",4);
  }
 }

 for(i = 3 ; i <= 24; i++)
 {
  gotoxy(3, i);
  cprintf("%c",4);

  gotoxy(78, i);
  cprintf("%c",4);
 }
 nosound();

 textcolor(14);
 textbackground(0);
 gotoxy(35, 2);
 cprintf("TIC-TAC-TOE");

 textbackground(4);
 textcolor(2);
 gotoxy(curX, curY);
 cprintf("%c",SOLID_CURSOR);

 gotoxy(5, 19);
 textcolor(0);
 textbackground(2);
 cprintf("ESC -> Exit       ");
 gotoxy(5, 20);
 cprintf("Player X -> X     ");
 gotoxy(5, 21);
 cprintf("Player O -> O     ");
 gotoxy(5, 22);
 cprintf("Move -> Arrow Keys");


 gotoxy(5, 14);
 cprintf("    S C O R E    ");
 gotoxy(5, 16);
 cprintf("%-10s : %-4d",strupr(name[0]), scoreX);
 gotoxy(5, 17);
 cprintf("%-10s : %-4d",strupr(name[1]), scoreO);
}

void drawRect(int x1, int y1, int x2, int y2)
{
 int i, j;

 for(i = x1; i <= x2; i++)
 {
  gotoxy(i, y1);
  cprintf("%c",HORZ_BAR);

  gotoxy(i, y2);
  cprintf("%c",HORZ_BAR);
 }

 for(i = y1; i <= y2; i++)
 {
  gotoxy(x1, i);
  cprintf("%c",VERT_BAR);

  gotoxy(x2, i);
  cprintf("%c",VERT_BAR);
 }

 gotoxy(x1, y1);
 cprintf("%c",UP_LEFT_CORNER);
 gotoxy(x2, y1);
 cprintf("%c",UP_RIGHT_CORNER);
 gotoxy(x1, y2);
 cprintf("%c",LO_LEFT_CORNER);
 gotoxy(x2, y2);
 cprintf("%c",LO_RIGHT_CORNER);
}

void drawPlayBox(int x, int y)
{
 int i, j;

 for(i = x; i <= x + 16; i += 1)
 {
  for(j = y; j <= y + 9; j += 2)
  {
   gotoxy(i, j);
   cprintf("%c",HORZ_BAR);
  }
 }

 for(i = x; i <= x + 16; i += 4)
 {
  for(j = y; j <= y + 8; j += 1)
  {
   gotoxy(i, j);

   if(i == x && (j == y + 2 || j == y + 4 || j == y + 6))
    cprintf("%c",LEFT_JOINT);
   else if(i == x + 16 && (j == y + 2 || j == y + 4 || j == y + 6))
    cprintf("%c",RIGHT_JOINT);
   else if(j == y && (i == x + 4 || i == x + 8 || i == x + 12))
    cprintf("%c",UPPER_JOINT);
   else if(j == y + 8 && (i == x + 4 || i == x + 8 || i == x + 12))
    cprintf("%c",LOWER_JOINT);
   else if((i == x + 4 || i == x + 8 || i == x + 12) && (j == y + 2 || j == y + 4 || j == y + 6))
    cprintf("%c",MIDDLE_JOINT);
   else if(i == x && j == y)
    cprintf("%c",UP_LEFT_CORNER);
   else if(i == x + 16 && j == y)
    cprintf("%c",UP_RIGHT_CORNER);
   else if(i == x && j == y + 8)
    cprintf("%c",LO_LEFT_CORNER);
   else if(i == x + 16 && j == y + 8)
    cprintf("%c",LO_RIGHT_CORNER);
   else
    cprintf("%c",VERT_BAR);
  }
 }
}

void playMusic(void)
{
 int i, j;

 textbackground(0);
 textcolor(14);

 for(i = 4; i <= 54; i++)
 {
  gotoxy(i, 24);
  cprintf(" %s","dheerajvaid@hotmail.com");
  delay(5);
  sound(i * 50);
 }

 textcolor(14);
 for(i = 4; i <= 40; i++)
 {
  gotoxy(i, 24);
  cprintf(" %s","Programmed By:");
  delay(5);
  sound(i * 100);
 }

 nosound();
}


void main()
{
 randomize();
 drawMainWindow();
 playGame();

 getch();
}
M. Saqib: Saqib is Master-level Senior Software Engineer with over 14 years of experience in designing and developing large-scale software and web applications. He has more than eight years experience of leading software development teams. Saqib provides consultancy to develop software systems and web services for Fortune 500 companies. He has hands-on experience in C/C++ Java, JavaScript, PHP and .NET Technologies. Saqib owns and write contents on mycplus.com since 2004.
Related Post