Monday, July 21, 2008

Puzzle


HI..


Here is the code for a simple "Puzzle"...



#include<stdio.h>
#include<dos.h>
#include<conio.h>
#include<process.h>
void box();
void game();
void check();
void write();
void mainmenu();
void preview();
void scores();

int a[6][6]= { {0,0,0,0,0,0},
{0,14,5,11,4,0},
{0,15,6,10,12,0},
{0,9,8,3,1,0},
{0,100,2,13,7,0},
{0,0,0,0,0,0}
};


int b[6][6]= { {0,0,0,0,0,0},
{0,1,2,3,4,0},
{0,8,7,6,5,0},
{0,9,10,11,12,0},
{0,100,15,14,13,0},
{0,0,0,0,0,0}
};


char menu[5][25] = { " 1.Levels Preview ",
" 2.Heighest Scores ",
" 3.Start Game ",
" 4.Exit "
};

int i,j,row,col,temp,count,nol=0;
union REGS ii,oo;
char ch;

main()
{

_setcursortype(_NOCURSOR);
clrscr();
mainmenu();
}⁄*end of main*⁄

void mainmenu()
{
int pos=9;
textcolor(11);
for(i=1;i<=26;i++)
{
gotoxy(25+i,7); cprintf("%c ",205);
gotoxy(25+i,17); cprintf("%c",205);
}

for(i=1;i<=10;i++)
{
gotoxy(25,7+i); cprintf("%c",186);
gotoxy(52,7+i); cprintf("%c",186);
}

gotoxy(25,7); cprintf("%c",201);
gotoxy(52,7); cprintf("%c",187);

gotoxy(25,17); cprintf("%c",200);
gotoxy(52,17); cprintf("%c",188);

for(i=0;i<4;i++)
{
textcolor(10);
gotoxy(32,9+(i*2));
cprintf("%s",menu[i]);
textcolor(12);
gotoxy(33,9+(i*2));
cprintf("%c",menu[i][1]);
textcolor(11);
gotoxy(35,9+(i*2));
cprintf("%c",menu[i][3]);

}


while(1)
{

for(i=0;i<4;i++)
{
textbackground(0);
gotoxy(27,9+(i*2));
cprintf(" ");
}

gotoxy(27,pos);
textcolor(9);
cprintf(" \3\3\3");

while(!kbhit());
int86(22,&ii,&oo);
ch = oo.h.ah;

switch(ch)
{

case 72 : if(pos==9)
pos = 15;
else
pos-=2;
break;

case 80 : if(pos==15)
pos=9;
else
pos+=2;
break;
case 28 :
if(pos==9)
preview();
else
if(pos==11)
scores();
else
if(pos==13)
clrscr(),game();
else
exit(2);
break;
case 2 :
case 38 :pos=9;break;
case 3 :
case 35 :pos=11;break;
case 4 :
case 31 :pos=13;break;
case 1 :exit(3);
case 5 :
case 18 :pos=15;break;

}⁄⁄end of switch
}⁄⁄end of while

getch();
}

void preview()
{
clrscr();

gotoxy(32,6);textcolor(3);cprintf("LEVEL 1");
gotoxy(32,7);textcolor(13);cprintf("========");
textcolor(6);
gotoxy(28,10);cprintf("1 2 3 4");
gotoxy(28,12);cprintf("5 6 7 8");
gotoxy(28,14);cprintf("9 10 11 12");
gotoxy(28,16);cprintf("13 14 15 ");
gotoxy(30,18);textcolor(15);cprintf("Press Any Key ..");
getch(),clrscr();


gotoxy(32,6);textcolor(3);cprintf("LEVEL 2");
gotoxy(32,7);textcolor(13);cprintf("========");
textcolor(6);
gotoxy(28,10);cprintf(" 15 14 13 ");
gotoxy(28,12);cprintf(" 12 11 10 9 ");
gotoxy(28,14);cprintf(" 8 7 6 5 ");
gotoxy(28,16);cprintf(" 4 3 2 1 ");
gotoxy(30,18);textcolor(15);cprintf("Press Any Key ..");
getch(),clrscr();


gotoxy(32,6);textcolor(3);cprintf("LEVEL 3");
gotoxy(32,7);textcolor(13);cprintf("========");
textcolor(6);
gotoxy(28,10);cprintf("1 5 9 13 ");
gotoxy(28,12);cprintf("2 6 10 14 ");
gotoxy(28,14);cprintf("3 7 11 15 ");
gotoxy(28,16);cprintf("4 8 12 ");
gotoxy(30,18);textcolor(15);cprintf("Press Any Key ..");
getch(),clrscr();

gotoxy(32,6);textcolor(3);cprintf("LEVEL 4");
gotoxy(32,7);textcolor(13);cprintf("========");
textcolor(6);
gotoxy(28,10);cprintf(" 12 8 4 ");
gotoxy(28,12);cprintf(" 15 11 7 3 ");
gotoxy(28,14);cprintf(" 14 10 6 2 ");
gotoxy(28,16);cprintf(" 13 9 5 1 ");
gotoxy(30,18);textcolor(15);cprintf("Press Any Key ..");
getch(),clrscr();

gotoxy(32,6);textcolor(3);cprintf("LEVEL 5");
gotoxy(32,7);textcolor(13);cprintf("========");
textcolor(6);
gotoxy(28,10);cprintf(" 1 2 3 4 ");
gotoxy(28,12);cprintf(" 8 7 6 5 ");
gotoxy(28,14);cprintf(" 9 10 11 12 ");
gotoxy(28,16);cprintf(" 15 14 13 ");
gotoxy(28,18);textcolor(2);cprintf("Press Any Key ..");
getch(),clrscr(),mainmenu();

}⁄* end of Previw function *⁄


