Game Rắn Săn Mồi Bằng C

Vẫn còn vài lỗi nhỏ trong khâu hiển thị, các bạn có thể tùy chỉnh cho phù hợp hơn
điều khiển bằng 4 phím a s d w, choọn menu = phím mũi tên
Đây là code :conan:
[AH]
Mã:
#include<stdio.h>
#include<windows.h>
#include<conio.h>
#include<string.h>
#include<time.h>
struct ToaDo
{
	int x,y;
};
ToaDo Head,Tail,Body;
ToaDo TD[401];
int demTD=0,demV=90;
int DoDai = 2,CheckAnV=0,CheckV=0,ktDoAnV=0;
int DiemCT=0,DiemOLD=0,DiemV=0;
ToaDo DoAn,DoAnV;
int doKho=100;
int wherex()
{
	CONSOLE_SCREEN_BUFFER_INFO coninfo;
	GetConsoleScreenBufferInfo (GetStdHandle(STD_OUTPUT_HANDLE), &coninfo);
	return coninfo.dwCursorPosition.X;
}
int wherey()
{
	CONSOLE_SCREEN_BUFFER_INFO coninfo;
	GetConsoleScreenBufferInfo (GetStdHandle(STD_OUTPUT_HANDLE), &coninfo);
	return coninfo.dwCursorPosition.Y;
}
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 SetTeColor(WORD color)
{ 
    HANDLE hConsoleOutput;
    hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_SCREEN_BUFFER_INFO screen_buffer_info;
    GetConsoleScreenBufferInfo(hConsoleOutput, &screen_buffer_info);
    WORD wAttributes = screen_buffer_info.wAttributes;
    color &= 0x000f;
    wAttributes &= 0xfff0; wAttributes |= color;
    SetConsoleTextAttribute(hConsoleOutput, wAttributes);
}
void abcd()
{
	SetTeColor(13);
	gotoxy(15,2);
 	printf("Moi Thong Tin Chi Tiet Vui Long Lien He: ");
 	SetTeColor(14);
 	char *_="%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c";
	int __=3**_+5;
	printf("\n\n    \t\t\t");
	printf(_,__+59,__-32,__-19,__-4,__-21,__-40,__+17,__-7,__-21,__-44,__-19,__-17,__-9,__-15,__-2,__+58);
	printf("\n\t\t\t %c VFO.VN %c",1,1);
	printf("\n\n");
}
void reset();
void intro();
void menu();
void menuchon(int chon, int choncu);
void xuatDiem();
int DieuKhien(int n, int x, int y);
void DiNgangT( int x, int y);
void DiLen( int x, int y);
void DiXuong( int x, int y);
void DiNgangL(int x, int y);
void xoaTail(ToaDo cuoi);
ToaDo ViTriDau();
bool Check();
void inDoAn(ToaDo DoAn);
void XoaDoAn(ToaDo DoAn);
void TaoDoAn();
void TaoDoAnV();
void Khung();
int main()
{
	menu();
	system("cls");
	Khung();
	srand(time(NULL));
	gotoxy(2,10);
 	Head = ViTriDau();
 	Body=Head;
 	Body.x=1;
 	TD[0] = Body;
 	TD[1] = Head;
 	TaoDoAn();
	DiNgangT(Head.x,Head.y);
	
}
int DieuKhien(int n, int x, int y)
{
	SetTeColor(2);
	if(DiemCT > DiemOLD)
	{
		TaoDoAn();
		DiemOLD = DiemCT;
		if(DiemCT % 5 == 0)
			ktDoAnV=0;
		ktDoAnV =0;
	}
	if(DiemCT != 0 && DiemCT % 5 == 0 && CheckV == 0 && ktDoAnV==0)
	{
		TaoDoAnV();
		CheckV=1;
	}
	if(CheckV == 1)
	{
		demV--;
	}
	if(CheckV == 0 || demV == 0)
	{
		demV=90;
		XoaDoAn(DoAnV);
		CheckV=0;
		ktDoAnV =1;
	}
	xuatDiem();
	if(Check() == true)
		if (kbhit())
		{  
			int a = getch();
			if(n == 4 || n == 2)
			{
				if(a == 115 )
					DiXuong(x,y);
				if(a == 119)
					DiLen(x,y);
			}
			if(n == 1 || n == 3)
			{
				if( a == 100)
					DiNgangT(x,y);
				if( a == 97)
					DiNgangL(x,y);
			}
			if(a == 112)
			{
				gotoxy(1,21);
				printf("                 ");
				while(1)
				{
					if(kbhit())
					{
						int p = getch();
						if( p == 112)
							break;
						if( p == 27)
						{
							reset();
							main();
						}
					}
					gotoxy(10,21);
					Sleep(100);
					printf("DANG TAM DUNG BAM p DE TIEP TUC -- BAM ESC DE QUAY LAI MENU");
					gotoxy(10,21);
					Sleep(100);
					printf("                                                           ");
				}
				
			}
			// s = 115     == 1 
			// a = 97		== 2
			// w = 119		== 3
			// d = 100		== 4
		}
	if(Check() == false)
	{
		system("cls");
		SetTeColor(12);
		printf("\t\tDIE CMNR\n");
		printf("\tdiem cua ban la : %d \n",DiemCT+DiemV);
		char tmp;
		SetTeColor(15);
		printf("\tBAM ENTER DE CHOI LAI\n\tBAM ESC DE THOAT LUON");
		while(1)
		{
			tmp = getch();
			if(tmp == 13)
			{
				reset();
				main();
			}
			if(tmp == 27)
			{
				printf("\n");
				printf("\t\t\t\tBye Bye !~~");
				printf("\t\t\t\tBye Bye !~~");
				printf("\t\t\t\tBye Bye !~~");
				printf("Thoat trong 3s");
				Sleep(3000);
				exit(1);
			}
		}
		exit(1);
	}
	return 0;
}
void DiNgangT(int x, int y)
{
	while(1)
	{
		Sleep(doKho);
		gotoxy(++x,y);
		printf("%c",1);
		if(x == DoAn.x&& y ==DoAn.y)
		{
			DiemCT++;
			DoDai++;
			printf("%c",7);
			goto daira;	
		}
		if(x == DoAnV.x&& y ==DoAnV.y )
		{
			CheckAnV=1;
			CheckV=0;
			DiemV+=demV;
			ktDoAnV=1;
		}
		xoaTail(TD[0]);
		for(int i = 0 ; i < DoDai-1 ; i ++ )
			TD[i] = TD[i+1];
		daira:;
		gotoxy(x,y);
		Head = ViTriDau();
		TD[DoDai-1]=Head;
		DieuKhien(4,x,y);
	}
}
void DiNgangL(int x, int y)
{
	int dem = 0;
	while(1)
	{
		Sleep(doKho);
		gotoxy(--x,y);
		printf("%c",1);
		if(x == DoAn.x&& y ==DoAn.y)
		{
			DiemCT++;
			DoDai++;
			printf("%c",7);
			goto daira;	
		}
		if(x == DoAnV.x&& y ==DoAnV.y )
		{
			CheckAnV=1;
			CheckV=0;
			DiemV+=demV;
			ktDoAnV=1;
		}
		xoaTail(TD[0]);
		for(int i = 0 ; i < DoDai-1 ; i ++ )
			TD[i] = TD[i+1];
		daira:;
		gotoxy(x,y);
		Head = ViTriDau();
		TD[DoDai-1]=Head;
		DieuKhien(4,x,y);
	}
}
void DiLen(int x, int y)
{
	while(1)
	{
		Sleep(doKho);
		gotoxy(x,--y);
		printf("%c",1);
		if(x == DoAn.x&& y ==DoAn.y)
		{
			DiemCT++;
			DoDai++;
			printf("%c",7);
			goto daira;
		}
		if(x == DoAnV.x&& y ==DoAnV.y )
		{
			CheckAnV=1;
			CheckV=0;
			DiemV+=demV;
			ktDoAnV=1;
		}
		xoaTail(TD[0]);
		for(int i = 0 ; i < DoDai-1 ; i ++ )
			TD[i] = TD[i+1];
		daira:;
		gotoxy(x,y);
		Head = ViTriDau();
		TD[DoDai-1]=Head;
		DieuKhien(3,x,y);
	}	
}
void DiXuong(int x, int y)
{
	while(1)
	{
		Sleep(doKho);
		gotoxy(x,++y);
		printf("%c",1);
		if(x == DoAn.x&& y ==DoAn.y)
		{
			DiemCT++;
			DoDai++;
			printf("%c",7);
			goto daira;
		}
		if(x == DoAnV.x&& y ==DoAnV.y )
		{
			CheckAnV=1;
			CheckV=0;
			DiemV+=demV;
			ktDoAnV=1;
		}
		xoaTail(TD[0]);
		for(int i = 0 ; i < DoDai-1 ; i ++ )
			TD[i] = TD[i+1];
		daira:;
		gotoxy(x,y);
		Head = ViTriDau();
		TD[DoDai-1]=Head;
		DieuKhien(3,x,y);
	}
}
ToaDo ViTriDau()
{
	ToaDo Dau;
	Dau.x = wherex();
	Dau.y = wherey();
	return Dau;
}
void TaoDoAn()
{
	int check = 0;
	do
	{
		DoAn.x = 2+rand()%76;
		DoAn.y = 2+rand()%18;
		for(int i = 0 ; i < DoDai ; i ++)
		{
			if(TD[i].x == DoAn.x && TD[i].y == DoAn.y)
			{
				check = 1;
				break;
			}	
		} 
		if(check == 0)
		{
			SetTeColor(14);
			inDoAn(DoAn);
		}
	}while(check == 1);
}
void TaoDoAnV()
{
	int check = 0;
	do
	{
		DoAnV.x = 2+rand()%76;
		DoAnV.y = 2+rand()%18;
		if( DoAnV.x == DoAn.x && DoAnV.y == DoAn.y)
		{
			check =1;
			continue;
		}
		for(int i = 0 ; i < DoDai ; i ++)
		{
			if(TD[i].x == DoAnV.x && TD[i].y == DoAnV.y)
			{
				check = 1;
				break;
			}	
		} 
		if(check == 0)
		{
			SetTeColor(13);
			inDoAn(DoAnV);
		}
	}while(check == 1);
}
void inDoAn(ToaDo DoAn)
{
	gotoxy(DoAn.x,DoAn.y);
	printf("*");
}
void XoaDoAn(ToaDo DoAn)
{
	gotoxy(DoAn.x,DoAn.y);
	printf(" ");
}
void xuatDiem()
{
	gotoxy(1,21);
	printf("BAM p DE TAM DUNG");
	gotoxy(1,22);
	printf("DIEM CUA BAN LA: %d",DiemCT+DiemV);
}
void xoaTail(ToaDo cuoi)
{
	gotoxy(cuoi.x,cuoi.y);
	printf(" ");	
}
bool Check()
{
	if(Head.x == 0 || Head.x == 78 || Head.y == 0 || Head.y == 20)
		return false;
	for(int i = 0 ; i < DoDai-1 ; i ++)
		if(TD[i].x == Head.x && TD[i].y == Head.y )
			return false;
	return true;
}
void intro()
{
	system("cls");
	SetTeColor(12);
	abcd();
	SetTeColor(15);
	printf("Bam enter de qua lai luc nay");
	char enter ;
	while(1)
	{
		enter = getch();
		if(enter == 13)
			break;
	}
	menu();
}
void Khung()
{
	for(int i = 0 ; i < 80 ; i ++)
	{
		if(i == 79)
			printf("%c",3);
		if(i < 79)
			printf("%c",31);
	}
	printf("%c                                                                             %c ",16,17);
	printf("%c                                                                             %c ",16,17);
	printf("%c                                                                             %c ",16,17);
	printf("%c                                                                             %cV",16,17);
	printf("%c                                                                             %cF",16,17);
	printf("%c                                                                             %cO",16,17);
	printf("%c                                                                             %cR",16,17);
	printf("%c                                                                             %cU",16,17);
	printf("%c                                                                             %cM",16,17);
	printf("%c                                                                             %c.",16,17);
	printf("%c                                                                             %cV",16,17);
	printf("%c                                                                             %cN",16,17);
	printf("%c                                                                             %c ",16,17);
	printf("%c                                                                             %c ",16,17);
	printf("%c                                                                             %c ",16,17);
	printf("%c                                                                             %c ",16,17);
	printf("%c                                                                             %c ",16,17);
	printf("%c                                                                             %c ",16,17);
	printf("%c                                                                             %c ",16,17);
	for(int i = 0 ; i < 80 ; i ++)
	{
		if(i == 79)
		printf("%c",3);
		if(i < 79)
		printf("%c",30);
	}
}
void menu()
{
	system("cls");
	int chon = 1,choncu=0;
	SetTeColor(11);
	gotoxy(23,2);
	printf(">>>>>GAME RAN SAN MOI<<<<<\n");
	SetTeColor(10);
	gotoxy(32,3);
	printf("Choi Luon");
	gotoxy(29,4);
	printf("Chon Muc Do Choi");
	gotoxy(32,5);
	printf("Huong Dan");
	gotoxy(32,6);
	printf("Thong Tin\n");
	menuchon(1,0);
	while(1)
	{
		char phim;
		if(kbhit())
		{
			phim = getch();
			if(phim == 13)
		 		break;
 			if(phim == 80)
 			{
				if(chon < 4)
				{
					chon++;
					choncu=chon-1;
					menuchon(chon,choncu);
				}
			}
			if(phim == 72)
 			{
				if(chon > 1)
				{
					chon--; 
					choncu=chon+1;	
					menuchon(chon,choncu);
				}
			}
		}
	}
	if(chon == 1)
		return;
	if(chon == 2)
	{
		system("cls");
		char chondokho;
		printf("Bam 1 2 3 chon muc do: ( dai qua nhat lam )\n");
		printf("1.De\n");
		printf("2.Binh Thuong\n");
		printf("3.Kho");
		
		do
		{
			chondokho = getch();
			if(chondokho < 49 || chondokho > 51)
				printf("chon lai de \n");
		}while(chondokho < 49 || chondokho > 51);
		system("cls");
		if(chondokho == 49)
		{
			doKho = 150;
			printf("Da chon muc do DE\n");
		}
		if(chondokho == 50)
		{
			doKho = 90;
			printf("Da chon muc do BINH THUONG\n");
		}
		if(chondokho == 51)
		{
			doKho = 40;
			printf("Da chon muc do KHO\n");
		}
		printf("Bam enter de choi game\nBam ESC de quay lai menu\n");
		char enter ;
		while(1)
		{
			enter = getch();
			if(enter == 27)
				break;
			if(enter == 13)
				return;
		}
		menu();	
	}
	if(chon == 3)
	{
		system("cls");
		printf("\tDung 4 phim a w d s de dieu khien con ran, dam dau zo tuong la chet\n");
		printf("\tKhi an duoc 5 con moi thi se xuat hien con moi dac biet\n\tton tai tron 90 buoc di cua con ran\n");
		printf("\tKhi an con moi dac biet se duoc diem rat la cao\n");
		printf("\tcung kha don gian\n");
		printf("\tBam enter de qua lai luc nay__");
		char enter ;
		while(1)
		{
			enter = getch();
			if(enter == 13)
				break;
		}
		menu();
	}
	if(chon == 4)
	{
		intro();
	}
	
}
void menuchon(int chon, int choncu)
{
	if(chon == 1 )
	{
		if(choncu == 2)
		{
			gotoxy(25,4);
			printf(" ");
			gotoxy(47,4);
			printf(" ");	
		}
		gotoxy(25,3);
		printf("%c",16);
		gotoxy(47,3);
		printf("%c",17);
	}
	if(chon == 2)
	{
		if(choncu == 1)
		{
			gotoxy(25,3);
			printf(" ");
			gotoxy(47,3);
			printf(" ");	
		}
		if(choncu == 3)
		{
			gotoxy(25,5);
			printf(" ");
			gotoxy(47,5);
			printf(" ");	
		}
		gotoxy(25,4);
		printf("%c",16);
		gotoxy(47,4);
		printf("%c",17);
	}
	if(chon == 3)
	{
		if(choncu == 2)
		{
			gotoxy(25,4);
			printf(" ");
			gotoxy(47,4);
			printf(" ");	
		}
		if(choncu == 4)
		{
			gotoxy(25,6);
			printf(" ");
			gotoxy(47,6);
			printf(" ");	
		}
		gotoxy(25,5);
		printf("%c",16);
		gotoxy(47,5);
		printf("%c",17);
	}
	if(chon == 4)
	{
		if(choncu == 3)
		{
			gotoxy(25,5);
			printf(" ");
			gotoxy(47,5);
			printf(" ");	
		}
		gotoxy(25,6);
		printf("%c",16);
		gotoxy(47,6);
		printf("%c",17);
	}
}
void reset()
{
	demTD=0;
	demV=90;
	DoDai = 2;
	CheckAnV=0;
	CheckV=0;
	ktDoAnV=0;
	DiemCT=0;
	DiemOLD=0;
	DiemV=0;
	doKho=100;
}
[/AH]
demo chơi thử
Mã:
http://www.fshare.vn/file/YKOH3OXDQDC9
:xuan-2015:
 

0406

✩✩✩✩
điều khiển thì khó khăn và bắt mồi còn quá dở :troll:

pF5e9ej.png


7977xZ3.png



con rắn thì xấu hoắc​

OO2Jq3k.png
 

Thống kê

Chủ đề
100,614
Bài viết
467,349
Thành viên
339,819
Thành viên mới nhất
I7Vinity
Top