⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 台球.txt

📁 能够完成一些台球游戏的基本功能
💻 TXT
字号:
#include<stdio.h>
#include<stdlib.h>
#include<graphics.h>
#include<math.h>
#include<bios.h>
#include<process.h>
#include<ctype.h>
#include<conio.h>
#include<dos.h>

#define UP 72
#define DOWN 80
#define LEFT 75
#define RIGHT 77
#define HOME 71
#define END 79
#define PAGEUP 73
#define PAGEDOWN 81

void Menu(void);
void Left(int *a,int *b,int *m,int *n);
void Right(int *a,int *b,int *m,int *n);
void Up(int *a,int *b,int *m,int *n);
void Down(int *a,int *b,int *m,int *n);
void Home(int *a,int *b,int *m,int *n);
void End(int *a,int *b,int *m,int *n);
void PageUp(int *a,int *b,int *m,int *n);
void PageDown(int *a,int *b,int *m,int *n);
int Meet(int *a,int *b,int *m,int *n);
int Got(int *a,int *b,int *m,int *n);
union k
{
 	char c[2];
	int i;
};
typedef union k KEY;
KEY key;
struct dot
{
	int x;
	int y;
};
typedef struct dot DOT;
DOT ball1,ball2;


main()
{
	int driver,mode;
	int *x,*y,*a,*b;
	detectgraph(&driver,&mode);
	initgraph(&driver,&mode,"c:\\tc");
	setbkcolor(GREEN);
	cleardevice();
	Menu();
	ball1.x=200;
	ball1.y=200;
	ball2.x=300;
	ball2.y=300;
	x=&ball1.x;
	y=&ball1.y;
	a=&ball2.x;
	b=&ball2.y;
	setcolor(RED);
	circle(ball1.x,ball1.y,10);
	setfillstyle(CLOSE_DOT_FILL,RED);
	floodfill(ball1.x,ball1.y,RED);
	circle(ball2.x,ball2.y,10);
	setfillstyle(CLOSE_DOT_FILL,RED);
	floodfill(ball2.x,ball2.y,RED);
	circle(165,460,10);
	circle(165,15,10);
	circle(625,15,10);
	circle(625,460,10);
	while(key.c[0]!='q')
	{
		Menu();
		key.i=bioskey(0);
		switch(key.c[1])
		{
			case LEFT:Left(x,y,a,b);
			                     break;
			case RIGHT:Right(x,y,a,b);
				      break;
			case UP:Up(x,y,a,b);
				break;
			case DOWN:Down(x,y,a,b);
				       break;
			case HOME:Home(x,y,a,b);
				       break;
			case PAGEUP:PageUp(x,y,a,b);
				            break;
			case PAGEDOWN:PageDown(x,y,a,b);
					   break;
			case END:End(x,y,a,b);
				   break;
			case 'a':
			              break;
		}
}
}
void Menu(void)
{
	#define STARTX 10
	#define STARTY 22
	#define DISTANCE 30
	int i;
	char *menu_name[]={"a:start game",
			     "q:quit game",
			     "     Up",
			     "LEFT DOWN RIGHT",
			     "Home PageUp",
			     "End PageDown"};
	setcolor(WHITE);
 	rectangle(5,5,150,470);
	rectangle(155,5,635,470);
	setcolor(LIGHTBLUE);
	settextstyle(TRIPLEX_FONT,HORIZ_DIR,2);
	for(i=0;i<5;i++)
	{
		outtextxy(STARTX,STARTY+(i+1)*DISTANCE,menu_name[i]);
	}
}