void scores()
{
clrscr();

gotoxy(23,9);
textcolor(2);
cprintf("V.MAHENDRA REDDY ---- 50,000");
gotoxy(23,12);
cprintf("MAHI ---- 40,000");
gotoxy(23,15);
cprintf("K.B.NAVEEN KUMAR ---- 30,000");
gotoxy(23,18);
cprintf("G.SAMPATH KUMAR REDDY ---- 30,000");

gotoxy(25,21);
textcolor(7);
cprintf("Presss Any Key ....");
getch(),clrscr();
mainmenu();
}

void game()
{
clrscr();
box();
write();

textcolor(5);
gotoxy(3,20);
cprintf("Esc - Quit");

while(1)
{
⁄* Printing Values*⁄
textcolor(12);
for(i=1;i<=4;i++)
for(j=1;j<=4;j++)
{
gotoxy(22+(j*5),10+(i*2));
if(a[i][j]==100)
{
printf(" ");
row=i;
col=j;
}
else
cprintf("%d",a[i][j]);
}

check();

⁄* Reading Key*⁄
while(!kbhit());
int86(22,&ii,&oo);
ch = oo.h.ah;

switch(ch)
{
case 77:if(col==1) ⁄*Right*⁄
{
gotoxy(55,21);
textcolor(4);
cprintf("Invalid Choice");
}
else
{
gotoxy(55,20);
textcolor(4);
cprintf(" ");
temp = a[row][col-1];
a[row][col]= temp;
a[row][col-1]=100;
}

break;
case 75: if(col==4) ⁄*Left*⁄
{
gotoxy(55,21);
textcolor(4);
cprintf("Invalid Choice");
}
else
{
gotoxy(55,21);
textcolor(4);
cprintf(" ");
temp = a[row][col+1];
a[row][col]= temp;
a[row][col+1]=100;
}

break;
case 72: if(row==4) ⁄*Top*⁄
{
gotoxy(55,21);
textcolor(4);
cprintf("Invalid Choice");
}
else
{
gotoxy(55,21);
textcolor(4);
cprintf(" ");
temp = a[row+1][col];
a[row][col]= temp;
a[row+1][col]=100;

}
break;
case 80:if(row==1) ⁄*Bottom*⁄
{
gotoxy(55,21);
textcolor(4);
cprintf("Invalid Choice");
}
else
{
gotoxy(55,21);
textcolor(4);
cprintf(" ");
temp = a[row-1][col];
a[row][col]= temp;
a[row-1][col]=100;
}
break;

case 1 :gotoxy(22,23);
textcolor(7);
cprintf("Are You Sure To Quit (Y⁄N)::");
ch = getche();
if(ch=='y'||ch=='Y')
clrscr(),mainmenu();
else
{
gotoxy(22,23),textbackground(0);
cprintf(" ");
}

}
}⁄* End of While*⁄
}⁄* End of Game *⁄

void write()
{
if(nol==0)
{
gotoxy(32,9);textcolor(3);cprintf("Level 1");
textcolor(6);
gotoxy(3,2);cprintf("1 2 3 4");
gotoxy(3,4);cprintf("5 6 7 8");
gotoxy(3,6);cprintf("9 10 11 12");
gotoxy(3,8);cprintf("13 14 15 ");
}

if(nol==1)
{
gotoxy(32,9);textcolor(3);cprintf("Level 2");
textcolor(6);
gotoxy(3,2);cprintf(" 15 14 13 ");
gotoxy(3,4);cprintf(" 12 11 10 9 ");
gotoxy(3,6);cprintf(" 8 7 6 5 ");
gotoxy(3,8);cprintf(" 4 3 2 1 ");
}

if(nol==2)
{
gotoxy(32,9);textcolor(3);cprintf("Level 3");
textcolor(6);
gotoxy(3,2);cprintf("1 5 9 13 ");
gotoxy(3,4);cprintf("2 6 10 14 ");
gotoxy(3,6);cprintf("3 7 11 15 ");
gotoxy(3,8);cprintf("4 8 12 ");
}

if(nol==3)
{
gotoxy(32,9);textcolor(3);cprintf("Level 4");
textcolor(6);
gotoxy(3,2);cprintf(" 12 8 4 ");
gotoxy(3,4);cprintf(" 15 11 7 3 ");
gotoxy(3,6);cprintf(" 14 10 6 2 ");
gotoxy(3,8);cprintf(" 13 9 5 1 ");
}

if(nol==4)
{
gotoxy(32,9);textcolor(3);cprintf("Level 5");
textcolor(6);
gotoxy(3,2);cprintf(" 1 2 3 4 ");
gotoxy(3,4);cprintf(" 8 7 6 5 ");
gotoxy(3,6);cprintf(" 9 10 11 12 ");
gotoxy(3,8);cprintf(" 15 14 13 ");
}

}

void check()
{
int ok=0;

⁄* Checking*⁄

if (nol==0)
{
for(i=1,temp=1,count=0;i<=4;i++)
for(j=1;j<=4;j++,temp++)
if(a[i][j]==temp)
count++;

if(count>=15)
{
gotoxy(28,22);
textcolor(2+BLINK);
cprintf("CONGRATULATIONS");
nol++;
ok=1;
getch();
}
}

if(nol==1)
{
for(i=4,temp=1,count=0;i>=1;i--)
for(j=4;j>=1;j--,temp++)
if(a[i][j]==temp)
count++;

if(count>=15)
{
gotoxy(28,22);
textcolor(2+BLINK);
cprintf("CONGRATULATIONS");
ok=1;
nol++;
getch();
}
}

if(nol==2)
{
for(i=1,temp=1,count=0;i<=4;i++)
for(j=1;j<=4;j++,temp++)
if(a[j][i]==temp)
count++;

if(count>=15)
{
gotoxy(28,22);
textcolor(2+BLINK);
cprintf("CONGRATULATIONS");
ok=1;
nol++;
getch();
}
}

if(nol==3)
{
for(i=4,temp=1,count=0;i>=1;i--)
for(j=4;j>=1;j--,temp++)
if(a[j][i]==temp)
count++;

if(count>=15)
{
gotoxy(28,22);
textcolor(2+BLINK);
cprintf("CONGRATULATIONS");
ok=1;
nol++;
getch();
}
}

if(nol==4)
{
for(i=1,count=0;i<=4;i++)
for(j=1;j<=4;j++)
if(a[i][j]==b[i][j])
count++;

if(count==16)
{
gotoxy(28,22);
textcolor(2+BLINK);
cprintf("CONGRATULATIONS");
ok=1;
nol++;
getch();
}
}

if(ok==1)
{

if(nol==5)
{
gotoxy(20,23);
textcolor(14);
cprintf(" You Have Finished All The Levels ");
getch();
exit(1);
}
else
{
gotoxy(20,23);
textcolor(14);
cprintf("You Have To Finish %d Levels Only ...",5-nol);
getch();
}

gotoxy(20,23);textbackground(0);
cprintf(" ");
gotoxy(28,23);cprintf(" ");
game();
}
}⁄*end of function*⁄


void box()
{
int i;
textcolor(10);

for(i=1;i<=20;i++)
{
gotoxy(25+i,11); cprintf("%c",205);
gotoxy(25+i,13); cprintf("%c",205);
gotoxy(25+i,15); cprintf("%c",205);
gotoxy(25+i,17); cprintf("%c",205);
gotoxy(25+i,19); cprintf("%c",205);
}

for(i=1;i<=7;i++)
{
gotoxy(25,11+i); cprintf("%c",186);
gotoxy(30,11+i); cprintf("%c",186);
gotoxy(35,11+i); cprintf("%c",186);
gotoxy(40,11+i); cprintf("%c",186);
gotoxy(45,11+i); cprintf("%c",186);
}


gotoxy(25,11); cprintf("%c",201);
gotoxy(45,11); cprintf("%c",187);

gotoxy(25,19); cprintf("%c",200);
gotoxy(45,19); cprintf("%c",188);

gotoxy(30,11); cprintf("%c",203);
gotoxy(35,11); cprintf("%c",203);
gotoxy(40,11); cprintf("%c",203);

gotoxy(30,19); cprintf("%c",202);
gotoxy(35,19); cprintf("%c",202);
gotoxy(40,19); cprintf("%c",202);

gotoxy(25,13); cprintf("%c",204);
gotoxy(25,15); cprintf("%c",204);
gotoxy(25,17); cprintf("%c",204);

gotoxy(45,13); cprintf("%c",185);
gotoxy(45,15); cprintf("%c",185);
gotoxy(45,17); cprintf("%c",185);


for(i=0;i<6;i+=2)
{
gotoxy(30,13+i); cprintf("%c",206);
gotoxy(35,13+i); cprintf("%c",206);
gotoxy(40,13+i); cprintf("%c",206);
}
}⁄⁄end of box

No comments: