Cờ caro đơn giản 2 người chơi - Code C
- Đây là chương trình đánh cờ caro hai người (Không có máy đánh tự động). Đơn giản là mình kiểm tra coi ván cờ đã kết thúc hay chưa. Chúng ta sử dụng 1 mảng 2 chiêu để lưu trạng thái của ván cờ với quy ước, 0: chưa có người đánh, 1: người thứ nhất đánh, 2: người thứ 2 đánh. Hoặc theo một cách quy ước nào đó mà bạn thik.
Lưu ý: Các bạn phải dịch đoạn code trên bằng Borland C/C++, hoặc Turbo C++, nó không thể chạy được trên Visual C
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <dos.h>
#define DONG 22
#define COT 66
int Mang[DONG][COT]={0};
int x,y,Luot=1, Luot1=0, Luot2=0;
void KhoiDong();
void Xuat();
void trangtri();
int KiemTra();
void DocPhim();
void InLuot();
void InSoLuot();
void IThang();
void IIThang();
void resetMang();
void main()
{ char cha;
do
{
clrscr();
resetMang();
//KhoiDong();
clrscr();
trangtri();
InLuot();
InSoLuot();
DocPhim();
textcolor(2);
clrscr();
printf ("\n\n\n\n\n\n\n\n\t\tBan co muon choi lai khong? \n\t\t\t->An phim bat ki de choi luot moi.\n\t\t\t->An phim Esc de ket thuc. ");
cha=getch();
}while (cha !=27);
}
void KhoiDong()
{
textcolor(11);
char text[]={'C','o',' ','C','A','R','O',};
for (int i=1; i<80 ; i++)
{
gotoxy(i, 12);
int cuoi;
if ( i<=74)
cuoi=6;
else
cuoi =80-i;
for (int j=0; j<=cuoi; j++)
cprintf ("%c", text[j]);
gotoxy(i-1, 12);
cprintf (" ");
delay(200);
}
}
void Xuat()
{
for (int yy=0; yy< DONG; yy++)
for (int xx=0; xx<COT; xx++)
{
switch(Mang[yy][xx])
{
case 1: textcolor(RED);gotoxy(xx+2,yy+2);cprintf ("X");break;
case 2: textcolor(BLUE);gotoxy(xx+2,yy+2);cprintf ("O");break;
}
}
//gotoxy(1,1);
}
void trangtri()
{
textcolor(6);
int ch;
for (int yy=1; yy<25; yy++)
{
for (int xx=1; xx<=80; xx++)
{
if (xx==69 && yy==3) ch=199;
else if (xx==80 && yy==3) ch=182;
else if (xx>69 && xx<80 && yy==3)ch=196;
else if (xx>1 && xx<80 && (yy==1 || yy==24) && xx!=69) ch=205;
else if (xx==1 && yy==1 ) ch=201;
else if (xx==1 && yy==24) ch=200;
else if (xx==80&& yy==24) ch=188;
else if (xx==80&& yy==1 ) ch=187;
else if ((xx==1||xx==80 || xx==69) && yy>1 && yy<24 ) ch=186;
else if (xx==69 && yy==1 ) ch=203;
else if (xx==69 && yy==24) ch=202;
else ch=0;
cprintf("%c",ch);
}
}
gotoxy(70,2);
textcolor(GREEN);
cprintf("%c%c%c",176,176,176);
textcolor(RED);
cprintf("CARO");
textcolor(GREEN);
cprintf("%c%c%c",176,176,176);
gotoxy(70,20);
printf ("=>Luot: ");
gotoxy(70,8);
printf ("Luot I:");
gotoxy(70,14);
printf ("Luot II:");
}
int KiemTra()
{
for (int i=0; i<DONG; i++)
{
for (int j=0; j<COT; j++)
{
if (Mang[i][j] != 0)
{ int doc=1, ngang =1, cheophu=1, cheochinh=1;
//KT doc
for (int k=1; k<5; k++)
{
if ((i+k >=DONG) || (Mang[i+k][j] !=Mang[i][j]))
doc=0;
if ((j+k>=COT) || (Mang[i][j+k]!=Mang[i][j]))
ngang=0;
if ((i+k>=DONG && j+k>=COT) || (Mang[i+k][j+k]!=Mang[i][j]))
cheochinh=0;
if ((i+k>=DONG && j-k<0) || (Mang[i+k][j-k] != Mang[i][j]))
cheophu=0;
}
if (doc == 1 || ngang ==1 || cheochinh ==1 || cheophu==1)
{
return Mang[i][j];
}
}
}
}
return 0;
}
void DocPhim()
{
x=34; y=12;
char c='a';
gotoxy(x,y);
do
{
c = getch();
if (c == 0)
{
c = getch();
}
switch(c)
{
case 75: if (x>2)
{
x--;
gotoxy(x,y);
}
break;
case 77: if (x<68)
{
x++;
gotoxy(x,y);
}
break;
case 72: if (y>2)
{
y--;
gotoxy(x,y);
}
break;
case 80: if (y<23)
{
y++;
gotoxy(x,y);
}
break;
case 32: if (Mang[y-2][x-2]!=0)
{
printf("%c",7);
}
else
{
Mang[y-2][x-2] = Luot;
if (Luot == 1)
{ Luot1++;
Luot=2;
}
else
{ Luot2++;
Luot=1;
}
InSoLuot();
InLuot();
InSoLuot();
Xuat();
int KQ=KiemTra();
if (KQ == 1)
{
IThang();
return;
}
else if (KQ == 2)
{
IIThang();
return ;
}
gotoxy(x,y);
}
break;
}
} while (c!= 27);
}
void InLuot()
{
textcolor(1);
gotoxy(79,20);
printf ("%d",Luot);
}
void InSoLuot()
{
textcolor(1);
gotoxy(78,8);
printf ("%-2d",Luot1);
gotoxy(78,14);
printf ("%-2d",Luot2);
}
void IThang()
{
gotoxy(10,23);
textcolor(RED);
cprintf("CUOC CHOI KET THUC! NGUOI CHOI THU NHAT DA THANG!");
getch();
}
void IIThang()
{
gotoxy(10,23);
textcolor(BLUE);
cprintf("CUOC CHOI KET THUC! NGUOI CHOI THU HAI DA THANG!");
getch();
}
void resetMang()
{
for (int i=0; i<DONG; i++)
for (int j=0;j<COT; j++)
{
Mang[i][j]=0;
}
}
Lưu ý: Các bạn phải dịch đoạn code trên bằng Borland C/C++, hoặc Turbo C++, nó không thể chạy được trên Visual C
Nhận xét
Đăng nhận xét