Magic Number Game

#include <stdio.h>
#include <graphics.h>
#include <dos.h>
#include <string.h>

void InitGraphicMode();
void Welcome();
void StartGame();
void DisplayName(int );
void Clear();

void main()
{
     InitGraphicMode();
     Welcome();
     getch();
     StartGame();
     closegraph();
}
void InitGraphicMode()
{
   int gdriver = DETECT, gmode, errorcode;
   //In next line the path of bgi files  is taken
   initgraph(&gdriver, &gmode, "c:\tc\bgi");
   errorcode = graphresult();
   if (errorcode != grOk)  /* an error occurred */
   {
        printf("Graphics error: %s
", grapherrormsg(errorcode));
        printf("Press any key to halt:");
        getch();
        exit(1);             /* return with error code */
     }
}
//to print the welcome screen
void Welcome()
{
     char pattern[8] = {0x00, 0x70, 0x20, 0x27, 0x00, 0x27, 0x20, 0x70};
     int i;

     setfillpattern(pattern, BLUE);
     for(i=0;i<=320;i++)
     {
     		 bar(320-i,240-i*0.75,320+i,240+i*0.75);
     		 delay ( 1 ) ;
     }
     settextjustify(1,1);
     DisplayName(100);
     settextstyle(5,0,4);
     music();
     delay(3);
}
//to Start the game
void StartGame()
{
     void FirstScreen();
     char
ShowList1(),ShowList2(),ShowList3(),ShowList4(),ShowList5(),ShowList6();
     int FindNumber(long);
     long check(char);
     int number,i;
     long num=0;
     char val;
     char ch;
     char numstr[10];
     while(1)
     {
     		 Clear();
     		 music();
     		 FirstScreen();
     		 Clear();
     		 music();
     		 val=ShowList1();
     		 num=check(val);
     		 Clear();
     		 music();
     		 val=ShowList2();
     		 num=num*10+check(val);
     		 Clear();
     		 music();
     		 val=ShowList3();
     		 num=num*10+check(val);
     		 Clear();
     		 music();
     		 val=ShowList4();
     		 num=num*10+check(val);
     		 Clear();
     		 music();
     		 val=ShowList5();
     		 num=num*10+check(val);
     		 Clear();
     		 music();
     		 val=ShowList6();
     		 num=num*10+check(val);
     		 number=FindNumber(num);
     		 itoa(number,numstr,10);
     		 Clear();
     		 music();
     		 settextstyle(5,0,4);
     		 settextjustify(0,1);
     		 if (number)
     		 {
     		 		 outtextxy(100,150,"So the number you thought was...");
     		 		 setcolor(14);
     		 		 settextstyle(4,0,15);
     		 		 settextjustify(1,1);
     		 		 outtextxy(320,250,numstr);
     		 		 setcolor(15);
     		 		 settextstyle(6,0,4);
     		 		 outtextxy(320,350,"Can't believe it .........");
     		 }
     		 else
     		 {
     		 		 setcolor(14);
     		 		 outtextxy(100,180,"Your number is out of range ...");
     		 		 outtextxy(200,260,"OR....");
     		 		 outtextxy(100,340,"You did not answer properly !!! ");
     		 }
     		 settextjustify(1,1);
     		 settextstyle(6,0,4);
     		 setcolor(CYAN);
     		 outtextxy(320,400,"Wish to Try again (y/n) !!!!");
     		 ch=getch();
     		 if (ch=='y'||ch=='Y')
     		 {
     		    outtextxy(510,400,"Y");
     		    music();
     		    getch();
     		 }
     		 else
     		 {
     		    outtextxy(510,400,"N");
     		    getch();
     		    music();
     		    return;
     		 }
     }
}

void DisplayName(int ycor)
{
     char *name[] = {"M","A","G","I","C"," ","N","U","M","B","E","R"};
     int i;
     settextjustify(1,1);
     settextstyle(4,0,7);
     for(i=0;i<12;i++)
     {
     		 setcolor(i+2);
     		 outtextxy(40+i*45,ycor, name[i]);
     }
}
void Clear()
{
     setfillstyle(8,BLUE);
     bar(0,0,640,480);
     DisplayName(30);
}
//Displaying the first Game Screen
void FirstScreen()
{
     settextjustify(1,1);
     setcolor(2);
     settextstyle(1,0,4);
     outtextxy(320,150," Think of any number in the range ");
     setcolor(14);
     settextstyle(4,0,8);
     outtextxy(320,250,"1 - 55");
     settextstyle(5,0,3);
     setcolor(CYAN);
     outtextxy(320,350,"Press any key to continue ......");
     setcolor(15);
     settextstyle(3,0,3);
     outtextxy(320,430,"And Please... Be Honest !!!!!");
     getch();
}
//Displaying the six lists
char ShowList1()
{
     char ch;
     setcolor(14);
     settextstyle(3,0,4);
     settextjustify(0,1);
     outtextxy(70,120,"1,  3, 4, 7, 8, 11, 12");
     outtextxy(70,180,"14, 16, 17, 18, 19, 20");
     outtextxy(70,240,"24, 25, 28, 30, 31, 33");
     outtextxy(70,300,"35, 37, 40, 42, 44, 46");
     outtextxy(70,360,"47, 48, 50, 52, 54, 55");
     settextstyle(5,0,3);
     setcolor(2);
     outtextxy(30,420,"Does Your number appear here ? (y/n)...");
     ch=getch();
     fflush(stdin);
     if (ch=='y'||ch=='Y')
     		 outtextxy(500,420,"Y");
     else
     		 outtextxy(500,420,"N");
     getch();
     return(ch);
     }
char ShowList2()
{
     char ch;
     setcolor(14);
     settextstyle(3,0,4);
     settextjustify(0,1);
     outtextxy(70,120,"1, 3, 6, 8, 10, 11, 12");
     outtextxy(70,180,"15, 17, 18, 19, 22, 23");
     outtextxy(70,240,"26, 29, 31, 32, 33, 34");
     outtextxy(70,300,"36, 37, 38, 41, 44, 45");
     outtextxy(70,360,"47, 50, 51, 53, 54, 55");
     settextstyle(5,0,3);
     setcolor(2);
     outtextxy(30,420,"How about here ? (y/n)...");
     ch=getch();
     fflush(stdin);
     if (ch=='y'||ch=='Y')
     		 outtextxy(500,420,"Y");
     else
     		 outtextxy(500,420,"N");
     getch();
     return(ch);
}

char ShowList3()
{
     char ch;
     setcolor(14);
     settextstyle(3,0,4);
     settextjustify(0,1);
     outtextxy(70,120,"1,  2,  5,  6,  7,  10");
     outtextxy(70,180,"11, 13, 15, 16, 17, 19");
     outtextxy(70,240,"21, 22, 24, 26, 27, 28");
     outtextxy(70,300,"32, 35, 38, 40, 44, 46");
     outtextxy(70,360,"47, 48, 49, 53, 54, 55");
     settextstyle(5,0,3);
     setcolor(2);
     outtextxy(30,420,"Now here ? (y/n)...");
     ch=getch();
     if (ch=='y'||ch=='Y')
     		 outtextxy(500,420,"Y");
     else
     		 outtextxy(500,420,"N");
     fflush(stdin);
     getch();
     return(ch);
}
char ShowList4()
{
     char ch;
     setcolor(14);
     settextstyle(3,0,4);
     settextjustify(0,1);
     outtextxy(70,120,"1, 2, 5, 9, 13, 17, 18");
     outtextxy(70,180,"20, 22, 25, 26, 28, 30");
     outtextxy(70,240,"31, 32, 33, 35, 36, 37");
     outtextxy(70,300,"38, 39, 40, 41, 42, 43");
     outtextxy(70,360,"45, 46, 49, 51, 54, 55");
     settextstyle(5,0,3);
     setcolor(2);
     outtextxy(30,420,"And here ? (y/n)...");
     ch=getch();
     fflush(stdin);
     if (ch=='y'||ch=='Y')
     		 outtextxy(500,420,"Y");
     else
     		 outtextxy(500,420,"N");
     getch();
     return(ch);
}
char ShowList5()
{
     char ch;
     setcolor(14);
     settextstyle(3,0,4);
     settextjustify(0,1);
     outtextxy(70,120,"  4,   5,   8,   9,  10");
     outtextxy(70,180,"11, 12, 13, 14, 15, 16");
     outtextxy(70,240,"19, 21, 24, 27, 29, 30");
     outtextxy(70,300,"32, 33, 34, 37, 38, 40");
     outtextxy(70,360,"42, 45, 46, 51, 54, 55");
     settextstyle(5,0,3);
     setcolor(2);
     outtextxy(30,420,"And here ? (y/n)...");
     fflush(stdin);
     ch=getch();
     if (ch=='y'||ch=='Y')
     		 outtextxy(500,420,"Y");
     else
     		 outtextxy(500,420,"N");
     getch();
     return(ch);
}
char ShowList6()
{
     char ch;
     setcolor(14);
     settextstyle(3,0,4);
     settextjustify(0,1);
     outtextxy(70,120," 2,   3,    6,   7,  9");
     outtextxy(70,180,"12, 13, 14, 15, 17, 19");
     outtextxy(70,240,"23, 24, 25, 26, 27, 31");
     outtextxy(70,300,"34, 35, 37, 38, 41, 42");
     outtextxy(70,360,"43, 46, 47, 51, 52, 55");
     settextstyle(5,0,3);
     setcolor(2);
     outtextxy(30,420,"Finally here ? (y/n)...");
     ch=getch();
     fflush(stdin);
     if (ch=='y'||ch=='Y')
     		 outtextxy(500,420,"Y");
     else
     		 outtextxy(500,420,"N");
     getch();
     return(ch);
}
int FindNumber(long num)
{
     		 switch(num)
     		 {
     		 		 case 111100		 :  return (1);
     		 		 case 1101		 :  return (2);
     		 		 case 110001		 :  return (3);
     		 		 case 100010		 :  return (4);
     		 		 case 1110		 :  return (5);
     		 		 case 11001		 :  return (6);
     		 		 case 101001		 :  return (7);
     		 		 case 110010		 :  return (8);
     		 		 case 111		 :  return (9);
     		 		 case 11010		 :  return(10);
     		 		 case 111010		 :  return(11);
     		 		 case 110011		 :  return(12);
     		 		 case 1111		 :  return(13);
     		 		 case 100011		 :  return(14);
     		 		 case 11011		 :  return(15);
     		 		 case 101010		 :  return(16);
     		 		 case 111101		 :  return(17);
     		 		 case 110100		 :  return(18);
     		 		 case 111011		 :  return(19);
     		 		 case 100100		 :  return(20);
     		 		 case 1010		 :  return(21);
     		 		 case 11100		 :  return(22);
     		 		 case 10001		 :  return(23);
     		 		 case 101011		 :  return(24);
     		 		 case 100101		 :  return(25);
     		 		 case 11101		 :  return(26);
     		 		 case 1011		 :  return(27);
     		 		 case 101100		 :  return(28);
     		 		 case 10010		 :  return(29);
     		 		 case 100110		 :  return(30);
     		 		 case 110101		 :  return(31);
     		 		 case 11110		 :  return(32);
     		 		 case 110110		 :  return(33);
     		 		 case 10011		 :  return(34);
     		 		 case 101101		 :  return(35);
     		 		 case 10100		 :  return(36);
     		 		 case 110111		 :  return(37);
     		 		 case 11111		 :  return(38);
     		 		 case 100		 :  return(39);
     		 		 case 101110		 :  return(40);
     		 		 case 10101		 :  return(41);
     		 		 case 100111		 :  return(42);
     		 		 case 101		 :  return(43);
     		 		 case 111000		 :  return(44);
     		 		 case 10110		 :  return(45);
     		 		 case 101111		 :  return(46);
     		 		 case 111001		 :  return(47);
     		 		 case 101000		 :  return(48);
     		 		 case 1100		 :  return(49);
     		 		 case 110000		 :  return(50);
     		 		 case 10111		 :  return(51);
     		 		 case 100001		 :  return(52);
     		 		 case 11000		 :  return(53);
     		 		 case 111110		 :  return(54);
     		 		 case 111111		 :  return(55);
     		 		 default		 		 :  return(0);
     		 }
}

long check(char ch)
  {
     if (ch=='y'||ch=='Y')
     		 return(1);
     else
     		 return(0);
  }

music()
{
int i  ;
float octave[7] = { 130.81, 146.83, 164.81, 174.61, 196, 220, 246.94 } ;
     for ( i = 0 ; i < 7 ; i++ )
     		 		 {
     		 		 		 sound ( octave[i] * 8 ) ;
     		 		 		 delay ( 30 ) ;
     		 		 }
    nosound();
}

Leave a Reply