Vous êtes sur la page 1sur 6

#include <iostream.

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

int m[22][23];
int col=240, row=220, i=10, j=11;
int play=1,cont=1;
char player1[10],player2[10];

void win(char name[]);


void choi();
int thang(int , int , int );
void xuatvt(int , int , int );
void chu(int , int , int );
void khung(int , int , int );
void khoidau();
void nen();
void phien(char st[], int ,int );
void ktdh(void);

void main(void)
{ khoidau();
ktdh();
do{ play=1;col=240; row=220; i=10; j=11;
for(int i=0; i<22; i++)
for(int j=0; j<23; j++)
m[i][j]=0;
cleardevice();
nen();
choi();
}while(cont==1);
closegraph();
}

void win(char name[])


{
settextstyle(1,0,9);
setcolor(15);
outtextxy(10,10,name);
outtextxy(10,100," won");
}

void choi()
{ char key;
khung(col,row,1);
xuatvt(i,j,3);
char chuoi[236]=" this is program demo caro game between two players. press f2 to
new game, f10 to quit game and when you finish a game, press any key to a new
game. this program was written by hoang truong manh";
int l=strlen(chuoi);
phien(player1,170,15+blink);
do{ do{ settextstyle(2,0,5);
setcolor(15);
outtextxy(1,460,chuoi);
delay(200);
setcolor(1);
outtextxy(1,460,chuoi);
char st=chuoi[0];
for(int i=0; i<l; i++)
chuoi[i]=chuoi[i+1];
chuoi[l]=st;
}while(!kbhit());
key=getch();
if(key==0) key=getch();
if(key==77)
{ khung(col,row,3);
xuatvt(i,j,1);
col=col+20; j++;
if(col==480) {col=20; j=0;}
khung(col,row,1);
xuatvt(i,j,3);
}
if(key==75)
{ khung(col,row,3);
xuatvt(i,j,1);
col=col-20; j--;
if(col==0) {col=460;j=22;}
khung(col,row,1);
xuatvt(i,j,3);
}
if(key==80)
{ khung(col,row,3);
xuatvt(i,j,1);
row=row+20; i++;
if(row==460) {row=20; i=0;}
khung(col,row,1);
xuatvt(i,j,3);
}
if(key==72)
{ khung(col,row,3);
xuatvt(i,j,1);

row=row-20; i--;
if(row==0) {row=440; i=21;}
khung(col,row,1);
xuatvt(i,j,3);
}
if(key==13)
if(m[i][j]==0)
{ chu(col,row,play);
if(play==1)
{ m[i][j]=1;
if(thang(i,j,play)==play)
{ win(player1);getch();
play=-1;return;
}
play=-1;
phien(player1,170,5);
phien(player2,270,15+blink);
}
else
{ m[i][j]=-1;
if(thang(i,j,play)==play)
{ win(player2);getch();
play=1;return;
}
play=1;
phien(player2,270,5);
phien(player1,170,15+blink);
}
}
if(key==60) break;
if(key==68) {cont=0;return;}
}while(key!=68);
}

int thang(int x, int y, int s)


{ if(m[x][y-4]!=-s&&m[x][y-3]==s&&m[x][y-2]==s&&m[x][y-
1]==s&&m[x][y]==s&&m[x][y+1]!=-s)
return(s);
if(m[x][y-3]!=-s&&m[x][y-2]==s&&m[x][y-
1]==s&&m[x][y]==s&&m[x][y+1]==s&&m[x][y+2]!=-s)
return(s);
if(m[x][y-2]!=-s&&m[x][y-
1]==s&&m[x][y]==s&&m[x][y+1]==s&&m[x][y+2]==s&&m[x][y+3]!=-s)
return(s);
if(m[x][y-1]!=-
s&&m[x][y]==s&&m[x][y+1]==s&&m[x][y+2]==s&&m[x][y+3]==s&&m[x][y+4]!=-s)
return(s);

if(m[x-4][y]!=-s&&m[x-3][y]==s&&m[x-2][y]==s&&m[x-
1][y]==s&&m[x][y]==s&&m[x+1][y]!=-s)
return(s);
if(m[x-3][y]!=-s&&m[x-2][y]==s&&m[x-
1][y]==s&&m[x][y]==s&&m[x+1][y]==s&&m[x+2][y]!=-s)
return(s);
if(m[x-2][y]!=-s&&m[x-
1][y]==s&&m[x][y]==s&&m[x+1][y]==s&&m[x+2][y]==s&&m[x+3][y]!=-s)
return(s);
if(m[x-1][y]!=-
s&&m[x][y]==s&&m[x+1][y]==s&&m[x+2][y]==s&&m[x+3][y]==s&&m[x+4][y]!=-s)
return(s);

if(m[x-4][y-4]!=-s&&m[x-3][y-3]==s&&m[x-2][y-2]==s&&m[x-1][y-
1]==s&&m[x][y]==s&&m[x+1][y+1]!=-s)
return(s);
if(m[x-3][y-3]!=-s&&m[x-2][y-2]==s&&m[x-1][y-
1]==s&&m[x][y]==s&&m[x+1][y+1]==s&&m[x+2][y+2]!=-s)
return(s);
if(m[x-2][y-2]!=-s&&m[x-1][y-
1]==s&&m[x][y]==s&&m[x+1][y+1]==s&&m[x+2][y+2]==s&&m[x+3][y+3]!=-s)
return(s);
if(m[x-1][y-1]!=-
s&&m[x][y]==s&&m[x+1][y+1]==s&&m[x+2][y+2]==s&&m[x+3][y+3]==s&&m[x+4][y+4]!=-s)
return(s);

if(m[x-4][y+4]!=-s&&m[x-3][y+3]==s&&m[x-2][y+2]==s&&m[x-
1][y+1]==s&&m[x][y]==s&&m[x+1][y-1]!=-s)
return(s);
if(m[x-3][y+3]!=-s&&m[x-2][y+2]==s&&m[x-1][y+1]==s&&m[x][y]==s&&m[x+1][y-
1]==s&&m[x+2][y-2]!=-s)
return(s);
if(m[x-2][y+2]!=-s&&m[x-1][y+1]==s&&m[x][y]==s&&m[x+1][y-1]==s&&m[x+2][y-
2]==s&&m[x+3][y-3]!=-s)
return(s);
if(m[x-1][y+1]!=-s&&m[x][y]==s&&m[x+1][y-1]==s&&m[x+2][y-2]==s&&m[x+3][y-
3]==s&&m[x+4][y-4]!=-s)
return(s);

return(0);
}