void Left(int *a,int *b,int *m,int *n)
{
	int i,size,h,j;
	void *buf;
	h=Got(a,b,m,n);
	if(h)
	{
			size=imagesize(*a-10,*b-10,*a+10,*b+10);
			if(size!=-1)
			buf=(void *)malloc(size);
			if(buf)
			{
				j=Meet(a,b,m,n);
				for(i=0;i<50;i++)
				{
			
					getimage(*a-10,*b-10,*a+10,*b+10,buf);
					if(j)
					{
						if(*a>165)
						{
							*a=*a-1;
							putimage(*a-10,*b-10,buf,COPY_PUT);
						}
						else
						{
							do{
								*a=*a+1;
								putimage(*a-10,*b-10,buf,COPY_PUT);
								i++;
							}while(i<50);
						}
					}
					else
					{
						do{
							*a=*a+1;
							putimage(*a-10,*b-10,buf,COPY_PUT);
							if(*a>625)
							break;
							i++;
							}while(i<50);
					}
				}/*if(buf)end*/
			}
		}
}
void Right(int *a,int *b,int *m,int *n)
{
	int i,size,h,j;
	void *buf;
	h=Got(a,b,m,n);
	if(h)
	{
		j=Meet(a,b,m,n);
		for(i=0;i<50;i++)
		{
			size=imagesize(*a-10,*b-10,*a+10,*b+10);
			if(size!=-1)
			buf=(void *)malloc(size);
			if(buf)
			{
				getimage(*a-10,*b-10,*a+10,*b+10,buf);
				if(j)
				{
					if(*a<625)
					{
						*a=*a+1;
						putimage(*a-10,*b-10,buf,COPY_PUT);
					}
				else
				{
					do{
						*a=*a-1;
						putimage(*a-10,*b-10,buf,COPY_PUT);
						i++;
					}while(i<50);
				}
			}
		else
		{
			do{
				*a=*a-1;
				putimage(*a-10,*b-10,buf,COPY_PUT);
				if(*a<165)
				break;
				i++;
			}while(i<50);
		}
	}/*if(buf)end*/
	}
	}
}
void Up(int *a,int *b,int *m,int *n)
{
	int i,size,h,j;
	void *buf;
	h=Got(a,b,m,n);
	if(h)
	{
		j=Meet(a,b,m,n);
		for(i=0;i<50;i++)
		{
			size=imagesize(*a-10,*b-10,*a+10,*b+10);
			if(size!=-1)
			buf=(void *)malloc(size);
			if(buf)
			{
				getimage(*a-10,*b-10,*a+10,*b+10,buf);
				if(j)
				{
					if(*b>15)
					{
						*b=*b-1;
						putimage(*a-10,*b-10,buf,COPY_PUT);
					}
				else
				{
					do{
						*b=*b+1;
						putimage(*a-10,*b-10,buf,COPY_PUT);
						i++;
					}while(i<50);
				}
			}
		else
		{
			do{
				*b=*b+1;
				putimage(*a-10,*b-10,buf,COPY_PUT);
				if(*b>460)
				break;
				i++;
			}while(i<50);
		}
	}/*if(buf)end*/
	}
	}
}
void Down(int *a,int *b,int *m,int *n)
{
	int i,size,h,j;
	void *buf;
	h=Got(a,b,m,n);
	if(h)
	{
		j=Meet(a,b,m,n);
		for(i=0;i<50;i++)
		{
			size=imagesize(*a-10,*b-10,*a+10,*b+10);
			if(size!=-1)
			buf=(void *)malloc(size);
			if(buf)
			{
				getimage(*a-10,*b-10,*a+10,*b+10,buf);
				if(j)
				{
					if(*b<470)
					{
						*b=*b+1;
						putimage(*a-10,*b-10,buf,COPY_PUT);
					}
				else
				{
					do{
						*b=*b-1;
						putimage(*a-10,*b-10,buf,COPY_PUT);
						i++;
					}while(i<50);
				}
			}
		else
		{
			do{
				*b=*b-1;
				putimage(*a-10,*b-10,buf,COPY_PUT);
				if(*b<15)
				break;
				i++;
			}while(i<50);
		}
	}/*if(buf)end*/
	}
	}
}
void Home(int *a,int *b,int *m,int *n)
{
	int i,h,size,j;
	void *buf;
	h=Got(a,b,m,n);
	if(h)
	{
		j=Meet(a,b,m,n);
		for(i=0;i<50;i++)
		{
			size=imagesize(*a-10,*b-10,*a+10,*b+10);
			if(size!=-1)
			buf=(void *)malloc(size);
			if(buf)
			{
				getimage(*a-10,*b-10,*a+10,*b+10,buf);
				if(j)
				{
					if((*a<625)&&(*a>165)&&(*b<460)&&(*b>15))
					{
						*a=*a-1;
						*b=*b-1;
						putimage(*a-10,*b-10,buf,COPY_PUT);
					}
					if(((*a<165)||(*a==165))&&(*b<640)&&(*b>15))
					{
						*a=*a+1;
						*b=*b-1;
						putimage(*a-10,*b-10,buf,COPY_PUT);
						if((*b<15)||(*b==15))
						{
							do
							{
								*a=*a+1;
								*b=*b+1;
								putimage(*a-10,*b-10,buf,COPY_PUT);
								i++;
							}while(i<50);
						}
					}
					if(((*b<15)||(*b==15))&&(*a<625)&&(*a>165))
					{
						*a=*a-1;
						*b=*b+1;
						putimage(*a-10,*b-10,buf,COPY_PUT);
						if((*a<165)||(*a==165))
						{
							do
							{
								*a=*a+1;
								*b=*b+1;
								putimage(*a-10,*b-10,buf,COPY_PUT);
								i++;
							}while(i<50);
						}
					}
				}
			}
		}
	}
}
void End(int *a,int *b,int *m,int *n)
{
	int i,h,j,size;
	void *buf;
	h=Got(a,b,m,n);
	if(h)
	{
		j=Meet(a,b,m,n);
		for(i=0;i<50;i++)
		{
			size=imagesize(*a-10,*b-10,*a+10,*b+10);
			if(size!=-1)
			buf=(void *)malloc(size);
			if(buf)
			{
				getimage(*a-10,*b-10,*a+10,*b+10,buf);
				if(j)
				{
					if((*a<625)&&(*a>165)&&(*b<460)&&(*b>15))
					{
						*a=*a-1;
						*b=*b+1;
						putimage(*a-10,*b-10,buf,COPY_PUT);
					}
					if(((*b>460)||(*b==460))&&(*a>165)&&(*a<625))
					{
						*a=*a-1;
						*b=*b-1;
						putimage(*a-10,*b-10,buf,COPY_PUT);
						if((*a<165)||(*a==165))
						{
							do
							{
								*a=*a+1;
								*b=*b-1;
								putimage(*a-10,*b-10,buf,COPY_PUT);
								i++;
							}while(i<50);
						}
					}
					if(((*a<165)||(*a==165))&&(*b<460)&&(*b>15))
					{
						*a=*a+1;
						*b=*b+1;
						putimage(*a-10,*b-10,buf,COPY_PUT);
						if((*b>460)||(*b==460))
						{
							do
							{
								*a=*a+1;
								*b=*b-1;
								putimage(*a-10,*b-10,buf,COPY_PUT);
								i++;
							}while(i<50);
						}
					}
				}
			}
		}
	}
}
void PageUp(int *a,int *b,int *m,int *n)
{
	int i,h,size,j;
	void *buf;
	h=Got(a,b,m,n);
	if(h)
	{
		j=Meet(a,b,m,n);
		for(i=0;i<50;i++)
		{
			size=imagesize(*a-10,*b-10,*a+10,*b+10);
			if(size!=-1)
			buf=(void *)malloc(size);
			if(buf)
			{
				getimage(*a-10,*b-10,*a+10,*b+10,buf);
				if(j)
				{
					if((*a<625)&&(*a>165)&&(*b<460)&&(*b>15))
					{
						*a=*a+1;
						*b=*b-1;
						putimage(*a-10,*b-10,buf,COPY_PUT);
					}
					if(((*b<15)||(*b==15))&&(*a<625)&&(*a>165))
					{
						*a=*a+1;
						*b=*b+1;
						putimage(*a-10,*b-10,buf,COPY_PUT);
						if((*a>625)||(*a==625))
						{
							do
							{
								*a=*a-1;
								*b=*b+1;
								putimage(*a-10,*b-10,buf,COPY_PUT);
								i++;
							}while(i<50);
						}
					}
					if(((*a>625)||(*a==625))&&(*b<460)&&(*b>15))
					{
						*a=*a-1;
						*b=*b-1;
						putimage(*a-10,*b-10,buf,COPY_PUT);
						if((*b<15)||(*b==15))
						{
							do
							{
								*a=*a-1;
								*b=*b+1;
								putimage(*a-10,*b-10,buf,COPY_PUT);
								i++;
							}while(i<50);
						}
					}
				}
			}
		}
	}
}
void PageDown(int *a,int *b,int *m,int *n)
{
	int i,h,j,size;
	void *buf;
	h=Got(a,b,m,n);
	if(h)
	{
		j=Meet(a,b,m,n);
		for(i=0;i<50;i++)
		{
			size=imagesize(*a-10,*b-10,*a+10,*b+10);
			if(size!=-1)
			buf=(void *)malloc(size);
			if(buf)
			{
				getimage(*a-10,*b-10,*a+10,*b+10,buf);
				if(j)
				{
					if((*a<625)&&(*a>165)&&(*b<460)&&(*b>15))
					{
						*a=*a+1;
						*b=*b+1;
						putimage(*a-10,*b-10,buf,COPY_PUT);
					}
					if((*b>460)||(*b==460)&&(*a<625)&&(*a>165))
					{
						*a=*a+1;
						*b=*b-1;
						putimage(*a-10,*b-10,buf,COPY_PUT);
						if((*a>625)||(*a==625))
						{
							do
							{
								*a=*a-1;
								*b=*b-1;
								putimage(*a-10,*b-10,buf,COPY_PUT);
								i++;
							}while(i<50);
						}
					}
					if(((*a>625)||(*a==625))&&(*b<460)&&(*b>15))
					{
						*a=*a-1;
						*b=*b+1;
						putimage(*a-10,*b-10,buf,COPY_PUT);
						if((*b>460)||(*b==460))
						{
							do
							{
								*a=*a-1;
								*b=*b+1;
								putimage(*a-10,*b-10,buf,COPY_PUT);
								i++;
							}while(i<50);
						}
					}
				}
			}
		}
	}
}

