Thứ Tư, 27 Tháng Mười Một 2024
Trang chủLập trìnhLập trình C/C++Lập trình game Rắn săn mồi trên C/C++ màn hình Console(Demo Snake)

Lập trình game Rắn săn mồi trên C/C++ màn hình Console(Demo Snake)

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 Rắn săn mồi là một game kinh điển, hầu hết trong chúng ta có lẽ cũng đã từng chơi qua game này rồi. Tong bài viết này mình sẽ chia sẽ mã nguồn code demo game rắn săn mồi được viết trên màn hình Console C/C++, các bạn có thể tải về nghịch và thăm khảo nhé.

Rắn săn mồi trên C/C++ màn hình Console

Trước khi vào phần code, bạn xem qua video quay lại màn hình chương trình demo game Rắn săn mồi trên C/C++ dưới đây.

Source code Rắn săn mồi

1. Các định nghĩa kiểu dữ liệu

enum TT{RIGHT, LEFT, UP, DOWP};
struct Toado{
	int x, y;
};
struct Snake{
	Toado dot[500];
	int n;
	TT tt;
};
struct HQ{
	Toado td;
};
  • struct Toado: Sử dụng để lưu tọa độ x,y của 1 điểm
  • struct Snake: Lưu trạng thái con rắn và độ dài con rắn
  • struct HQ: Vị trí của mồi
  • enum TT: Trạng thái đi xuống, lên, phải, trái của rắn

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.

void TextColor(int x)
{
    HANDLE h= GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(h, x);
}

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,550); //Đặt kích thước màn hình với độ rộng là 700, cao 550
    int thua=1, cam=0, thoat = 0, lever;
  	char name[30], dname[30] = "No name";//biến này để ghi tên người trên
  	Snake snake, luusnake; //Khai báo snake, và biến lưu snake
  	luusnake.n = 0; // gắn độ dài con rắn =0
  	HQ hq; //Khai báo biến mồi con rắn
  	docfile(luusnake, dname);//Đọc dữ liệu từ file, file này sẽ được dùng để lưu trò chơi
  	playgame(thoat, name, lever, luusnake, dname); //Khởi tạo màn hình bắt đầu trò chơi
  	system("cls");
  	fflush(stdin);
  	if(thoat==0)
  	{
  		do{//Vòng lặp quá trình trò chơi
  	     	thua=1; cam=0;
  	     	khungngoai();//Vẽ khung bên ngoài
  	    	khoitao(snake, hq);//Khởi tạo rắn và mồi
  			do{
  				hienthi(snake, hq); //Hiển thị rắn và mồi
  				dieukhien(snake, cam); //Điều khiển rắn di chyển
  				Random(snake, hq);//Random mồi xuất hiện ở vt bất kì
  				thuagame(snake, thua);//Kiêm tra thua game
  				Sleep(lever); //Tạm dừng với 1 khoảng tg là lever(cấp độ càng cao rắn sẽ càng nhanh)
			  }while(thua != 0);
			  gameover(name, snake,luusnake);//Màn hình trò trơi kết thúc
			  system("cls");
//Nếu diểm mới chơi lớn hơn điểm cũ thì lưu điểm mới vào file
			  if(snake.n > luusnake.n) 
			   {
			    	ghifile(snake, name);//Ghi điểm mới vào file
			    	docfile(luusnake, dname);//tiếp tục đọc file vừa ghi để bắt đầu trò choi mới
			    }
			  playgame(thoat, name, lever, luusnake, dname);//Kiểm tra thoát game
		  }while(thoat == 0);
	  }
}

void khungngoai() – Vẽ khung ngoài

void khungngoai()
{
//các số 205,201,200...trong hàm printf là ký tự trong bẳng mã ASCII
	for(int i = 5; i<75; i++)
	{
		for(int j = 2; j<28; j++)
		{
			gotoxy(i, j+6); TextColor(112); printf(" ");
		}
		printf("\n");
	}
		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, 40); printf("%c", 205);
		Sleep(1);
	}
	for(int i = 0; i<=40; i++)
	{
		gotoxy(0, i); printf("%c", 186);
		Sleep(1);
	}
	for(int i = 0; i<=40; i++)
	{
		gotoxy(79, i); printf("%c", 186);
		Sleep(1);
	}
	TextColor(14);
	gotoxy(0,0); printf("%c", 201);
	gotoxy(0,40); printf("%c", 200);
	gotoxy(79,0); printf("%c", 187);
	gotoxy(79,40); 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, 41); printf("%c", 205);
		Sleep(1);
	}
	for(int i = 1; i<=41; i++)
	{
		gotoxy(1, i); printf("%c", 186);
		Sleep(1);
	}
	for(int i = 1; i<=41; i++)
	{
		gotoxy(78, i); printf("%c", 186);
		Sleep(1);
	}
	TextColor(14);
	gotoxy(1,1); printf("%c", 201);
	gotoxy(1,41); printf("%c", 200);
	gotoxy(78,1); printf("%c", 187);
	gotoxy(78,41); printf("%c", 188);
	
	
	TextColor(6);
	for(int i = 4; i<=75; i++)
	{
		gotoxy(i, 7); printf("%c", 220);
		Sleep(1);
	}
		for(int i = 4; i<=75; i++)
	{
		gotoxy(i, 34); printf("%c", 223);
		Sleep(1);
	}
	for(int i = 1; i<=26; i++)
	{
		gotoxy(4, i+7); printf("%c", 186);
		Sleep(1);
	}
	for(int i = 1; i<=26; i++)
	{
		gotoxy(75, i+7); printf("%c", 186);
		Sleep(1);
	}
	TextColor(15);
	gotoxy(4,7); printf("%c", 201);
	gotoxy(4,34); printf("%c", 200);
	gotoxy(75,7); printf("%c", 187);
	gotoxy(75,34); printf("%c", 188);
	
	
	TextColor (11);
	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);
	}
	TextColor(14);
	gotoxy(63, 4); printf("%c", 200);
	gotoxy(65, 2);TextColor(10); printf("Playing Time");
	gotoxy(5, 2);TextColor(10); printf("Chieu Dai");
	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("_");
	}
	TextColor(14);
	gotoxy(17, 4); printf("%c", 188);
	gotoxy(34, 0); TextColor(160); printf(" GAME SNAKE ");
	gotoxy(25,2); TextColor(12); printf("TAN CU CHAN - CNTT K16D - ICTU");
    TextColor(4);
    	for(int i = 0; i<55; i++)
	{
		gotoxy(13+i, 36); printf("%c", 205);
	}
		for(int i = 0; i<55; i++)
	{
		gotoxy(13+i, 38); printf("%c", 205);
	}
	gotoxy(27, 37); TextColor(4); printf("©Copyright ");
	gotoxy(38, 37); TextColor(3); printf("Fb.con/tanchan679");
   	gotoxy(79,41);
}

void playgame(int &thoat, char name[], int &lever, Snake &luusnake, char dname[]) – Tạo màn hình bắt đầu trò chơi

