Thứ Tư, 28 Tháng Chín 2022
Trang chủLập trìnhLập trình C/C++Lập trình game Cờ Caro trên C/C++ màn hình Console(Demo Game)

Lập trình game Cờ Caro trên C/C++ màn hình Console(Demo Game)

DANH SÁCH BÀI VIẾT
Lập trình tỏ tình người yêu trên Graphics C/C++ – I LOVE YOU
Lập trình Demo Ai Là Triệu Phú trên Graphics C/C++
Lập Trình C/C++ Vẽ và Tô Màu Trái Tim bằng Thư Viện Graphics
Lập trình Đồng Hồ Thời Gian & Bấm Giờ Trên Graphics C/C++ 
Lập trình Game Flappy Bird Trên Graphics C/C++
Lập trình Demo ứng dụng Học lập trình trên Graphics C/C++
Lập trình I LOVE YOU trên Graphics C/C++ – Lập trình tỏ tình Crush
Bóng bay lên trời – Lập trình Happy Birthday  trên C/C++
Tỏ tình Crush bằng code C/C++ – I LOVE YOU ngôn ngữ C/C++
Cách tạo menu game trên thư viện Graphics C/C++
Lập trình game Cờ Caro trên C/C++ màn hình Console(Demo Game)
Lập trình ứng dụng giúp bé học toán trên C/C++ màn hình Console
Lập trình game Rắn săn mồi trên C/C++ màn hình Console(Demo Snake)
Xây dựng demo Code Vượt vật cản trên màn hình Console C/C++

Game Cờ caro hay tic-tac-toe, cũng là một trong các game kinh điển mà hầu như ai cũng đã từng chơi qua. Hôm nay chúng ta cùng nhau code thử trò chơi này trên màn hình Console C/C++ nhé.

Trong demo dưới đây hiện tại chỉ có thể chơi được, và phải chơi giữa 2 người chơi khác nhau, trò chơi vẫn chưa có cơ chế có thể phát hiện thắng trò chơi. Muốn Xây dựng phát hiện thắng trò chơi hoặc chơi với máy cần đến thuật toán gọi là Minimax, demo này được mình viết từ cuối năm nhất đại học lúc đó vẫn chưa tìm hiểu thuật toán này.

Lập trình game Cờ Caro trên C/C++

Trước khi đi vào phần source code, bạn hãy xem qua demo dưới đây.

Xây dựng chương trình

1. Các struc cần định nghĩa

struct Toado{
	int x, y;
};
struct Contro{
	Toado td;
};
struct Xoacontro{
	Toado td;
};
struct XO{
	Toado vtx[300], vto[300];
	int nx = 0,no = 0;
};
  • struct Toado: Sử dụng để lưu tọa độ x,y của 1 điểm
  • struct Contro: Sử dụng để lưu vị trí tọa độ con trỏ của người chơi X Y
  • struct Xoacontro: Sử dụng để xóa vị trí tọa độ con trỏ cũ của người chơi X Y
  • struct XO: Xử dụng để lưu các quân cờ được đánh ra, số lượng quân X Y.

2. Các hàm

void gotoxy(int x,int y) – Hàm này để di chuyển con trỏ tới 1 điểm với tọa độ là x,y trên màn hình

void gotoxy(int x,int y)//x,y là tọa điểm x,y trên màn hình
{    
    HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD a = {x, y};    SetConsoleCursorPosition(h, a);
}

Tọa độ trên màn hình Console thì hơi ngược một chút với tọa độ xy trong toán học. Gốc O sẽ từ vị trí bên trái và phía trên màn hình, tức là trục y sẽ ngược hướng xuống dưới, xem ảnh mình họa để hiểu hơn.

void TextColor(int x) – Hàm này để đổi màu văn bản, với x là màu cần truyền vào.

{
	HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
	COORD g = {x, y};
	SetConsoleCursorPosition(h, g);
}

Màu văn bản x, sẽ chạy từ các số 0-12(Nếu lớn hơn thì chia dư 12). Với số 0 tương ứng màu đen cho tới màu số 12.

void resizeConsole(int width, int height) – Đặt kích thước cửa sổ màn hình Console

void resizeConsole(int width, int height) //Với width là chiều rộng, heigth là chiều cao
{
	HWND console = GetConsoleWindow();
	RECT r;
	GetWindowRect(console, &r);
	MoveWindow(console, r.left, r.top, width, height, TRUE);
}

int main() – Hàm chính

int main()
{
	resizeConsole(700,608); //Đặt kích thước màn hình rộng là 700, cao 608
	int thoat = 0;
	playgame(thoat); //Gọi màn hình khởi tạo menu trò chơi
	system("cls");
	if(thoat == 0)
	{
	khungtrong(); //Kẻ các ô bên trong
	khungngoai();//Vẽ khung hình vuông bên ngàoi
	do{
		int daux = 0, dau0 = 0, dem = 0, dem1 = 0, luotchoi = 0, luuct = 0, xoald = 0;
	    Xoacontro xoacontro, xoacontro1; //Khai báo 2 con trỏ để xóa vị trí con trỏ X, y cũ
		Contro contro, contro1; //Khai báo 2 con trỏ của quân cơ X và Y
		XO A; //Khai báo A
		khoitao(contro, contro1);
		do{
		    if(xoald != 0) Xoacursor(xoacontro, xoacontro1, daux, dau0); xoald = 1;
			hienthi(contro, contro1, daux, dau0, xoacontro, xoacontro1, A); //Hiển thị quá trình của trò chơi
			dieukhien(contro, contro1, xoacontro, xoacontro1, daux, dau0, A, dem, dem1, luotchoi, luuct);//Điều khiển trò chơi(Điều khiển con trỏ tới x bất kì và đnahs ra quân cờ)
			Luotchoi(luotchoi, A); //Lượt chơi luôn phiên X, Y
		}while(1);
    	playgame(thoat);
	}while(1);
gotoxy(0,0);
getch();
}
}

void khungngoai() – Hàm sử dụng để vẽ khung bên ngoài

void khungngoai()
{
	TextColor(11);//Dặt màu vẽ
//Sử dụng vòng lặp vẽ đường thẳng ngang trên cùng màn hình
	for(int i = 0; i<=78; i++)
	{
		gotoxy(i, 0); printf("%c", 205); //Ký tự 205 trong bảng mã ASCII
		Sleep(1);//Tạm dừng 1ms
	}
//Sử dụng vòng lặp vẽ đường thẳng nang phía dưới
		for(int i = 0; i<=78; i++)
	{
		gotoxy(i, 46); printf("%c", 205);
		Sleep(1);
	}
//Sử dụng vòng lặp vẽ đường thẳng dọc bên trái
	for(int i = 0; i<=45; i++)
	{
		gotoxy(0, i); printf("%c", 186);
		Sleep(1);
	}
//Sử dụng vòng lặp vẽ đường thẳng dọc bên phải
	for(int i = 0; i<=45; i++)
	{
		gotoxy(79, i); printf("%c", 186);
		Sleep(1);
	}
//Vẽ 4 góc
	gotoxy(0,0); printf("%c", 201);
	gotoxy(0,46); printf("%c", 200);
	gotoxy(79,0); printf("%c", 187);
	gotoxy(79,46); printf("%c", 188);
	//=> Sau các lệnh này sẽ vẽ được 1 khung hình vuông
//=>Tiếp tục tương tự để vẽ khung hình vuông thứ 2
	TextColor(11);
	for(int i = 2; i<=77; i++)
	{
		gotoxy(i, 1); printf("%c", 205);
		Sleep(1);
	}
		for(int i = 1; i<=77; i++)
	{
		gotoxy(i, 45); printf("%c", 205);
		Sleep(1);
	}
	for(int i = 1; i<=44; i++)
	{
		gotoxy(1, i); printf("%c", 186);
		Sleep(1);
	}
	for(int i = 1; i<=44; i++)
	{
		gotoxy(78, i); printf("%c", 186);
		Sleep(1);
	}
	gotoxy(1,1); printf("%c", 201);
	gotoxy(1,45); printf("%c", 200);
	gotoxy(78,1); printf("%c", 187);
	gotoxy(78,45); printf("%c", 188);
	for(int i = 0; i<15; i++)
	{
		gotoxy(63+i, 4); printf("%c", 205);
	}
	for(int i = 0; i<2; i++)
	{
		gotoxy(63, i+2); printf("%c", 186);
	}
	gotoxy(63, 4); printf("%c", 200);
	gotoxy(67, 2);TextColor(12); printf("Luot Choi");
	TextColor(15); gotoxy(68,3); printf("--   --");
	TextColor(13); gotoxy(71, 3); printf("%c", 2);
	TextColor(11);
	for(int i = 0; i<15; i++)
	{
		gotoxy(2+i, 4); printf("%c", 205);
	}
	for(int i = 0; i<2; i++)
	{
		gotoxy(17, i+2); printf("%c", 186);
	}
		for(int i = 0; i<43; i++)
	{
		gotoxy(19+i, 2); printf("_");
	}

//Vẽ vời thêm một chút
	gotoxy(17, 4); printf("%c", 188);
	gotoxy(34, 0); TextColor(160); printf(" GAME CO CARO ");
	gotoxy(25,2); TextColor(12); printf("TAN CU CHAN - CNTT K16D - ICTU");
	gotoxy(5, 2);TextColor(12); printf("So Quan Co");
	TextColor(15);
	gotoxy(3, 3); printf("  -   |   -   ");
	gotoxy(3, 3); TextColor(14); printf("X");
	gotoxy(11, 3); TextColor(14); printf("O");
	gotoxy(42,40);
}

void khungtrong() – Kẻ các ô bên trong

void khungtrong()
{
	TextColor(15);
  	for(int i = 0; i<=44; i++)
  	{
  		for(int j = 0; j<=24; j++)
  		{
  			if(i < 4) printf(" ");
  			else if(j<3 ) printf(" ");
  			else if(i%2==0  && j>4 && j<23)  printf("%c%c%c%c", 197, 196, 196, 196);
  			else if(i%2==1 && j>4 &&j<23) printf("%c   ", 179);
  			else if(i%2 == 0 && j==23) printf("%c", 197);
  			else if(i%2 == 1 && j == 23) printf("%c", 179);
		  }
		  printf("\n");
	  }
}

void khoitao(Contro &contro, Contro &contro1) – Khởi tạo vị trí 2 con trỏ người chơi X, O

void khoitao(Contro &contro, Contro &contro1)
{
	contro.td.x = 32; contro.td.y = 21;
	contro1.td.x = 40; contro1.td.y = 21;
}

void hienthi(Contro contro, Contro contro1, int daux, int dau0, Xoacontro xoacontro, Xoacontro xoacontro1, XO A) – Hiển thị quá trình trò chơi

void hienthi(Contro contro, Contro contro1, int daux, int dau0, Xoacontro xoacontro, Xoacontro xoacontro1, XO A)
{
   //Contro 1----------------------------------------------------------------------------------------------
   if(daux == 1)
  {
	 	TextColor(14);gotoxy(xoacontro.td.x, xoacontro.td.y); printf(" X ");
	 	gotoxy(contro.td.x, contro.td.y);TextColor(224); printf("   ");
  }
  else if(daux == 2)
  {
  	TextColor(235); gotoxy(contro.td.x, contro.td.y); printf(" X ");
  }
  else if(daux == 0)
  {
  	 gotoxy(contro.td.x, contro.td.y); TextColor(224); printf("   ");
  }
  //Con tro 2----------------------------------------------------------------------------------------------------
  if(dau0 == 1)
  {
	 	TextColor(12);gotoxy(xoacontro1.td.x, xoacontro1.td.y); printf(" O ");
	 	gotoxy(contro1.td.x, contro1.td.y);TextColor(207); printf("   ");
  }
  else if(dau0 == 2)
  {
  	TextColor(207); gotoxy(contro1.td.x, contro1.td.y); printf(" O ");
  }
  else if(dau0 == 0)
  {
  	 gotoxy(contro1.td.x, contro1.td.y); TextColor(207); printf("   ");
  }
  //Khoi phuc các quân cờ------------------------------------------------
  for(int i = 0; i< A.nx; i++)
  {
  	gotoxy(A.vtx[i].x, A.vtx[i].y); TextColor(14); printf(" X ");
  }
   for(int i = 0; i< A.no; i++)
  {
  	gotoxy(A.vto[i].x, A.vto[i].y); TextColor(12); printf(" O ");
  }

  for(int i = 0; i<A.nx; i++)
  {
  	if(contro.td.x == A.vtx[i].x && contro.td.y == A.vtx[i].y)
  	{
  		gotoxy(contro.td.x, contro.td.y);TextColor(233); printf(" X ");
	  }
	  if(contro1.td.x == A.vtx[i].x && contro1.td.y == A.vtx[i].y)
  	{
  		gotoxy(contro1.td.x, contro1.td.y);TextColor(193); printf(" X ");
	  }
  }
  for(int i = 0; i<A.no; i++)
  {
  	  if(contro.td.x == A.vto[i].x && contro.td.y == A.vto[i].y)
    	{
  		gotoxy(contro.td.x, contro.td.y);TextColor(233); printf(" O ");
	  }
	  	if(contro1.td.x == A.vto[i].x && contro1.td.y == A.vto[i].y)
  	{
  		gotoxy(contro1.td.x, contro1.td.y);TextColor(193); printf(" O ");
	  }
  }
}

void dieukhien(Contro &contro,Contro &contro1, Xoacontro &xoacontro, Xoacontro &xoacontro1, int &daux, int &dau0, XO &A, int &dem, int &dem1, int &luotchoi, int &luuct) – Điều khiển 2 con trỏ của người chơi X, O tới tọa độ bất kì rồi đánh ra quân cờ.

void dieukhien(Contro &contro,Contro &contro1, Xoacontro &xoacontro, Xoacontro &xoacontro1, int &daux, int &dau0, XO &A, int &dem, int &dem1, int &luotchoi, int &luuct)
{
	int ct = 5;
//	if(kbhit())
	{
		int a = getch();//Lệnh bắt phím nhấn

//Sử dụng các phím a,s,d,w để di chuyên con trỏ X, và phím e để đánh ra quân cờ X
		if(a == 'a' || a == 'A') ct = 0;
		else if(a == 'd' || a == 'D') ct = 1;
		else if(a == 's' || a == 'S') ct = 2;
		else if(a == 'w' || a == 'W') ct = 3;
		else if(a == 'e' || a == 'E') ct = 4;

//Sử dụng các phím số 4 6 2 8 để di chuyên con trỏ O, và phím số 5 để đánh ra quân cờ O
		else if(a == '4') ct=10;
		else if(a == '6') ct=11;
		else if(a == '2') ct=12;
		else if(a == '8') ct=13;
		else if(a == '5') ct=14;
	}
//Lưu lại con trỏ hiện tại bằng biến con trỏ cũ
	xoacontro.td = contro.td;
    xoacontro1.td = contro1.td;


//=>Các câu lệnh đối với con trỏ X ( - người chơi X)
	if(ct == 0 && contro.td.x > 5) contro.td.x = contro.td.x-4;       //Nếu nhấn phím a, tọa độ x của người chơi X sẽ trừ - 4, vì mỗi ô cách nhau là 4 đơn vị tọa độ(dịch con trỏ sang trái)
	else if(ct == 1 && contro.td.x < 71) contro.td.x = contro.td.x+4;  //tương tự tọa đô x+4(Dịch con trỏ sang phải)
	else if(ct == 2 && contro.td.y <43) contro.td.y = contro.td.y+2;   //Neu  Nhan phim S, tọa độ y sẽ trừ đi 2, vì mỗi ô chỉ chiếm 2 đơn vị tọa độ theo chiều dọc(Dịch chuyển xuống dưới)
    else if(ct == 3 && contro.td.y > 5) contro.td.y = contro.td.y-2;   //Neu Nhan phim W, tương tự nhưng y-2(Dịch chuyển lên)
	else if(ct == 4) 
	{
	int n = 0;
	 if(luotchoi == 0 || luotchoi %2 == 1) //Kiểm tra lượt chơi là của X hay là O
	 {
      for(int i = 0; i<A.nx; i++) if(contro.td.x == A.vtx[i].x && contro.td.y == A.vtx[i].y) n++;
      for(int i = 0; i<A.no; i++) if(contro.td.x == A.vto[i].x && contro.td.y == A.vto[i].y) n++;
	  if(luotchoi == 0) luotchoi = 1;
	  if(n == 0)
	  {
	  	if(luuct == ct) luotchoi++;
	    daux = 2;
	    A.vtx[dem] = contro.td;
	    dem++;
	    A.nx++;
         }
         else if(n >= 1 && luuct!=ct) luotchoi--;
	   }
	 }  //Nhan phim E



//=>Các câu lệnh đối với con trỏ Y ( - người chơi Y) (Tương tự với người chơi X)
	else if(ct == 10 && contro1.td.x > 5) contro1.td.x = contro1.td.x-4;    // nhan phim 4
	else if(ct == 11 && contro1.td.x < 71) contro1.td.x = contro1.td.x+4;  //Nhan phim 6
	else if(ct == 12 && contro1.td.y <43) contro1.td.y = contro1.td.y+2;   //Nhan phim 2
    else if(ct == 13 && contro1.td.y > 5) contro1.td.y = contro1.td.y-2;   //Nhan phim 8
    else if(ct == 14)
	{
		int n = 0;
	 if(luotchoi == 0 || luotchoi %2 == 0)
	 {
	 	for(int i = 0; i<A.no; i++) if(contro1.td.x == A.vto[i].x && contro1.td.y == A.vto[i].y) n++;
	 	for(int i = 0; i<A.nx; i++) if(contro1.td.x == A.vtx[i].x && contro1.td.y == A.vtx[i].y) n++;
	 	if(n == 0)
	 	{
	 	  if(ct == luuct) luotchoi++;
	     dau0 = 2;
	     A.vto[dem1] = contro1.td;
	     dem1++;
	     A.no++;
        }
         else if(n >= 1 && luuct!=ct) luotchoi--;
	   }
	  } //Nhan phim 5
    if((ct == 10||ct == 11||ct==12||ct==13)&& dau0>=1) dau0--;
    if((ct == 0||ct == 1||ct==2||ct==3)&& daux>=1) daux--;
  if(ct == 4 || ct == 14)
  {
  if(ct != luuct) luotchoi++;
  luuct = ct;
     }
}

void Xoacursor(Xoacontro xoacontro, Xoacontro xoacontro1, int daux,int dau0) – Hàm xóa con trỏ cũ của X, O

void Xoacursor(Xoacontro xoacontro, Xoacontro xoacontro1, int daux,int dau0)
{
	gotoxy(xoacontro.td.x, xoacontro.td.y);
	if(daux == 0) printf("   ");//Ghi đè dấu khoảng trắng để xóa con trỏ
	gotoxy(xoacontro1.td.x, xoacontro1.td.y);
	if(dau0 == 0) printf("   ");
}

void Luotchoi(int luotchoi,XO A ) – Hàm tạo lượt chơi của X, O

void Luotchoi(int luotchoi,XO A )
{

//Ghi lượt chơi của X hoặc là O
	gotoxy(71, 3);
	TextColor(14);
	if(luotchoi >0 && luotchoi%2 == 1) printf("X");
	else if(luotchoi > 0 && luotchoi %2 == 0)
	{
       TextColor(12);
	   printf("O");
       }

//Ghi tổng số quân cờ của X và O
    gotoxy(7, 3); TextColor(14); printf("%d", A.nx);
    gotoxy(15,3); TextColor(14); printf("%d", A.no);
}

void playgame(int &thoat) – Hàm tạo menu bắt đầu trò chơi

void playgame(int &thoat)
{
	khungplay(); //Vẽ khung play
	TextColor(14);
	TextColor(202);
	gotoxy(33, 15); printf("%c PLAY GAME  ", 175);
	TextColor(14);
	gotoxy(35, 16); printf("HELP");
	gotoxy(35, 17); printf("ABOUT");
	gotoxy(35, 18); printf("EXIT");
	int chon = 0;
	int toado = 15;
	do{
		char a = getch();
		if(a == 80 ||a == 's'||a=='S'||a=='2') chon = 1;
		else if(a == 72 || a == 'w'||a=='W'||a=='8') chon = 2;
		else if(a == 13 ||a =='e'||a=='e' ||a=='5') chon = 3;
		else chon = 0;
		if(chon == 1 && toado < 18) toado++;
		else if(chon == 2 && toado >15) toado--;
		if(toado == 15)
		{
		    TextColor(202);
			gotoxy(33, 15); printf("%c PLAY GAME  ", 175);
			TextColor(14);
	        gotoxy(33, 16); printf("  HELP         ");
	        gotoxy(33, 17); printf("  ABOUT        ");
         	gotoxy(33, 18); printf("  EXIT         ");
         	TextColor(0);
		}
		if(toado == 16)
		{
			TextColor(14);
			gotoxy(33, 15); printf("  PLAY GAME    ");
			TextColor(202);
	        gotoxy(33, 16); printf("%c HELP       ", 175);
	        TextColor(14);
	        gotoxy(33, 17); printf("  ABOUT        ");
         	gotoxy(33, 18); printf("  EXIT         ");
         	TextColor(0);
		}
		if(toado == 17)
		{
			TextColor(14); 
			gotoxy(33, 15); printf("  PLAY GAME  ", 175);
	        gotoxy(33, 16); printf("  HELP       ");
	        TextColor(202);
	        gotoxy(33, 17); printf("%c ABOUT      ", 175);
	        TextColor(14);
         	gotoxy(33, 18); printf("  EXIT       ");
         	TextColor(0);
		}
			if(toado == 18)
		{
			TextColor(14);
			gotoxy(33, 15); printf("  PLAY GAME    ", 175);
	        gotoxy(33, 16); printf("  HELP         ");
	        gotoxy(33, 17); printf("  ABOUT        ");
	        TextColor(202);
         	gotoxy(33, 18); printf("%c EXIT       ", 175);
		}
	}while(chon != 3);
	system("cls");
	if(toado == 16) help(thoat);
	else if(toado == 17) about(thoat);
	else if(toado == 18) thoat = 1;
}

void khungplay()
{
	TextColor(12);
	for(int i = 0; i<78; i++)
	{
		gotoxy(1+i, 0); printf("%c", 220);
	}
    	for(int i = 0; i<78; i++)
	{
		gotoxy(1+i, 46); printf("%c", 205);
	}
	for(int j = 0; j<45; j++)
	{
		gotoxy(0, j+1); printf("%c", 186);
	}
		for(int j = 0; j<45; j++)
	{
		gotoxy(79, j+1); printf("%c", 186);
	}
	gotoxy(0,0); printf("%c", 201);
	gotoxy(0,46); printf("%c", 200);
	gotoxy(79,0); printf("%c", 187);
	gotoxy(79,46); printf("%c", 188);
    gotoxy(34, 0); TextColor(160); printf(" GAME CO CARO ");
	TextColor(1);
	for(int i = 0; i<55; i++)
	{
		gotoxy(13+i, 42); printf("%c", 205);
	}
		for(int i = 0; i<55; i++)
	{
		gotoxy(13+i, 44); printf("%c", 205);
	}
	gotoxy(32, 43); printf("Fb.con/tanchan679");
	TextColor(11);
		for(int i = 0; i<45; i++)
	{
		gotoxy(18+i, 11); printf("%c", 205);
	}
		for(int i = 0; i<45; i++)
	{
		gotoxy(18+i, 21); printf("%c", 205);
	}
	TextColor(2);
	gotoxy(3,31); printf("$$$$$$$  $$$$$$$   $$$$   $$$   $$$$$$$$  $$$   $$$  $$$$$$$$  $$$$   $$$\n"); Sleep(40);
	gotoxy(3,32); printf("  $$$   $$$   $$$  $$$$$  $$$   $$$  $$$  $$$   $$$ $$$    $$$ $$$$$  $$$\n"); Sleep(40); TextColor(3);
	gotoxy(3,33); printf("  $$$   $$$   $$$  $$$$$$ $$$   $$$       $$$$$$$$$ $$$    $$$ $$$$$$ $$$\n"); Sleep(40);
	gotoxy(3,34); printf("  $$$   $$$$$$$$$  $$$ $$$$$$   $$$       $$$   $$$ $$$$$$$$$$ $$$ $$$$$$\n"); Sleep(40);	TextColor(4);
	gotoxy(3,35); printf("  $$$   $$$   $$$  $$$  $$$$$   $$$   $$$ $$$   $$$ $$$    $$$ $$$  $$$$$\n"); Sleep(40);
	gotoxy(3,36); printf("  $$$   $$$   $$$  $$$   $$$$   $$$$$$$$$ $$$   $$$ $$$    $$$ $$$   $$$$\n");
}

void help(int &thoat) – Màn hình hướng dẫn trò chơi

void help(int &thoat)
{
	khungplay();
		for(int i = 0; i<45; i++)
	{
		gotoxy(18+i, 11); printf(" ");
	}
		for(int i = 0; i<45; i++)
	{
		gotoxy(18+i, 21); printf(" ");
	}
	gotoxy(33, 8);TextColor(12); printf("DIEU KHIEN");
	TextColor(14);
	gotoxy(12,10);  printf("NGUOI CHOI 1");
	gotoxy(16, 12); printf("A: Sang Trai");
	gotoxy(16, 13); printf("D: Sang Phai");
	gotoxy(16, 14); printf("S: Len Tren");
	gotoxy(16, 15); printf("W: Xuong Duoi");
	gotoxy(16, 16); printf("E: OK");
	
	gotoxy(46,10);  printf("NGUOI CHOI 2");
	gotoxy(50, 12); printf("4: Sang Trai");
	gotoxy(50, 13); printf("6: Sang Phai");
	gotoxy(50, 14); printf("8: Len Tren");
	gotoxy(50, 15); printf("2: Xuong Duoi");
	gotoxy(50, 16); printf("5: OK");
	gotoxy(37,40); TextColor(47); printf("  EXIT  ");
	gotoxy(41,40);
	TextColor(0);
	char a;
	do
	{
		a = getch();
	}while(a!=13 && a != 'e' && a != 'E' && a !='5' && a !=8);
	system("cls");
	fflush(stdin);
	playgame(thoat);
}

void about(int &thoat) – Màn hình Ablout

void about(int &thoat)
{
 khungplay();
 		for(int i = 0; i<45; i++)
	{
		gotoxy(18+i, 11); printf(" ");
	}
		for(int i = 0; i<45; i++)
	{
		gotoxy(18+i, 21); printf(" ");
	}
 gotoxy(22, 10); TextColor(11); printf("Name:");       gotoxy(34, 10); TextColor(15); printf("TAN CU CHAN");
 gotoxy(22, 11); TextColor(11); printf("Birthday:");   gotoxy(34, 11); TextColor(10); printf("16/07/1999");
 gotoxy(22, 12); TextColor(11); printf("Fcebook:");    gotoxy(34, 12); TextColor(10); printf("Fb.com/tanchan679");
 gotoxy(22, 13); TextColor(11); printf("Gmail:");      gotoxy(34, 13); TextColor(10); printf("tanchan679@gmail.com");
 gotoxy(22, 14); TextColor(11); printf("Address:");    gotoxy(34, 14); TextColor(10); printf("Sin Ho - Lai Chau");
 gotoxy(22, 15); TextColor(11); printf("Schools:");    gotoxy(34,15); TextColor(10); printf("CNTT & TT Thai Nguyen");
 gotoxy(22, 16); TextColor(11); printf("Occupation:"); gotoxy(34, 16); TextColor(10); printf("Sinh Vien");
 gotoxy(22, 17); TextColor(11); printf("Hobby:");      gotoxy(34, 17); TextColor(10); printf("Play Game");
 
 	 gotoxy(37,40); TextColor(47); printf("  EXIT  ");
	gotoxy(41,40);
	TextColor(0);
 char a;
	do
	{
		a = getch();
	}while(a!=13 && a != 'e' && a != 'E' && a !='5' && a != 8);
	system("cls");
	fflush(stdin);
	playgame(thoat);
}

Chương trình hoàn thành

MÃ NGUỒN CHƯƠNG TRÌNH

#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
void TextColor(int x)
{
	HANDLE mau = GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleTextAttribute(mau,x);
}
void gotoxy(int x, int y)
{
  HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
  COORD c = { x, y };  
  SetConsoleCursorPosition(h,c);
}
void resizeConsole(int width, int height)
{
	HWND console = GetConsoleWindow();
	RECT r;
	GetWindowRect(console, &r);
	MoveWindow(console, r.left, r.top, width, height, TRUE);
}
struct Toado{
	int x, y;
};
struct Contro{
	Toado td;
};
struct Xoacontro{
	Toado td;
};
struct XO{
	Toado vtx[300], vto[300];
	int nx = 0,no = 0;
};


void khungngoai();
void khungtrong();
void khoitao(Contro &contro, Contro &contro1);
void hienthi(Contro contro, Contro contro1, int daux, int dau0, Xoacontro xoacontro,  Xoacontro xoacontro1, XO A);
void dieukhien(Contro &contro,Contro &contro1, Xoacontro &xoacontro, Xoacontro &xoacontro1, int &daux, int &dau0, XO &A, int &dem, int &dem1, int &luotchoi, int &luuct);
void Xoacursor(Xoacontro xoacontro, Xoacontro xoacontro1, int daux, int dau0);
void Luotchoi(int luotchoi, XO A);
void playgame(int &thoat);
void khungplay();
void help(int &thoat);
void about(int &thoat);


int main()
{
	resizeConsole(700,608);
	int thoat = 0;
	playgame(thoat);
	system("cls");
	if(thoat == 0)
	{
	khungtrong();
	khungngoai();
	do{
		int daux = 0, dau0 = 0, dem = 0, dem1 = 0, luotchoi = 0, luuct = 0, xoald = 0;
	    Xoacontro xoacontro, xoacontro1;
		Contro contro, contro1;
		XO A;
		khoitao(contro, contro1);
		do{
		    if(xoald != 0) Xoacursor(xoacontro, xoacontro1, daux, dau0); xoald = 1;
			hienthi(contro, contro1, daux, dau0, xoacontro, xoacontro1, A);
			dieukhien(contro, contro1, xoacontro, xoacontro1, daux, dau0, A, dem, dem1, luotchoi, luuct);
			Luotchoi(luotchoi, A);
		}while(1);
    	playgame(thoat);
	}while(1);
gotoxy(0,0);
getch();
}
}
void khungngoai()
{
	TextColor(11);
	for(int i = 0; i<=78; i++)
	{
		gotoxy(i, 0); printf("%c", 205);
		Sleep(1);
	}
		for(int i = 0; i<=78; i++)
	{
		gotoxy(i, 46); printf("%c", 205);
		Sleep(1);
	}
	for(int i = 0; i<=45; i++)
	{
		gotoxy(0, i); printf("%c", 186);
		Sleep(1);
	}
	for(int i = 0; i<=45; i++)
	{
		gotoxy(79, i); printf("%c", 186);
		Sleep(1);
	}
	gotoxy(0,0); printf("%c", 201);
	gotoxy(0,46); printf("%c", 200);
	gotoxy(79,0); printf("%c", 187);
	gotoxy(79,46); printf("%c", 188);
	
	TextColor(11);
	for(int i = 2; i<=77; i++)
	{
		gotoxy(i, 1); printf("%c", 205);
		Sleep(1);
	}
		for(int i = 1; i<=77; i++)
	{
		gotoxy(i, 45); printf("%c", 205);
		Sleep(1);
	}
	for(int i = 1; i<=44; i++)
	{
		gotoxy(1, i); printf("%c", 186);
		Sleep(1);
	}
	for(int i = 1; i<=44; i++)
	{
		gotoxy(78, i); printf("%c", 186);
		Sleep(1);
	}
	gotoxy(1,1); printf("%c", 201);
	gotoxy(1,45); printf("%c", 200);
	gotoxy(78,1); printf("%c", 187);
	gotoxy(78,45); printf("%c", 188);
	for(int i = 0; i<15; i++)
	{
		gotoxy(63+i, 4); printf("%c", 205);
	}
	for(int i = 0; i<2; i++)
	{
		gotoxy(63, i+2); printf("%c", 186);
	}
	gotoxy(63, 4); printf("%c", 200);
	gotoxy(67, 2);TextColor(12); printf("Luot Choi");
	TextColor(15); gotoxy(68,3); printf("--   --");
	TextColor(13); gotoxy(71, 3); printf("%c", 2);
	TextColor(11);
	for(int i = 0; i<15; i++)
	{
		gotoxy(2+i, 4); printf("%c", 205);
	}
	for(int i = 0; i<2; i++)
	{
		gotoxy(17, i+2); printf("%c", 186);
	}
		for(int i = 0; i<43; i++)
	{
		gotoxy(19+i, 2); printf("_");
	}
	gotoxy(17, 4); printf("%c", 188);
	gotoxy(34, 0); TextColor(160); printf(" GAME CO CARO ");
	gotoxy(25,2); TextColor(12); printf("TAN CU CHAN - CNTT K16D - ICTU");
	gotoxy(5, 2);TextColor(12); printf("So Quan Co");
	TextColor(15);
	gotoxy(3, 3); printf("  -   |   -   ");
	gotoxy(3, 3); TextColor(14); printf("X");
	gotoxy(11, 3); TextColor(14); printf("O");
	gotoxy(42,40);
}
void khungtrong()
{
	TextColor(15);
  	for(int i = 0; i<=44; i++)
  	{
  		for(int j = 0; j<=24; j++)
  		{
  			if(i < 4) printf(" ");
  			else if(j<3 ) printf(" ");
  			else if(i%2==0  && j>4 && j<23)  printf("%c%c%c%c", 197, 196, 196, 196);
  			else if(i%2==1 && j>4 &&j<23) printf("%c   ", 179);
  			else if(i%2 == 0 && j==23) printf("%c", 197);
  			else if(i%2 == 1 && j == 23) printf("%c", 179);
		  }
		  printf("\n");
	  }
}
void khoitao(Contro &contro, Contro &contro1)
{
	contro.td.x = 32; contro.td.y = 21;
	contro1.td.x = 40; contro1.td.y = 21;
}

void hienthi(Contro contro, Contro contro1, int daux, int dau0, Xoacontro xoacontro, Xoacontro xoacontro1, XO A)
{
   //Contro 1----------------------------------------------------------------------------------------------
   if(daux == 1)
  {
	 	TextColor(14);gotoxy(xoacontro.td.x, xoacontro.td.y); printf(" X ");
	 	gotoxy(contro.td.x, contro.td.y);TextColor(224); printf("   ");
  }
  else if(daux == 2)
  {
  	TextColor(235); gotoxy(contro.td.x, contro.td.y); printf(" X ");
  }
  else if(daux == 0)
  {
  	 gotoxy(contro.td.x, contro.td.y); TextColor(224); printf("   ");
  }
  //Con tro 2----------------------------------------------------------------------------------------------------
  if(dau0 == 1)
  {
	 	TextColor(12);gotoxy(xoacontro1.td.x, xoacontro1.td.y); printf(" O ");
	 	gotoxy(contro1.td.x, contro1.td.y);TextColor(207); printf("   ");
  }
  else if(dau0 == 2)
  {
  	TextColor(207); gotoxy(contro1.td.x, contro1.td.y); printf(" O ");
  }
  else if(dau0 == 0)
  {
  	 gotoxy(contro1.td.x, contro1.td.y); TextColor(207); printf("   ");
  }
  //Khoi phuc cac quan co------------------------------------------------
  for(int i = 0; i< A.nx; i++)
  {
  	gotoxy(A.vtx[i].x, A.vtx[i].y); TextColor(14); printf(" X ");
  }
   for(int i = 0; i< A.no; i++)
  {
  	gotoxy(A.vto[i].x, A.vto[i].y); TextColor(12); printf(" O ");
  }

  for(int i = 0; i<A.nx; i++)
  {
  	if(contro.td.x == A.vtx[i].x && contro.td.y == A.vtx[i].y)
  	{
  		gotoxy(contro.td.x, contro.td.y);TextColor(233); printf(" X ");
	  }
	  if(contro1.td.x == A.vtx[i].x && contro1.td.y == A.vtx[i].y)
  	{
  		gotoxy(contro1.td.x, contro1.td.y);TextColor(193); printf(" X ");
	  }
  }
  for(int i = 0; i<A.no; i++)
  {
  	  if(contro.td.x == A.vto[i].x && contro.td.y == A.vto[i].y)
    	{
  		gotoxy(contro.td.x, contro.td.y);TextColor(233); printf(" O ");
	  }
	  	if(contro1.td.x == A.vto[i].x && contro1.td.y == A.vto[i].y)
  	{
  		gotoxy(contro1.td.x, contro1.td.y);TextColor(193); printf(" O ");
	  }
  }
}
void dieukhien(Contro &contro,Contro &contro1, Xoacontro &xoacontro, Xoacontro &xoacontro1, int &daux, int &dau0, XO &A, int &dem, int &dem1, int &luotchoi, int &luuct)
{
	int ct = 5;
//	if(kbhit())
	{
		int a = getch();
		if(a == 'a' || a == 'A') ct = 0;
		else if(a == 'd' || a == 'D') ct = 1;
		else if(a == 's' || a == 'S') ct = 2;
		else if(a == 'w' || a == 'W') ct = 3;
		else if(a == 'e' || a == 'E') ct = 4;
		else if(a == '4') ct=10;
		else if(a == '6') ct=11;
		else if(a == '2') ct=12;
		else if(a == '8') ct=13;
		else if(a == '5') ct=14;
	}
	xoacontro.td = contro.td;
    xoacontro1.td = contro1.td;
	if(ct == 0 && contro.td.x > 5) contro.td.x = contro.td.x-4;       // nhan phim a
	else if(ct == 1 && contro.td.x < 71) contro.td.x = contro.td.x+4;  //Nhan phim d
	else if(ct == 2 && contro.td.y <43) contro.td.y = contro.td.y+2;   //Nhan phim S
    else if(ct == 3 && contro.td.y > 5) contro.td.y = contro.td.y-2;   //Nhan phim W
	else if(ct == 4) 
	{
	int n = 0;
	 if(luotchoi == 0 || luotchoi %2 == 1)
	 {
      for(int i = 0; i<A.nx; i++) if(contro.td.x == A.vtx[i].x && contro.td.y == A.vtx[i].y) n++;
      for(int i = 0; i<A.no; i++) if(contro.td.x == A.vto[i].x && contro.td.y == A.vto[i].y) n++;
	  if(luotchoi == 0) luotchoi = 1;
	  if(n == 0)
	  {
	  	if(luuct == ct) luotchoi++;
	    daux = 2;
	    A.vtx[dem] = contro.td;
	    dem++;
	    A.nx++;
         }
         else if(n >= 1 && luuct!=ct) luotchoi--;
	   }
	 }  //Nhan phim E
	else if(ct == 10 && contro1.td.x > 5) contro1.td.x = contro1.td.x-4;    // nhan phim 4
	else if(ct == 11 && contro1.td.x < 71) contro1.td.x = contro1.td.x+4;  //Nhan phim 6
	else if(ct == 12 && contro1.td.y <43) contro1.td.y = contro1.td.y+2;   //Nhan phim 2
    else if(ct == 13 && contro1.td.y > 5) contro1.td.y = contro1.td.y-2;   //Nhan phim 8
    else if(ct == 14)
	{
		int n = 0;
	 if(luotchoi == 0 || luotchoi %2 == 0)
	 {
	 	for(int i = 0; i<A.no; i++) if(contro1.td.x == A.vto[i].x && contro1.td.y == A.vto[i].y) n++;
	 	for(int i = 0; i<A.nx; i++) if(contro1.td.x == A.vtx[i].x && contro1.td.y == A.vtx[i].y) n++;
	 	if(n == 0)
	 	{
	 	  if(ct == luuct) luotchoi++;
	     dau0 = 2;
	     A.vto[dem1] = contro1.td;
	     dem1++;
	     A.no++;
        }
         else if(n >= 1 && luuct!=ct) luotchoi--;
	   }
	  } //Nhan phim 5
    if((ct == 10||ct == 11||ct==12||ct==13)&& dau0>=1) dau0--;
    if((ct == 0||ct == 1||ct==2||ct==3)&& daux>=1) daux--;
  if(ct == 4 || ct == 14)
  {
  if(ct != luuct) luotchoi++;
  luuct = ct;
     }
}
void Xoacursor(Xoacontro xoacontro, Xoacontro xoacontro1, int daux,int dau0)
{
	gotoxy(xoacontro.td.x, xoacontro.td.y);
	if(daux == 0) printf("   ");
	gotoxy(xoacontro1.td.x, xoacontro1.td.y);
	if(dau0 == 0) printf("   ");
}
void Luotchoi(int luotchoi,XO A )
{
	gotoxy(71, 3);
	TextColor(14);
	if(luotchoi >0 && luotchoi%2 == 1) printf("X");
	else if(luotchoi > 0 && luotchoi %2 == 0)
	{
       TextColor(12);
	   printf("O");
       }
    gotoxy(7, 3); TextColor(14); printf("%d", A.nx);
    gotoxy(15,3); TextColor(14); printf("%d", A.no);
}

void playgame(int &thoat)
{
	khungplay();
	TextColor(14);
	TextColor(202);
	gotoxy(33, 15); printf("%c PLAY GAME  ", 175);
	TextColor(14);
	gotoxy(35, 16); printf("HELP");
	gotoxy(35, 17); printf("ABOUT");
	gotoxy(35, 18); printf("EXIT");
	int chon = 0;
	int toado = 15;
	do{
		char a = getch();
		if(a == 80 ||a == 's'||a=='S'||a=='2') chon = 1;
		else if(a == 72 || a == 'w'||a=='W'||a=='8') chon = 2;
		else if(a == 13 ||a =='e'||a=='e' ||a=='5') chon = 3;
		else chon = 0;
		if(chon == 1 && toado < 18) toado++;
		else if(chon == 2 && toado >15) toado--;
		if(toado == 15)
		{
		    TextColor(202);
			gotoxy(33, 15); printf("%c PLAY GAME  ", 175);
			TextColor(14);
	        gotoxy(33, 16); printf("  HELP         ");
	        gotoxy(33, 17); printf("  ABOUT        ");
         	gotoxy(33, 18); printf("  EXIT         ");
         	TextColor(0);
		}
		if(toado == 16)
		{
			TextColor(14);
			gotoxy(33, 15); printf("  PLAY GAME    ");
			TextColor(202);
	        gotoxy(33, 16); printf("%c HELP       ", 175);
	        TextColor(14);
	        gotoxy(33, 17); printf("  ABOUT        ");
         	gotoxy(33, 18); printf("  EXIT         ");
         	TextColor(0);
		}
		if(toado == 17)
		{
			TextColor(14); 
			gotoxy(33, 15); printf("  PLAY GAME  ", 175);
	        gotoxy(33, 16); printf("  HELP       ");
	        TextColor(202);
	        gotoxy(33, 17); printf("%c ABOUT      ", 175);
	        TextColor(14);
         	gotoxy(33, 18); printf("  EXIT       ");
         	TextColor(0);
		}
			if(toado == 18)
		{
			TextColor(14);
			gotoxy(33, 15); printf("  PLAY GAME    ", 175);
	        gotoxy(33, 16); printf("  HELP         ");
	        gotoxy(33, 17); printf("  ABOUT        ");
	        TextColor(202);
         	gotoxy(33, 18); printf("%c EXIT       ", 175);
		}
	}while(chon != 3);
	system("cls");
	if(toado == 16) help(thoat);
	else if(toado == 17) about(thoat);
	else if(toado == 18) thoat = 1;
}

void khungplay()
{
	TextColor(12);
	for(int i = 0; i<78; i++)
	{
		gotoxy(1+i, 0); printf("%c", 220);
	}
    	for(int i = 0; i<78; i++)
	{
		gotoxy(1+i, 46); printf("%c", 205);
	}
	for(int j = 0; j<45; j++)
	{
		gotoxy(0, j+1); printf("%c", 186);
	}
		for(int j = 0; j<45; j++)
	{
		gotoxy(79, j+1); printf("%c", 186);
	}
	gotoxy(0,0); printf("%c", 201);
	gotoxy(0,46); printf("%c", 200);
	gotoxy(79,0); printf("%c", 187);
	gotoxy(79,46); printf("%c", 188);
    gotoxy(34, 0); TextColor(160); printf(" GAME CO CARO ");
	TextColor(1);
	for(int i = 0; i<55; i++)
	{
		gotoxy(13+i, 42); printf("%c", 205);
	}
		for(int i = 0; i<55; i++)
	{
		gotoxy(13+i, 44); printf("%c", 205);
	}
	gotoxy(32, 43); printf("Fb.con/tanchan679");
	TextColor(11);
		for(int i = 0; i<45; i++)
	{
		gotoxy(18+i, 11); printf("%c", 205);
	}
		for(int i = 0; i<45; i++)
	{
		gotoxy(18+i, 21); printf("%c", 205);
	}
	TextColor(2);
	gotoxy(3,31); printf("$$$$$$$  $$$$$$$   $$$$   $$$   $$$$$$$$  $$$   $$$  $$$$$$$$  $$$$   $$$\n"); Sleep(40);
	gotoxy(3,32); printf("  $$$   $$$   $$$  $$$$$  $$$   $$$  $$$  $$$   $$$ $$$    $$$ $$$$$  $$$\n"); Sleep(40); TextColor(3);
	gotoxy(3,33); printf("  $$$   $$$   $$$  $$$$$$ $$$   $$$       $$$$$$$$$ $$$    $$$ $$$$$$ $$$\n"); Sleep(40);
	gotoxy(3,34); printf("  $$$   $$$$$$$$$  $$$ $$$$$$   $$$       $$$   $$$ $$$$$$$$$$ $$$ $$$$$$\n"); Sleep(40);	TextColor(4);
	gotoxy(3,35); printf("  $$$   $$$   $$$  $$$  $$$$$   $$$   $$$ $$$   $$$ $$$    $$$ $$$  $$$$$\n"); Sleep(40);
	gotoxy(3,36); printf("  $$$   $$$   $$$  $$$   $$$$   $$$$$$$$$ $$$   $$$ $$$    $$$ $$$   $$$$\n");
}
void help(int &thoat)
{
	khungplay();
		for(int i = 0; i<45; i++)
	{
		gotoxy(18+i, 11); printf(" ");
	}
		for(int i = 0; i<45; i++)
	{
		gotoxy(18+i, 21); printf(" ");
	}
	gotoxy(33, 8);TextColor(12); printf("DIEU KHIEN");
	TextColor(14);
	gotoxy(12,10);  printf("NGUOI CHOI 1");
	gotoxy(16, 12); printf("A: Sang Trai");
	gotoxy(16, 13); printf("D: Sang Phai");
	gotoxy(16, 14); printf("S: Len Tren");
	gotoxy(16, 15); printf("W: Xuong Duoi");
	gotoxy(16, 16); printf("E: OK");
	
	gotoxy(46,10);  printf("NGUOI CHOI 2");
	gotoxy(50, 12); printf("4: Sang Trai");
	gotoxy(50, 13); printf("6: Sang Phai");
	gotoxy(50, 14); printf("8: Len Tren");
	gotoxy(50, 15); printf("2: Xuong Duoi");
	gotoxy(50, 16); printf("5: OK");
	gotoxy(37,40); TextColor(47); printf("  EXIT  ");
	gotoxy(41,40);
	TextColor(0);
	char a;
	do
	{
		a = getch();
	}while(a!=13 && a != 'e' && a != 'E' && a !='5' && a !=8);
	system("cls");
	fflush(stdin);
	playgame(thoat);
}
void about(int &thoat)
{
 khungplay();
 		for(int i = 0; i<45; i++)
	{
		gotoxy(18+i, 11); printf(" ");
	}
		for(int i = 0; i<45; i++)
	{
		gotoxy(18+i, 21); printf(" ");
	}
 gotoxy(22, 10); TextColor(11); printf("Name:");       gotoxy(34, 10); TextColor(15); printf("TAN CU CHAN");
 gotoxy(22, 11); TextColor(11); printf("Birthday:");   gotoxy(34, 11); TextColor(10); printf("16/07/1999");
 gotoxy(22, 12); TextColor(11); printf("Fcebook:");    gotoxy(34, 12); TextColor(10); printf("Fb.com/tanchan679");
 gotoxy(22, 13); TextColor(11); printf("Gmail:");      gotoxy(34, 13); TextColor(10); printf("tanchan679@gmail.com");
 gotoxy(22, 14); TextColor(11); printf("Address:");    gotoxy(34, 14); TextColor(10); printf("Sin Ho - Lai Chau");
 gotoxy(22, 15); TextColor(11); printf("Schools:");    gotoxy(34,15); TextColor(10); printf("CNTT & TT Thai Nguyen");
 gotoxy(22, 16); TextColor(11); printf("Occupation:"); gotoxy(34, 16); TextColor(10); printf("Sinh Vien");
 gotoxy(22, 17); TextColor(11); printf("Hobby:");      gotoxy(34, 17); TextColor(10); printf("Play Game");
 
 	 gotoxy(37,40); TextColor(47); printf("  EXIT  ");
	gotoxy(41,40);
	TextColor(0);
 char a;
	do
	{
		a = getch();
	}while(a!=13 && a != 'e' && a != 'E' && a !='5' && a != 8);
	system("cls");
	fflush(stdin);
	playgame(thoat);
}


XÊM THÊM
Lập trình ứng dụng giúp bé học toán trên C/C++ màn hình Console
Lập trình game Rắn săn mồi trên C/C++ màn hình Console(Demo Snake)
Xây dựng demo Code Vượt vật cản trên màn hình Console C/C++
0 0 Phiếu bình chọn
Xếp hạng bài viết
BÀI VIẾT LIÊN QUAN
Đăng ký nhận thông báo
Thông báo email khi
guest
0 Bình luận
Không thể gửi email
Phản hồi nội tuyến

NÊN ĐỌC THÊM

Bạn muốn tìm kiếm gì?


0
Giáo sư! có thể ném gạch bên dưới nhé!x
()
x