Hướng dẫn code c++ game rắn

Thủ Thuật Game

Hướng dẫn Code Game Rắn Săn Mồi C++

Hướng dẫn code c++ game rắn
By Game Tip On Jun 7, 2022

Share

[Hướng dẫn Code Game Rắn Săn Mồi C++


Video demo hướng dẫn code game rắn săn mỗi trong C++. Các bạn có thể tham khảo cách làm, cách code game rắn săn mồi trong link phía dưới.
Hướng dẫn chi tiết:

Hãy like, đăng ký kênh, để lại những nhận xét cũng như giới thiệu khóa học cho bạn bè của mình để ủng hộ cho Lập Trình Không Khó nhé các bạn!
=====================
Kết nối với Lập Trình Không Khó
Website:
Facebook:
Email: [email protected]

#laptrinhkhongkho #ran #ran_san_moi

Hướng dẫn code c++ game rắn

➪ Tags: #Hướng #dẫn #Code #Game #Rắn #Săn #Mồi

➪ Keyword: share code game,do an do hoa may tinh,game ran san moi C++,game C++ graphics

share code bán acc gameshare code game bài onlineshare code game html5share code shop bán acc game free fireshare code shop game

Share

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.

Hướng dẫn code c++ game rắ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);
	  }
}

  • Kiếm tiền Accesstrade, kiếm tiền tại nhà với Accesstrade.vn – Tiếp thị liên kết
  • MegaURL – Rút gọn link kiếm tiền có giá cao tại Việt Nam
  • Top 4 App kiếm tiền online trên điện thoại tốt nhất 2022

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

enum TT{RIGHT, LEFT, UP, DOWP};
struct Toado{
	int x, y;
};
struct Snake{
	Toado dot[500];
	int n;
	TT tt;
};
struct HQ{
	Toado td;
};
0

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

enum TT{RIGHT, LEFT, UP, DOWP};
struct Toado{
	int x, y;
};
struct Snake{
	Toado dot[500];
	int n;
	TT tt;
};
struct HQ{
	Toado td;
};
1

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

enum TT{RIGHT, LEFT, UP, DOWP};
struct Toado{
	int x, y;
};
struct Snake{
	Toado dot[500];
	int n;
	TT tt;
};
struct HQ{
	Toado td;
};
2

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

enum TT{RIGHT, LEFT, UP, DOWP};
struct Toado{
	int x, y;
};
struct Snake{
	Toado dot[500];
	int n;
	TT tt;
};
struct HQ{
	Toado td;
};
3

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

enum TT{RIGHT, LEFT, UP, DOWP};
struct Toado{
	int x, y;
};
struct Snake{
	Toado dot[500];
	int n;
	TT tt;
};
struct HQ{
	Toado td;
};
4

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

enum TT{RIGHT, LEFT, UP, DOWP};
struct Toado{
	int x, y;
};
struct Snake{
	Toado dot[500];
	int n;
	TT tt;
};
struct HQ{
	Toado td;
};
5

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

enum TT{RIGHT, LEFT, UP, DOWP};
struct Toado{
	int x, y;
};
struct Snake{
	Toado dot[500];
	int n;
	TT tt;
};
struct HQ{
	Toado td;
};
6

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

enum TT{RIGHT, LEFT, UP, DOWP};
struct Toado{
	int x, y;
};
struct Snake{
	Toado dot[500];
	int n;
	TT tt;
};
struct HQ{
	Toado td;
};
7

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…)