void playgame(int &thoat, char name[], int &lever, Snake &luusnake, char dname[])
{
	/*TextColor(11);
		for(int i = 0; i<45; i++)
	{
		gotoxy(18+i, 6); printf("%c", 205);
	}
		for(int i = 0; i<45; i++)
	{
		gotoxy(18+i, 17); printf("%c", 205);
	}*/
	khungplay();
		for(int i = 0; i<40; i++)
	{
		 if(i%5 == 0) {
		 	TextColor(9); gotoxy(20+i, 6); (5);    printf("%c", 220);
	       }
	       else if(i%5 == 1) {
		 TextColor(10);  gotoxy(20+i, 6);    Sleep(5); printf("%c", 220);
	       }
	        else if(i%5 == 2) {
		 TextColor(11);  gotoxy(20+i, 6);   Sleep(5); printf("%c", 220);
	       }
	        else if(i%5 == 3){
		 TextColor(12);   gotoxy(20+i, 6);  Sleep(5);   printf("%c", 220);
	       }
	        else if(i%5 == 4) {
		 TextColor(13);   gotoxy(20+i, 6);   Sleep(5);printf("%c", 220);
	       }
	}
		for(int i = 0; i<40; i++)
	{
		 if(i%5 == 0) {
		 	TextColor(9); gotoxy(20+i, 17);   Sleep(5);  printf("%c", 220);
	       }
	       else if(i%5 == 1) {
		 TextColor(10);  gotoxy(20+i, 17);   Sleep(5);  printf("%c", 220);
	       }
	        else if(i%5 == 2) {
		 TextColor(11);  gotoxy(20+i, 17);  Sleep(5);  printf("%c", 220);
	       }
	        else if(i%5 == 3){
		 TextColor(12);   gotoxy(20+i, 17);  Sleep(5);   printf("%c", 220);
	       }
	        else if(i%5 == 4) {
		 TextColor(13);   gotoxy(20+i, 17);   Sleep(5); printf("%c", 220);
	       }
     }
	TextColor(202);
			gotoxy(33, 10); printf("%c  PLAY GAME  ", 175);
			TextColor(14);
	        gotoxy(33, 11); printf("  HELP         ");
	        gotoxy(33, 12); printf("  ABOUT        ");
	        gotoxy(33, 13); printf("  HIGHT SCORE   ");
         	gotoxy(33, 14); printf("  EXIT         ");
         	gotoxy(78,40);
	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=='5') chon = 3;
		else chon = 0;
		if(chon == 1 && toado < 19) toado++;
		else if(chon == 2 && toado >15) toado--;
		if(toado == 15)
		{
		    TextColor(202);
			gotoxy(33, 10); printf("%c  PLAY GAME  ", 175);
			TextColor(14);
	        gotoxy(33, 11); printf("  HELP         ");
	        gotoxy(33, 12); printf("  ABOUT        ");
	        gotoxy(33, 13); printf("  HIGHT SCORE   ");
         	gotoxy(33, 14); printf("  EXIT         ");
         	TextColor(0);
		}
		if(toado == 16)
		{
			TextColor(14);
			gotoxy(33, 10); printf("  PLAY GAME    ");
			TextColor(202);
	        gotoxy(33, 11); printf("%c  HELP       ", 175);
	        TextColor(14);
	        gotoxy(33, 12); printf("  ABOUT        ");
	        gotoxy(33, 13); printf("  HIGHT SCORE   ");
         	gotoxy(33, 14); printf("  EXIT         ");
         	TextColor(0);
		}
		if(toado == 17)
		{
			TextColor(14); 
			gotoxy(33, 10); printf("  PLAY GAME  ");
	        gotoxy(33, 11); printf("  HELP         ");
	        TextColor(202);
	        gotoxy(33, 12); printf("%c  ABOUT      ", 175);
	        TextColor(14);
	        gotoxy(33, 13); printf("  HIGHT SCORE     ");
         	gotoxy(33, 14); printf("  EXIT       ");
         	TextColor(0);
		}
			if(toado == 18)
		{
			TextColor(14);
			gotoxy(33, 10); printf("  PLAY GAME    ");
	        gotoxy(33, 11); printf("  HELP         ");
	        gotoxy(33, 12); printf("  ABOUT        ");
	        TextColor(202);
	        gotoxy(33, 13); printf("%c  HIGHT SCORE  ", 175);
	        TextColor(14);
         	gotoxy(33, 14); printf(" EXIT        ");
		}
		if(toado == 19)
		{
			TextColor(14);
			gotoxy(33, 10); printf("  PLAY GAME    ");
	        gotoxy(33, 11); printf("  HELP         ");
	        gotoxy(33, 12); printf("  ABOUT        ");
	        gotoxy(33, 13); printf("  HIGHT SCORE   ");
	        TextColor(202);
         	gotoxy(33, 14); printf("%c  EXIT      ", 175);
         	TextColor(0);
		}
	}while(chon != 3);
	system("cls");
	if(toado == 15) vaogame(name, lever, luusnake, dname);
	else if(toado == 16) help(thoat, name, lever, luusnake, dname);
	else if(toado == 17) about(thoat, name,lever, luusnake, dname);
	else if(toado == 18) Score(thoat, name,lever, luusnake, dname);
	else if(toado == 19)
	 {
	 	 thoat = 1;
	 	 TextColor(14);
	 	 gotoxy(22,15); printf("CAM ON BAN DA CHOI GAME CUA CHUNG TOI!!");
	 	 gotoxy(27,16); printf("CHUC BAN MOT NGAY TOT LANH!!");
	 	 TextColor(12); gotoxy(50,17); printf("#");
	 	 TextColor(9); gotoxy(51,17); printf("Tan_Chan");
	 	 Sleep(2000);
	 }
}

void khungplay() – Vẽ khung game over

void khungplay()
{
	for(int i = 0; i<78; i++)
	{
		gotoxy(1+i, 0);TextColor(12); printf("%c", 220);
	}
    	for(int i = 0; i<78; i++)
	{
		gotoxy(1+i, 41); TextColor(12); printf("%c", 205);
	}
	for(int j = 0; j<40; j++)
	{
		gotoxy(0, j+1); TextColor(12); printf("%c", 186);
	}
		for(int j = 0; j<40; j++)
	{
		gotoxy(79, j+1); TextColor(12); printf("%c", 186);
	}
	TextColor(14);
	gotoxy(0,0); printf("%c", 201);
	gotoxy(0,41); printf("%c", 200);
	gotoxy(79,0); printf("%c", 187);
	gotoxy(79,41); printf("%c", 188);
    gotoxy(34, 0); TextColor(160); printf(" GAME SNAKE ");
	TextColor(1);
	gotoxy(3,26); printf("$$$$$$$  $$$$$$$   $$$$   $$$   $$$$$$$$  $$$   $$$  $$$$$$$$  $$$$   $$$\n"); Sleep(40);TextColor(2);
	gotoxy(3,27); printf("  $$$   $$$   $$$  $$$$$  $$$   $$$  $$$  $$$   $$$ $$$    $$$ $$$$$  $$$\n"); Sleep(40); TextColor(3);
	gotoxy(3,28); printf("  $$$   $$$   $$$  $$$$$$ $$$   $$$       $$$$$$$$$ $$$    $$$ $$$$$$ $$$\n"); Sleep(40);TextColor(5);
	gotoxy(3,29); printf("  $$$   $$$$$$$$$  $$$ $$$$$$   $$$       $$$   $$$ $$$$$$$$$$ $$$ $$$$$$\n"); Sleep(40);	TextColor(4);
	gotoxy(3,30); printf("  $$$   $$$   $$$  $$$  $$$$$   $$$   $$$ $$$   $$$ $$$    $$$ $$$  $$$$$\n"); Sleep(40);TextColor(6);
	gotoxy(3,31); printf("  $$$   $$$   $$$  $$$   $$$$   $$$$$$$$$ $$$   $$$ $$$    $$$ $$$   $$$$\n");
	
	    TextColor(1);
    	for(int i = 0; i<55; i++)
	{
		gotoxy(13+i, 38); printf("%c", 205);
	}
		for(int i = 0; i<55; i++)
	{
		gotoxy(13+i, 40); printf("%c", 205);
	}
	gotoxy(27, 39); TextColor(4); printf("©Copyright ");
	gotoxy(38, 39); TextColor(3); printf("Fb.con/tanchan679");
}

void help(int &thoat, char name[], int &lever, Snake &luusnake, char dname[]) – màn hình hướng dẫn trò chơi

void help(int &thoat, char name[], int &lever,  Snake &luusnake, char dname[])
{
	khungplay();
	gotoxy(34, 0); TextColor(160); printf("    HELP   ");
	TextColor(0);
		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(31, 4);TextColor(12); printf("2 TO HOP PHIM");
	TextColor(14);
	gotoxy(12,7);  printf("To hop 1");
	TextColor(15);
	gotoxy(16, 8); printf("A: Sang Trai");
	gotoxy(16, 9); printf("D: Sang Phai");
	gotoxy(16, 10); printf("S: Len Tren");
	gotoxy(16, 11); printf("W: Xuong Duoi");
	
	TextColor(14);
	gotoxy(46,7); printf("To hop 2");
	TextColor(15);
	gotoxy(50, 8); printf("4: Sang Trai");
	gotoxy(50, 9); printf("6: Sang Phai");
	gotoxy(50, 10); printf("8: Len Tren");
	gotoxy(50, 11); printf("2: Xuong Duoi");
	TextColor(14);
	gotoxy(28,14);  printf("T :");
	TextColor(15);
	gotoxy(32, 14); printf("Tam dung - Tiep Tuc");
	gotoxy(36,36); TextColor(47); printf("  EXIT  ");
	gotoxy(39,36);
	TextColor(0);
	char a;
	do
	{
		a = getch();
	}while(a!=13 && a != 'e' && a != 'E' && a !='5' && a !=8);
	system("cls");
	fflush(stdin);
	playgame(thoat, name, lever, luusnake, dname);
}

void Score(int &thoat, char name[], int &lever, Snake &luusnake, char dname[]) -Màn hình xem điểm cao nhất

void Score(int &thoat, char name[], int &lever, Snake &luusnake, char dname[])
{
  khungplay();
  gotoxy(34, 0); TextColor(160); printf(" HIGHT SCORE ");
  TextColor(0);
 		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, 6); TextColor(12); printf("DIEM CAO NHAT");  
 gotoxy(25, 8); TextColor(11); printf("Ten Nguoi Choi:");       gotoxy(41, 8); TextColor(15); printf("%s", dname);
 gotoxy(25, 9); TextColor(11); printf("Diem Cao:");             gotoxy(41, 9); TextColor(10); printf("%d", luusnake.n);
	gotoxy(36,36); TextColor(47); printf("  EXIT  ");
	gotoxy(39,36);
	TextColor(0);
 char a;
	do
	{
		a = getch();
	}while(a!=13 && a != 'e' && a != 'E' && a !='5' && a != 8);
	system("cls");
	fflush(stdin);
	playgame(thoat, name, lever, luusnake, dname);	
}

void about(int &thoat, char name[], int &lever, Snake &luusnake, char dname[]) – Màn hình About

void about(int &thoat, char name[], int &lever, Snake &luusnake, char dname[])
{
  khungplay();
  gotoxy(34, 0); TextColor(160); printf("    ABOUT   ");
  TextColor(0);
 		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, 6); TextColor(11); printf("Name:");       gotoxy(34, 6); TextColor(15); printf("TAN CHAN");
 gotoxy(22, 7); TextColor(11); printf("Birthday:");   gotoxy(34, 7); TextColor(10); printf("16/07/1999");
 gotoxy(22, 8); TextColor(11); printf("Fcebook:");    gotoxy(34, 8); TextColor(10); printf("Fb.com/tanchan679");
 gotoxy(22, 9); TextColor(11); printf("Gmail:");      gotoxy(34, 9); TextColor(10); printf("tanchan679@gmail.com");
 gotoxy(22, 10); TextColor(11); printf("Address:");   gotoxy(34, 10); TextColor(10); printf("Sin Ho - Lai Chau");
 gotoxy(22, 11); TextColor(11); printf("Schools:");   gotoxy(34,11); TextColor(10); printf("CNTT & TT Thai Nguyen");
                                                      gotoxy(42,12); TextColor(9); printf("(                )");
                                                      gotoxy(43,12); TextColor(10); printf("Class: CNTT-K16D");
 gotoxy(22, 13); TextColor(11); printf("Occupation:"); gotoxy(34, 13); TextColor(10); printf("Sinh Vien");
 gotoxy(22, 14); TextColor(11); printf("Hobby:");      gotoxy(34, 14); TextColor(10); printf("Play Game");
 
	gotoxy(36,36); TextColor(47); printf("  EXIT  ");
	gotoxy(39,36);
	TextColor(0);
 char a;
	do
	{
		a = getch();
	}while(a!=13 && a != 'e' && a != 'E' && a !='5' && a != 8);
	system("cls");
	fflush(stdin);
	playgame(thoat, name, lever, luusnake, dname);	
}

void khoitao(Snake &snake, HQ &hq) – Khởi tạo con rắn và mồi

void khoitao(Snake &snake, HQ &hq)
{
	snake.dot[0].x = 7;  snake.dot[0].y = 8;
	snake.dot[1].x = 6;  snake.dot[1].y = 8;
	snake.dot[2].x = 5;  snake.dot[2].y = 8;
	snake.dot[3].x = 20;  snake.dot[3].y =20;
	hq.td.x = 20;        hq.td.y = 20;
	snake.tt = RIGHT;
	snake.n = 3;
}

void hienthi(Snake &snake, HQ &hq) – Hiển thị con rắn và mồi lên màn hình

void hienthi(Snake &snake, HQ &hq)
{
	TextColor(113);
	gotoxy(snake.dot[0].x, snake.dot[0].y); printf("%c", 2);
	TextColor(113);
	for(int i = 1; i < snake.n; i++)
	{
		gotoxy(snake.dot[i].x, snake.dot[i].y); printf("%c", 1);
	}
	int n = 0, l = 0;
   if(snake.tt == RIGHT) n++; l++;
   gotoxy(snake.dot[snake.n].x, snake.dot[snake.n].y); printf(" ");
   gotoxy(hq.td.x, hq.td.y); TextColor(124); printf("%c",15 );
   Time();
   gotoxy(9, 3);TextColor(15); printf("%d", snake.n);
}

void dieukhien(Snake &snake, int &cam) – Điều khiển con rắn di chuyển

void dieukhien(Snake &snake, int &cam)
{
	fflush(stdin);
	for(int i = snake.n; i>0; i--) 	snake.dot[i] = snake.dot[i-1];
	int tamdung = 0;
	if(kbhit())
	{
		char a = getch();
		if((a=='a'||a=='A'||a=='4') && cam != 2) { snake.tt = LEFT;cam=1;}
		else if((a=='d'||a=='D'||a=='6') && cam!=1) { snake.tt = RIGHT;cam=2; }
		else if((a=='s'||a=='S'||a=='2'||a=='5') && cam!=12) { snake.tt = DOWP;cam=11;}
		else if((a=='w'||a=='W'||a=='8') && cam!=11)  {snake.tt = UP;cam=12;}
		else if(a=='t'||a=='T' || a == 27)  tamdung = 1;
	} 
	if(snake.tt == LEFT) snake.dot[0].x--;
	else if(snake.tt == RIGHT) snake.dot[0].x++;
	else if(snake.tt == DOWP) snake.dot[0].y++;
	else if(snake.tt == UP) snake.dot[0].y--;
	 if(tamdung == 1)
	{
		gotoxy(34, 18);TextColor(144); printf("TAM DUNG!!!!");
		gotoxy(29, 18);
		int thoat = 0;
		do{
			char a = getch(); if(a == 't' ||a =='T') thoat = 1;
		}while(thoat!=1);
		gotoxy(33, 18);TextColor(112); printf("                   ");
	}
	}
	

void Random(Snake &snake, HQ &hq) – Hàm để tạo ngẫu nhiên mồi

	
void Random(Snake &snake, HQ &hq)
{
	if(snake.dot[0].x == hq.td.x && snake.dot[0].y == hq.td.y)
	{
	hq.td.x = rand()%69+5;
	hq.td.y = rand()%18+8;
	snake.n++;
	Beep(1000, 100);
    }
    gotoxy(78,40);
}

void thuagame(Snake snake, int &thua) – Hàm kiểm thua trò chơi

void thuagame(Snake snake, int &thua)
{
	if (snake.dot[0].x == 75) 
	  {
	  thua = 0;
		Beep(3000, 500);Sleep(20);Beep(3000, 500);
	     	}
		else if (snake.dot[0].y == 34)
		{
			thua = 0;
			Beep(3000, 500);Sleep(20);Beep(3000, 500);
	     	}
			else if (snake.dot[0].x == 4)
			{
			thua = 0;
			Beep(3000, 500);Sleep(20);Beep(3000, 500);
	     	}
				else if (snake.dot[0].y == 7) 
				{
			thua = 0;
			Beep(3000, 500);Sleep(20);Beep(3000, 500);
	     	}
	else thua = 1;
   
	for(int i = snake.n-1; i>0; i--)
	{
		if(snake.dot[0].x == snake.dot[i].x && snake.dot[0].y == snake.dot[i].y )
		{
			thua = 0;
			Beep(3000, 500);Sleep(20);Beep(3000, 500);
	     	}
	}
}

void Time() – Hàm đếm thời gian trò chơi

void Time()
{
	int time = clock()/1000, gio, phut, giay;
	gio = time/3600; phut = (time/60)%60, giay = time%60;
   	gotoxy(67, 3);TextColor(15);
	if(giay < 10 && gio<10 && phut<10) printf("0%d:0%d:0%d",gio, phut, giay );
   	else if(giay < 10 && gio<10) printf("0%d:%d:0%d",gio, phut, giay );
   	else if(phut < 10 && gio<10) printf("0%d:0%d:%d",gio, phut, giay );
   	else if(giay < 10 && phut<10) printf("%d:%d:0%d",gio, phut, giay );
   	else if(giay < 10 ) printf("%d:%d:0%d",gio, phut, giay );
   	else if(gio<10) printf("0%d:%d:%d",gio, phut, giay );
   	else if(phut<10)printf("%d:0%d:%d",gio, phut, giay );
}

void vaogame(char name[], int &lever, Snake &luusnake, char dname[]) – Hàm bắt đầu trò chơi(Nhập tên người chơi, nhập lever…)

void vaogame(char name[], int &lever,  Snake &luusnake, char dname[])
{
	lever = 100;
	khungplay();
	for(int i = 0; i<4; i++)
	{
		gotoxy(24,8+i);
		for(int j = 0; j<30; j++)
		{
			if(i == 0 || i==3) printf("%c", 196);
			else if(j == 0 || j==29) printf("%c", 179);
			else printf(" ");
		}
	}
		for(int i = 0; i<4; i++)
	{
		gotoxy(24,12+i);
		for(int j = 0; j<30; j++)
		{
			if(i == 0 || i==3) printf("%c", 196);
			else if(j == 0 || j==29) printf("%c", 179);
			else printf(" ");
		}
	}
	TextColor(12);
	gotoxy(35,7); printf("BAT DAU");
	TextColor(11);
	gotoxy(26,13); printf("Lever: ");
	gotoxy(26,9); printf("User Name: "); gotoxy(37,9);TextColor(7); gets(name); fflush(stdin);
    gotoxy(37,13);TextColor(12); printf("%c", 174); gotoxy(41,13);TextColor(12); printf("%c", 175);
    gotoxy(39,13);TextColor(15); printf("4");
    int chon = 0;
    int capdo=4;
    gotoxy(27,14);TextColor(2); printf("Phim 8: -1 | Phim 6: +1");
     gotoxy(39, 13);

//Vòng lặp cho phép lựa chọn cấp độ
    do{
    	fflush(stdin);
		char a = getch();
		if(a == 75 ||a == 'a'||a=='A'||a=='4') chon = 1;
		else if(a == 77 || a == 'd'||a=='D'||a=='6') chon = 2;
		else if(a == 13 ||a=='5') chon = 3;
		if(chon == 1 && capdo > 1) capdo=capdo-1;
		else if(chon == 2 && capdo < 9) capdo=capdo+1;
		gotoxy(39,13);TextColor(15); printf("%d", capdo);
	}while(chon != 3);
	//gan cap do - tương ứng các cấp độ sẽ cho thời gian dừng màn hình lâu hoặc ngắn hơn
    switch(capdo)
    {
    	case 1: lever = 1000; break;
    	case 2: lever = 500; break;
    	case 3: lever = 250; break;
    	case 4: lever = 150; break;
    	case 5: lever = 100;  break;
    	case 6: lever = 80;  break;
    	case 7: lever = 50;  break;
    	case 8: lever = 25;  break;
    	case 9: lever = 15; break;
	}
	system("cls");
}

void docfile(Snake &luusnake, char dname[]) -Hàm đọc dữ liệu trò chơi từ file

void docfile(Snake &luusnake, char dname[])
{
	FILE *p = fopen("Diemcao.txt","rt");
	if(p!=NULL)
    do{
    	fgets(dname, 30, p);
    	fscanf(p, "%d", &luusnake.n);
	}while(feof(p) == 0);
	fclose(p);
}

void ghifile(Snake snake, char name[]) – Hàm lưu dữ liệu trò chơi vào file

   
void ghifile(Snake snake, char name[])
{
	FILE *p = fopen("Diemcao.txt","wt");
	{
		fprintf(p, "%s\n%d", name, snake.n);
	}
	fclose(p);
}

void gameover(char name[], Snake snake, Snake luusnake) – Hàm trò chơi kết thúc

void gameover(char name[], Snake snake, Snake luusnake)
{
//Reset màn hình
	for(int i = 5; i<75; i++)
	{
		for(int j = 2; j<28; j++)
		{
			gotoxy(i, j+6); TextColor(112); printf(" ");
		}
		printf("\n");
	}
	int thoat = 0;

//Nếu điểm chơi mới bằng hoặc nhỏ hơn điểm cũ thì thông báo game kết thúc vào hiển thị điểm
	if(snake.n <= luusnake.n)
	{
		gotoxy(33,15); TextColor(124); printf("GAME OVER");
	    gotoxy(20,18); TextColor(121); printf("Diem: ");
	    gotoxy(33,18); TextColor(121); printf("%d", snake.n);
    	gotoxy(20,17); TextColor(121); printf("Name player: ");
	    gotoxy(33,17); TextColor(121); printf("%s", name);
	do{
    thoat = thoat+1;
	if(kbhit())
	 {
		char a = getch(); 	if(a==13) thoat = 13;
	  }
	gotoxy(77,40); 	Sleep(300);
	}while(thoat != 13);
      } 

//Nếu điểm chơi mới lớn hơn điểm cũ thì thông báo đặt điểm cao nhất
	if(snake.n > luusnake.n)
	{
		gotoxy(25,15); TextColor(124); printf("CHUC MUNG BAN DAT DIEM CAO MOI");
		gotoxy(45,17); TextColor(121); printf("Diem cu: ");
	    gotoxy(54,17); TextColor(121); printf("%d", luusnake.n);
    	gotoxy(20,17); TextColor(121); printf("Diem moi: ");
	    gotoxy(30,17); TextColor(121); printf("%d", snake.n);


	do{
    thoat = thoat+1;
	if(kbhit())//Kiểm tra có phím bấm hay kg
	 {
		char a = getch(); 	if(a==13) thoat = 13;
	  }
	gotoxy(77,40); 	Sleep(300);
	}while(thoat != 13);
      }
	TextColor(0);
}

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

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

#include <stdio.h>
#include <windows.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
#include <math.h>
void TextColor(int x)
{
	HANDLE h= GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleTextAttribute(h, x);
}
void gotoxy(int x, int y)
{
  static HANDLE h = NULL;  
  if(!h)
    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);
};
enum TT{RIGHT, LEFT, UP, DOWP};
struct Toado{
	int x, y;
};
struct Snake{
	Toado dot[500];
	int n;
	TT tt;
};
struct HQ{
	Toado td;
};

void playgame(int &thoat, char name[], int &lever, Snake &luusnake, char dname[]);
void khungplay();
void help(int &thoat, char name[], int &lever, Snake &luusnake, char dname[]);
void about(int &thoat, char name[], int &lever, Snake &luusnake, char dname[]);
void Score(int &thoat, char name[], int &lever, Snake &luusnake, char dname[]);
void khungngoai();
void khoitao(Snake &snake, HQ &hq);
void hienthi(Snake &snake, HQ &hq);
void dieukhien(Snake &snake,int &cam);
void Random(Snake &snake, HQ &hq);
void thuagame(Snake snake, int &thua);
void Time();
void vaogame(char name[], int &lever,  Snake &luusnake, char dname[]);
void docfile(Snake &luusnake, char dname[]);
void ghifile(Snake snake, char name[]);
void Score(Snake &luusnake, char dname[]);
void gameover(char name[], Snake snake, Snake luusnake);
void tamdung();



int main()
{
	resizeConsole(700,550);
    int thua=1, cam=0, thoat = 0, lever;
  	char name[30], dname[30] = "No name";
  	Snake snake, luusnake;
  	luusnake.n = 0;
  	HQ hq;
  	docfile(luusnake, dname);
  	playgame(thoat, name, lever, luusnake, dname);
  	system("cls");
  	fflush(stdin);
  	if(thoat==0)
  	{
  		do{
  	     	thua=1; cam=0;
  	     	khungngoai();
  	    	khoitao(snake, hq);
  			do{
  				hienthi(snake, hq);
  				dieukhien(snake, cam);
  				Random(snake, hq);
  				thuagame(snake, thua);
  				Sleep(lever);
			  }while(thua != 0);
			  gameover(name, snake,luusnake);
			  system("cls");
			  if(snake.n > luusnake.n) 
			   {
			    	ghifile(snake, name);
			    	docfile(luusnake, dname);
			    }
			  playgame(thoat, name, lever, luusnake, dname);
		  }while(thoat == 0);
	  }
}

void khungngoai()
{
			for(int i = 5; i<75; i++)
	{
		for(int j = 2; j<28; j++)
		{
			gotoxy(i, j+6); TextColor(112); printf(" ");
		}
		printf("\n");
	}
		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, 40); printf("%c", 205);
		Sleep(1);
	}
	for(int i = 0; i<=40; i++)
	{
		gotoxy(0, i); printf("%c", 186);
		Sleep(1);
	}
	for(int i = 0; i<=40; i++)
	{
		gotoxy(79, i); printf("%c", 186);
		Sleep(1);
	}
	TextColor(14);
	gotoxy(0,0); printf("%c", 201);
	gotoxy(0,40); printf("%c", 200);
	gotoxy(79,0); printf("%c", 187);
	gotoxy(79,40); 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, 41); printf("%c", 205);
		Sleep(1);
	}
	for(int i = 1; i<=41; i++)
	{
		gotoxy(1, i); printf("%c", 186);
		Sleep(1);
	}
	for(int i = 1; i<=41; i++)
	{
		gotoxy(78, i); printf("%c", 186);
		Sleep(1);
	}
	TextColor(14);
	gotoxy(1,1); printf("%c", 201);
	gotoxy(1,41); printf("%c", 200);
	gotoxy(78,1); printf("%c", 187);
	gotoxy(78,41); printf("%c", 188);
	
	
	TextColor(6);
	for(int i = 4; i<=75; i++)
	{
		gotoxy(i, 7); printf("%c", 220);
		Sleep(1);
	}
		for(int i = 4; i<=75; i++)
	{
		gotoxy(i, 34); printf("%c", 223);
		Sleep(1);
	}
	for(int i = 1; i<=26; i++)
	{
		gotoxy(4, i+7); printf("%c", 186);
		Sleep(1);
	}
	for(int i = 1; i<=26; i++)
	{
		gotoxy(75, i+7); printf("%c", 186);
		Sleep(1);
	}
	TextColor(15);
	gotoxy(4,7); printf("%c", 201);
	gotoxy(4,34); printf("%c", 200);
	gotoxy(75,7); printf("%c", 187);
	gotoxy(75,34); printf("%c", 188);
	
	
	TextColor (11);
	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);
	}
	TextColor(14);
	gotoxy(63, 4); printf("%c", 200);
	gotoxy(65, 2);TextColor(10); printf("Playing Time");
	gotoxy(5, 2);TextColor(10); printf("Chieu Dai");
	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("_");
	}
	TextColor(14);
	gotoxy(17, 4); printf("%c", 188);
	gotoxy(34, 0); TextColor(160); printf(" GAME SNAKE ");
	gotoxy(25,2); TextColor(12); printf("TAN CU CHAN - CNTT K16D - ICTU");
    TextColor(4);
    	for(int i = 0; i<55; i++)
	{
		gotoxy(13+i, 36); printf("%c", 205);
	}
		for(int i = 0; i<55; i++)
	{
		gotoxy(13+i, 38); printf("%c", 205);
	}
	gotoxy(27, 37); TextColor(4); printf("©Copyright ");
	gotoxy(38, 37); TextColor(3); printf("Fb.con/tanchan679");
   	gotoxy(79,41);
}
void playgame(int &thoat, char name[], int &lever, Snake &luusnake, char dname[])
{
	/*TextColor(11);
		for(int i = 0; i<45; i++)
	{
		gotoxy(18+i, 6); printf("%c", 205);
	}
		for(int i = 0; i<45; i++)
	{
		gotoxy(18+i, 17); printf("%c", 205);
	}*/
	khungplay();
		for(int i = 0; i<40; i++)
	{
		 if(i%5 == 0) {
		 	TextColor(9); gotoxy(20+i, 6); (5);    printf("%c", 220);
	       }
	       else if(i%5 == 1) {
		 TextColor(10);  gotoxy(20+i, 6);    Sleep(5); printf("%c", 220);
	       }
	        else if(i%5 == 2) {
		 TextColor(11);  gotoxy(20+i, 6);   Sleep(5); printf("%c", 220);
	       }
	        else if(i%5 == 3){
		 TextColor(12);   gotoxy(20+i, 6);  Sleep(5);   printf("%c", 220);
	       }
	        else if(i%5 == 4) {
		 TextColor(13);   gotoxy(20+i, 6);   Sleep(5);printf("%c", 220);
	       }
	}
		for(int i = 0; i<40; i++)
	{
		 if(i%5 == 0) {
		 	TextColor(9); gotoxy(20+i, 17);   Sleep(5);  printf("%c", 220);
	       }
	       else if(i%5 == 1) {
		 TextColor(10);  gotoxy(20+i, 17);   Sleep(5);  printf("%c", 220);
	       }
	        else if(i%5 == 2) {
		 TextColor(11);  gotoxy(20+i, 17);  Sleep(5);  printf("%c", 220);
	       }
	        else if(i%5 == 3){
		 TextColor(12);   gotoxy(20+i, 17);  Sleep(5);   printf("%c", 220);
	       }
	        else if(i%5 == 4) {
		 TextColor(13);   gotoxy(20+i, 17);   Sleep(5); printf("%c", 220);
	       }
     }
	TextColor(202);
			gotoxy(33, 10); printf("%c  PLAY GAME  ", 175);
			TextColor(14);
	        gotoxy(33, 11); printf("  HELP         ");
	        gotoxy(33, 12); printf("  ABOUT        ");
	        gotoxy(33, 13); printf("  HIGHT SCORE   ");
         	gotoxy(33, 14); printf("  EXIT         ");
         	gotoxy(78,40);
	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=='5') chon = 3;
		else chon = 0;
		if(chon == 1 && toado < 19) toado++;
		else if(chon == 2 && toado >15) toado--;
		if(toado == 15)
		{
		    TextColor(202);
			gotoxy(33, 10); printf("%c  PLAY GAME  ", 175);
			TextColor(14);
	        gotoxy(33, 11); printf("  HELP         ");
	        gotoxy(33, 12); printf("  ABOUT        ");
	        gotoxy(33, 13); printf("  HIGHT SCORE   ");
         	gotoxy(33, 14); printf("  EXIT         ");
         	TextColor(0);
		}
		if(toado == 16)
		{
			TextColor(14);
			gotoxy(33, 10); printf("  PLAY GAME    ");
			TextColor(202);
	        gotoxy(33, 11); printf("%c  HELP       ", 175);
	        TextColor(14);
	        gotoxy(33, 12); printf("  ABOUT        ");
	        gotoxy(33, 13); printf("  HIGHT SCORE   ");
         	gotoxy(33, 14); printf("  EXIT         ");
         	TextColor(0);
		}
		if(toado == 17)
		{
			TextColor(14); 
			gotoxy(33, 10); printf("  PLAY GAME  ");
	        gotoxy(33, 11); printf("  HELP         ");
	        TextColor(202);
	        gotoxy(33, 12); printf("%c  ABOUT      ", 175);
	        TextColor(14);
	        gotoxy(33, 13); printf("  HIGHT SCORE     ");
         	gotoxy(33, 14); printf("  EXIT       ");
         	TextColor(0);
		}
			if(toado == 18)
		{
			TextColor(14);
			gotoxy(33, 10); printf("  PLAY GAME    ");
	        gotoxy(33, 11); printf("  HELP         ");
	        gotoxy(33, 12); printf("  ABOUT        ");
	        TextColor(202);
	        gotoxy(33, 13); printf("%c  HIGHT SCORE  ", 175);
	        TextColor(14);
         	gotoxy(33, 14); printf(" EXIT        ");
		}
		if(toado == 19)
		{
			TextColor(14);
			gotoxy(33, 10); printf("  PLAY GAME    ");
	        gotoxy(33, 11); printf("  HELP         ");
	        gotoxy(33, 12); printf("  ABOUT        ");
	        gotoxy(33, 13); printf("  HIGHT SCORE   ");
	        TextColor(202);
         	gotoxy(33, 14); printf("%c  EXIT      ", 175);
         	TextColor(0);
		}
	}while(chon != 3);
	system("cls");
	if(toado == 15) vaogame(name, lever, luusnake, dname);
	else if(toado == 16) help(thoat, name, lever, luusnake, dname);
	else if(toado == 17) about(thoat, name,lever, luusnake, dname);
	else if(toado == 18) Score(thoat, name,lever, luusnake, dname);
	else if(toado == 19)
	 {
	 	 thoat = 1;
	 	 TextColor(14);
	 	 gotoxy(22,15); printf("CAM ON BAN DA CHOI GAME CUA CHUNG TOI!!");
	 	 gotoxy(27,16); printf("CHUC BAN MOT NGAY TOT LANH!!");
	 	 TextColor(12); gotoxy(50,17); printf("#");
	 	 TextColor(9); gotoxy(51,17); printf("Tan_Chan");
	 	 Sleep(2000);
	 }
}

void khungplay()
{
	for(int i = 0; i<78; i++)
	{
		gotoxy(1+i, 0);TextColor(12); printf("%c", 220);
	}
    	for(int i = 0; i<78; i++)
	{
		gotoxy(1+i, 41); TextColor(12); printf("%c", 205);
	}
	for(int j = 0; j<40; j++)
	{
		gotoxy(0, j+1); TextColor(12); printf("%c", 186);
	}
		for(int j = 0; j<40; j++)
	{
		gotoxy(79, j+1); TextColor(12); printf("%c", 186);
	}
	TextColor(14);
	gotoxy(0,0); printf("%c", 201);
	gotoxy(0,41); printf("%c", 200);
	gotoxy(79,0); printf("%c", 187);
	gotoxy(79,41); printf("%c", 188);
    gotoxy(34, 0); TextColor(160); printf(" GAME SNAKE ");
	TextColor(1);
	gotoxy(3,26); printf("$$$$$$$  $$$$$$$   $$$$   $$$   $$$$$$$$  $$$   $$$  $$$$$$$$  $$$$   $$$\n"); Sleep(40);TextColor(2);
	gotoxy(3,27); printf("  $$$   $$$   $$$  $$$$$  $$$   $$$  $$$  $$$   $$$ $$$    $$$ $$$$$  $$$\n"); Sleep(40); TextColor(3);
	gotoxy(3,28); printf("  $$$   $$$   $$$  $$$$$$ $$$   $$$       $$$$$$$$$ $$$    $$$ $$$$$$ $$$\n"); Sleep(40);TextColor(5);
	gotoxy(3,29); printf("  $$$   $$$$$$$$$  $$$ $$$$$$   $$$       $$$   $$$ $$$$$$$$$$ $$$ $$$$$$\n"); Sleep(40);	TextColor(4);
	gotoxy(3,30); printf("  $$$   $$$   $$$  $$$  $$$$$   $$$   $$$ $$$   $$$ $$$    $$$ $$$  $$$$$\n"); Sleep(40);TextColor(6);
	gotoxy(3,31); printf("  $$$   $$$   $$$  $$$   $$$$   $$$$$$$$$ $$$   $$$ $$$    $$$ $$$   $$$$\n");
	
	    TextColor(1);
    	for(int i = 0; i<55; i++)
	{
		gotoxy(13+i, 38); printf("%c", 205);
	}
		for(int i = 0; i<55; i++)
	{
		gotoxy(13+i, 40); printf("%c", 205);
	}
	gotoxy(27, 39); TextColor(4); printf("©Copyright ");
	gotoxy(38, 39); TextColor(3); printf("Fb.con/tanchan679");
}
void help(int &thoat, char name[], int &lever,  Snake &luusnake, char dname[])
{
	khungplay();
	gotoxy(34, 0); TextColor(160); printf("    HELP   ");
	TextColor(0);
		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(31, 4);TextColor(12); printf("2 TO HOP PHIM");
	TextColor(14);
	gotoxy(12,7);  printf("To hop 1");
	TextColor(15);
	gotoxy(16, 8); printf("A: Sang Trai");
	gotoxy(16, 9); printf("D: Sang Phai");
	gotoxy(16, 10); printf("S: Len Tren");
	gotoxy(16, 11); printf("W: Xuong Duoi");
	
	TextColor(14);
	gotoxy(46,7); printf("To hop 2");
	TextColor(15);
	gotoxy(50, 8); printf("4: Sang Trai");
	gotoxy(50, 9); printf("6: Sang Phai");
	gotoxy(50, 10); printf("8: Len Tren");
	gotoxy(50, 11); printf("2: Xuong Duoi");
	TextColor(14);
	gotoxy(28,14);  printf("T :");
	TextColor(15);
	gotoxy(32, 14); printf("Tam dung - Tiep Tuc");
	gotoxy(36,36); TextColor(47); printf("  EXIT  ");
	gotoxy(39,36);
	TextColor(0);
	char a;
	do
	{
		a = getch();
	}while(a!=13 && a != 'e' && a != 'E' && a !='5' && a !=8);
	system("cls");
	fflush(stdin);
	playgame(thoat, name, lever, luusnake, dname);
}

void Score(int &thoat, char name[], int &lever, Snake &luusnake, char dname[])
{
  khungplay();
  gotoxy(34, 0); TextColor(160); printf(" HIGHT SCORE ");
  TextColor(0);
 		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, 6); TextColor(12); printf("DIEM CAO NHAT");  
 gotoxy(25, 8); TextColor(11); printf("Ten Nguoi Choi:");       gotoxy(41, 8); TextColor(15); printf("%s", dname);
 gotoxy(25, 9); TextColor(11); printf("Diem Cao:");             gotoxy(41, 9); TextColor(10); printf("%d", luusnake.n);
	gotoxy(36,36); TextColor(47); printf("  EXIT  ");
	gotoxy(39,36);
	TextColor(0);
 char a;
	do
	{
		a = getch();
	}while(a!=13 && a != 'e' && a != 'E' && a !='5' && a != 8);
	system("cls");
	fflush(stdin);
	playgame(thoat, name, lever, luusnake, dname);	
}
void about(int &thoat, char name[], int &lever, Snake &luusnake, char dname[])
{
  khungplay();
  gotoxy(34, 0); TextColor(160); printf("    ABOUT   ");
  TextColor(0);
 		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, 6); TextColor(11); printf("Name:");       gotoxy(34, 6); TextColor(15); printf("TAN CHAN");
 gotoxy(22, 7); TextColor(11); printf("Birthday:");   gotoxy(34, 7); TextColor(10); printf("16/07/1999");
 gotoxy(22, 8); TextColor(11); printf("Fcebook:");    gotoxy(34, 8); TextColor(10); printf("Fb.com/tanchan679");
 gotoxy(22, 9); TextColor(11); printf("Gmail:");      gotoxy(34, 9); TextColor(10); printf("tanchan679@gmail.com");
 gotoxy(22, 10); TextColor(11); printf("Address:");   gotoxy(34, 10); TextColor(10); printf("Sin Ho - Lai Chau");
 gotoxy(22, 11); TextColor(11); printf("Schools:");   gotoxy(34,11); TextColor(10); printf("CNTT & TT Thai Nguyen");
                                                      gotoxy(42,12); TextColor(9); printf("(                )");
                                                      gotoxy(43,12); TextColor(10); printf("Class: CNTT-K16D");
 gotoxy(22, 13); TextColor(11); printf("Occupation:"); gotoxy(34, 13); TextColor(10); printf("Sinh Vien");
 gotoxy(22, 14); TextColor(11); printf("Hobby:");      gotoxy(34, 14); TextColor(10); printf("Play Game");
 
	gotoxy(36,36); TextColor(47); printf("  EXIT  ");
	gotoxy(39,36);
	TextColor(0);
 char a;
	do
	{
		a = getch();
	}while(a!=13 && a != 'e' && a != 'E' && a !='5' && a != 8);
	system("cls");
	fflush(stdin);
	playgame(thoat, name, lever, luusnake, dname);	
}

void khoitao(Snake &snake, HQ &hq)
{
	snake.dot[0].x = 7;  snake.dot[0].y = 8;
	snake.dot[1].x = 6;  snake.dot[1].y = 8;
	snake.dot[2].x = 5;  snake.dot[2].y = 8;
	snake.dot[3].x = 20;  snake.dot[3].y =20;
	hq.td.x = 20;        hq.td.y = 20;
	snake.tt = RIGHT;
	snake.n = 3;
}
void hienthi(Snake &snake, HQ &hq)
{
	TextColor(113);
	gotoxy(snake.dot[0].x, snake.dot[0].y); printf("%c", 2);
	TextColor(113);
	for(int i = 1; i < snake.n; i++)
	{
		gotoxy(snake.dot[i].x, snake.dot[i].y); printf("%c", 1);
	}
	int n = 0, l = 0;
   if(snake.tt == RIGHT) n++; l++;
   gotoxy(snake.dot[snake.n].x, snake.dot[snake.n].y); printf(" ");
   gotoxy(hq.td.x, hq.td.y); TextColor(124); printf("%c",15 );
   Time();
   gotoxy(9, 3);TextColor(15); printf("%d", snake.n);
}
void dieukhien(Snake &snake, int &cam)
{
	fflush(stdin);
	for(int i = snake.n; i>0; i--) 	snake.dot[i] = snake.dot[i-1];
	int tamdung = 0;
	if(kbhit())
	{
		char a = getch();
		if((a=='a'||a=='A'||a=='4') && cam != 2) { snake.tt = LEFT;cam=1;}
		else if((a=='d'||a=='D'||a=='6') && cam!=1) { snake.tt = RIGHT;cam=2; }
		else if((a=='s'||a=='S'||a=='2'||a=='5') && cam!=12) { snake.tt = DOWP;cam=11;}
		else if((a=='w'||a=='W'||a=='8') && cam!=11)  {snake.tt = UP;cam=12;}
		else if(a=='t'||a=='T' || a == 27)  tamdung = 1;
	} 
	if(snake.tt == LEFT) snake.dot[0].x--;
	else if(snake.tt == RIGHT) snake.dot[0].x++;
	else if(snake.tt == DOWP) snake.dot[0].y++;
	else if(snake.tt == UP) snake.dot[0].y--;
	 if(tamdung == 1)
	{
		gotoxy(34, 18);TextColor(144); printf("TAM DUNG!!!!");
		gotoxy(29, 18);
		int thoat = 0;
		do{
			char a = getch(); if(a == 't' ||a =='T') thoat = 1;
		}while(thoat!=1);
		gotoxy(33, 18);TextColor(112); printf("                   ");
	}
	}
	
void Random(Snake &snake, HQ &hq)
{
	if(snake.dot[0].x == hq.td.x && snake.dot[0].y == hq.td.y)
	{
	hq.td.x = rand()%69+5;
	hq.td.y = rand()%18+8;
	snake.n++;
	Beep(1000, 100);
    }
    gotoxy(78,40);
}

void thuagame(Snake snake, int &thua)
{
	if (snake.dot[0].x == 75) 
	  {
	  thua = 0;
		Beep(3000, 500);Sleep(20);Beep(3000, 500);
	     	}
		else if (snake.dot[0].y == 34)
		{
			thua = 0;
			Beep(3000, 500);Sleep(20);Beep(3000, 500);
	     	}
			else if (snake.dot[0].x == 4)
			{
			thua = 0;
			Beep(3000, 500);Sleep(20);Beep(3000, 500);
	     	}
				else if (snake.dot[0].y == 7) 
				{
			thua = 0;
			Beep(3000, 500);Sleep(20);Beep(3000, 500);
	     	}
	else thua = 1;
   
	for(int i = snake.n-1; i>0; i--)
	{
		if(snake.dot[0].x == snake.dot[i].x && snake.dot[0].y == snake.dot[i].y )
		{
			thua = 0;
			Beep(3000, 500);Sleep(20);Beep(3000, 500);
	     	}
	}
}
void Time()
{
	int time = clock()/1000, gio, phut, giay;
	gio = time/3600; phut = (time/60)%60, giay = time%60;
   	gotoxy(67, 3);TextColor(15);
	if(giay < 10 && gio<10 && phut<10) printf("0%d:0%d:0%d",gio, phut, giay );
   	else if(giay < 10 && gio<10) printf("0%d:%d:0%d",gio, phut, giay );
   	else if(phut < 10 && gio<10) printf("0%d:0%d:%d",gio, phut, giay );
   	else if(giay < 10 && phut<10) printf("%d:%d:0%d",gio, phut, giay );
   	else if(giay < 10 ) printf("%d:%d:0%d",gio, phut, giay );
   	else if(gio<10) printf("0%d:%d:%d",gio, phut, giay );
   	else if(phut<10)printf("%d:0%d:%d",gio, phut, giay );
}


void vaogame(char name[], int &lever,  Snake &luusnake, char dname[])
{
	lever = 100;
	khungplay();
	for(int i = 0; i<4; i++)
	{
		gotoxy(24,8+i);
		for(int j = 0; j<30; j++)
		{
			if(i == 0 || i==3) printf("%c", 196);
			else if(j == 0 || j==29) printf("%c", 179);
			else printf(" ");
		}
	}
		for(int i = 0; i<4; i++)
	{
		gotoxy(24,12+i);
		for(int j = 0; j<30; j++)
		{
			if(i == 0 || i==3) printf("%c", 196);
			else if(j == 0 || j==29) printf("%c", 179);
			else printf(" ");
		}
	}
	TextColor(12);
	gotoxy(35,7); printf("BAT DAU");
	TextColor(11);
	gotoxy(26,13); printf("Lever: ");
	gotoxy(26,9); printf("User Name: "); gotoxy(37,9);TextColor(7); gets(name); fflush(stdin);
    gotoxy(37,13);TextColor(12); printf("%c", 174); gotoxy(41,13);TextColor(12); printf("%c", 175);
    gotoxy(39,13);TextColor(15); printf("4");
    int chon = 0;
    int capdo=4;
    gotoxy(27,14);TextColor(2); printf("Phim 8: -1 | Phim 6: +1");
     gotoxy(39, 13);
    do{
    	fflush(stdin);
		char a = getch();
		if(a == 75 ||a == 'a'||a=='A'||a=='4') chon = 1;
		else if(a == 77 || a == 'd'||a=='D'||a=='6') chon = 2;
		else if(a == 13 ||a=='5') chon = 3;
		if(chon == 1 && capdo > 1) capdo=capdo-1;
		else if(chon == 2 && capdo < 9) capdo=capdo+1;
		gotoxy(39,13);TextColor(15); printf("%d", capdo);
	}while(chon != 3);
	//gan cap do
    switch(capdo)
    {
    	case 1: lever = 1000; break;
    	case 2: lever = 500; break;
    	case 3: lever = 250; break;
    	case 4: lever = 150; break;
    	case 5: lever = 100;  break;
    	case 6: lever = 80;  break;
    	case 7: lever = 50;  break;
    	case 8: lever = 25;  break;
    	case 9: lever = 15; break;
	}
	system("cls");
}

void docfile(Snake &luusnake, char dname[])
{
	FILE *p = fopen("Diemcao.txt","rt");
	if(p!=NULL)
    do{
    	fgets(dname, 30, p);
    	fscanf(p, "%d", &luusnake.n);
	}while(feof(p) == 0);
	fclose(p);
}
    
void ghifile(Snake snake, char name[])
{
	FILE *p = fopen("Diemcao.txt","wt");
	{
		fprintf(p, "%s\n%d", name, snake.n);
	}
	fclose(p);
}
void gameover(char name[], Snake snake, Snake luusnake)
{
			for(int i = 5; i<75; i++)
	{
		for(int j = 2; j<28; j++)
		{
			gotoxy(i, j+6); TextColor(112); printf(" ");
		}
		printf("\n");
	}
	int thoat = 0;
	if(snake.n <= luusnake.n)
	{
		gotoxy(33,15); TextColor(124); printf("GAME OVER");
	    gotoxy(20,18); TextColor(121); printf("Diem: ");
	    gotoxy(33,18); TextColor(121); printf("%d", snake.n);
    	gotoxy(20,17); TextColor(121); printf("Name player: ");
	    gotoxy(33,17); TextColor(121); printf("%s", name);
	do{
    thoat = thoat+1;
	if(kbhit())
	 {
		char a = getch(); 	if(a==13) thoat = 13;
	  }
	gotoxy(77,40); 	Sleep(300);
	}while(thoat != 13);
      } 
	if(snake.n > luusnake.n)
	{
		gotoxy(25,15); TextColor(124); printf("CHUC MUNG BAN DAT DIEM CAO MOI");
		gotoxy(45,17); TextColor(121); printf("Diem cu: ");
	    gotoxy(54,17); TextColor(121); printf("%d", luusnake.n);
    	gotoxy(20,17); TextColor(121); printf("Diem moi: ");
	    gotoxy(30,17); TextColor(121); printf("%d", snake.n);
	do{
    thoat = thoat+1;
	if(kbhit())
	 {
		char a = getch(); 	if(a==13) thoat = 13;
	  }
	gotoxy(77,40); 	Sleep(300);
	}while(thoat != 13);
      }
	TextColor(0);
}
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 Cờ Caro trên C/C++ màn hình Console(Demo Game)
Xây dựng demo Code Vượt vật cản trên m
5 3 Phiếu bình chọn
Xếp hạng bài viết
BÀI VIẾT LIÊN QUAN

5 BÌNH LUẬN

Đăng ký nhận thông báo
Thông báo email khi
guest
5 Bình luận
Mới nhất
Cũ nhất Được bình chọn nhiều nhất
Không thể gửi email
Phản hồi nội tuyến
tull
tull
2 năm trước

nó không có hiện mồi á bạn

Khánh
Khánh
2 năm trước

anh ơi, em chép thử vào devc++ để chạy thì có xuất hiện một lỗi ạ
devc++ tạo ra một file mới tên là “Makedile.win” và hiện lỗi ở chỗ
$(CPP) $(LINKOBJ) -o $(BIN) $(LIBS)
chứ lại không phải sai ở code chính
anh có biết lí do sao lại bị như vậy không ạ

bill
bill
2 năm trước

trời ơi visual sai tét bét luôn đó

PhongYV
PhongYV
1 năm trước
Trả lời  TUI CÓ CÁCH

ad ơi nó ko hiện mồi á a

NÊN ĐỌC THÊM

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

Dịch vụ code thuê

TUICOCACH.COM NHẬN ĐẶT TEXTLINK, BANNER, GP
5
0
Giáo sư! có thể ném gạch bên dưới nhé!x