void xuatvt(int x, int y, int color)


{ settextstyle(1,0,1);
setcolor(color);
char c1[3],c2[3],c3[3];
itoa(x+1,c1,10);
itoa(y+1,c2,10);
outtextxy(580,30,c1);
outtextxy(580,60,c2);
}

void chu(int x, int y, int status)


{ settextstyle(1,0,1);
if(status==1)
{ setcolor(14);
outtextxy(x-5,y-13,"o");
}
if(status==-1)
{ setcolor(5);
outtextxy(x-5,y-13,"x");
}
}
void khung(int x, int y, int color)
{ setcolor(color);
line(x-3,y-10,x-7,y-10);
line(x-7,y-10,x-7,y-3);
line(x-7,y+3,x-7,y+8);
line(x-7,y+8,x-3,y+8);
line(x+3,y+8,x+7,y+8);
line(x+7,y+8,x+7,y+3);
line(x+7,y-3,x+7,y-10);
line(x+7,y-10,x+3,y-10);
}

void khoidau()
{ window(1,1,80,25);textbackground(0);textcolor(15); clrscr();
gotoxy(40-5,2);cout<<"caro game";
window(10,4,26,4);textbackground(1);textcolor(14); clrscr();
cout<<" player 1's name ";
do{ window(14,6,50,6);textbackground(0);clrscr();
window(14,6,22,6);textbackground(3);textcolor(5);c lrscr();
fflush(stdin);gets(player1);
}while(strlen(player1)>8);
if(strlen(player1)==0) strcpy(player1,"player 1");
window(54,4,70,4);textbackground(1);textcolor(14); clrscr();
cout<<" player 2's name ";
do{ window(58,6,79,6);textbackground(0);clrscr();
window(58,6,66,6);textbackground(3);textcolor(5);c lrscr();
fflush(stdin);gets(player2);
}while(strlen(player2)>8);
if(strlen(player2)==0) strcpy(player2,"player 2");
return;
}

void nen()
{
setcolor(1);
setfillstyle(1,1);
rectangle(480,1,640,480);
rectangle(1,460,480,480);
floodfill(500,200,1);
floodfill(200,470,1);
setbkcolor(3);
setcolor(6);
for(int i=0; i<24; i++)
line(1,20*i,480,20*i);
for(i=0; i<25; i++)
line(20*i,1,20*i,460);
settextstyle(1,0,1);
setcolor(3);
outtextxy(500,30,"hang = ");
outtextxy(500,60,"cot = ");
settextstyle(2,0,5);
setcolor(15);
outtextxy(500,150,"player 1's name");
outtextxy(500,250,"player 2's name");
settextstyle(1,0,3);
setcolor(5);
outtextxy(510,170,player1);
outtextxy(510,270,player2);
}

void phien(char st[], int col,int mau)


{ settextstyle(1,0,3);
setcolor(mau);
outtextxy(510,col,st);
}

void ktdh(void)
{ int l;
char* grpats = "c:\\borlandc\\bgi";
do{ int grdr = detect;
int grmd;
initgraph(&grdr,&grmd,grpats);
l = graphresult();
if(l!=grok)
{ cout<<"\n loi khoi tao do hoa: "<<grapherrormsg(l);
if(l==grfilenotfound) // neu co loi duong dan thi nhap lai
{ cout<<"\n cho duong dan toi bgi hoac an <ctrl-break> de dung chuong trinh\n";
cout<<" duong dan la: ";
fflush(stdin);
gets(grpats);
}
else exit(0);
}
} while(l!=grok);
return;
}

Vous aimerez peut-être aussi