int Meet(int *a,int *b,int *m,int *n)
{
	if(sqrt((*a-*m)*(*a-*m)+(*b-*n)*(*b-*n))<20||
		sqrt((*a-*m)*(*a-*m)+(*b-*n)*(*b-*n))==20)
		return 0;
	else
		return 1;
}
int Got(int *a,int *b,int *m,int *n)
{
	if(((fabs(*a-165))<10e-6)&&(fabs(*b-460)<10e-6))
	{
		printf("Succeed!\n");
		exit(0);
	}
	if(((fabs(*a-165))<10e-6)&&(fabs(*b-15)<10e-6))
	{
		printf("Succeed!\n");
		exit(0);
	}
	if(((fabs(*a-625))<10e-6)&&(fabs(*b-15)<10e-6))
	{
		printf("Succeed!\n");
		exit(0);
	}
	if(((fabs(*a-625))<10e-6)&&(fabs(*b-460)<10e-6))
	{
		printf("Succeed!\n");
		exit(0);
	}
	if(((fabs(*m-165))<10e-6)&&(fabs(*n-460)<10e-6))
	{
		printf("Succeed!\n");
		exit(0);
	}
	if(((fabs(*m-165))<10e-6)&&(fabs(*n-15)<10e-6))
	{
		printf("Succeed!\n");
		exit(0);
	}
	if(((fabs(*m-625))<10e-6)&&(fabs(*n-15)<10e-6))
	{
		printf("Succeed!\n");
		exit(0);
	}
	if(((fabs(*m-625))<10e-6)&&(fabs(*n-460)<10e-6))
	{
		printf("Succeed!\n");
		exit(0);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -