飞机1.2

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>
#include<time.h>
#include<malloc.h>
int x1[100],x2,x3,y1[100],y2,y3,x0,y0,
en,bu,x,y,enz,de,f,f0,fp,zu,si[1000][1000],speed,exf,xp[100],yp[100];
int fri,xf,yf,ff,life,xbuff,ybuff,xdebuff,ydebuff,speedbuff,ta1,tk1,xt1,yt1;
//1靶子,2子弹,0总屏幕 ,p阻拦,en敌人数量 ,bu子弹数量,si敌人位置 ,speed移动步数 
void show();
void geng(char s);
void help(char s);
void buff1(char s);
void buff2();
void gotoxy(int e,int f);
void HideCursor()

{
	CONSOLE_CURSOR_INFO cursor_info={1,0};
	SetConsoleCursorInfo (GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
}
	//横向y,纵向x 
int main()
{
	int i,j,m,n,en;
	x=10;y=20;x0=2*x;y0=3*y;x1[0]=0;x2=x-1;y2=y;y1[0]=y+10;
	xf=15;yf=40;
	de=0;en=0;enz=5;f=0;f0=0;exf=0;//f发射,f0存在 ,exf升级 
	fri=0;life=1;
	speed=1;zu=2;speedbuff=1;ta1=20;
	srand((unsigned)time(NULL));
	xt1=rand()%(x0-10)+7;yt1=rand()%(y0-10)+8;
	for(i=1;i<=zu;i++){xp[i]=rand()%(x0-10)+7;yp[i]=y0-2;}//不初始会消失
	char s;
	while(1)
	{
		if(de>=8){exf=1;}//升级 
        while(f==1){show();}
        show();
        s=getch();
        geng(s);
		buff1(s);
	}
}
void geng(char s)
{
	int i,j;
		if(s=='a'){y--;}
		if(s=='d'){y++;}
		if(s=='w'){x--;}
		if(s=='s'){x++;}
		if(s=='j'||fri==1){help(s);}
		if(s==' '){f=1;}
		if(s==0x1b){
		de=de+(life-1)*3;system("cls");printf("   得分:%d",de);printf("\n");printf("   GAME OVER");exit(0);}
}
void help(char s)
{
	int i,j,n,m;
	fri=1;
	if(s==75){yf--;}
	if(s==77){yf++;}
	if(s==72){xf--;}
	if(s==80){xf++;}
    if(s=='0'){ff=1;}
}
void buff1(char s)
{
	int i,j,n,m;
	if(de>=15){
	if(x==xt1&&y==yt1){tk1=15;}
	if(tk1!=0){geng(s);geng(s);tk1=tk1-1;}
	if(ta1==20){xt1=rand()%(x0-10)+7;yt1=rand()%(y0-10)+8;ta1=1;}
	ta1=ta1+1;}//加速buff刷新时间 
	speed=speed+1;//靶子移动速度 
	speedbuff=speedbuff+1;//生命buff刷新速度 
}
void buff2()
{
	
}
void gotoxy(int e,int f)
{
	HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
	COORD pos;
	pos.X=e;
	pos.Y=f;
	SetConsoleCursorPosition(handle,pos);
}
void show()
{
	int i,j,m,n,en,k,f1;f1=0;
//	system("cls");
	gotoxy(0,0);
	HideCursor();
		
	printf("生命:%d  ",life);printf("得分:%d",de);printf("\n");
	
	srand((unsigned)time(NULL));
	for(i=1;i<=enz;i++){//判断死亡(撞到边界会-5,撞到靶子会-1 ,被阻拦会-1) 
	    if(y==ybuff&&x==xbuff){life=life+1;speedbuff=20;break;}
		if(exf==0){
		    if((x1[i]==x&&y1[i]==y)||x==x0-1||x==0||y==y0-1||y==0||(xp[i]==x&&yp[i]==y)){
			life=life-1;}}
		else if(exf==1){
		    if((x1[i]==x&&y1[i]==y)||x==x0-1||x==0||y==y0-1||y==0||(xp[i]==x&&yp[i]==y)||
		    (x1[i]==x&&y1[i]==y-1)||x==x0-1||x==0||y-1==y0-1||y-1==0||(xp[i]==x&&yp[i]==y-1)||
		    (x1[i]==x&&y1[i]==y+1)||x==x0-1||x==0||y+1==y0-1||y+1==0||(xp[i]==x&&yp[i]==y+1)){
			life=life-1;}}
			}
	if(life<=0){
		system("cls");printf("   得分:%d",de);printf("\n");printf("   GAME OVER");exit(0);}
	
	
	if(speed==3)
	{
	for(i=1;i<=enz;i++){y1[i]=(y1[i-1]+(rand()%2))%(y0+4);}
	for(i=1;i<=enz;i++){x1[i]=(x1[i-1]+1)%(x0+4);}x1[0]=x1[0]+1;if(x1[0]==x0-1){y1[0]=rand()%(y0-8)+4;}
	if(x1[0]==x0-1){x1[0]=0;}
	if(enz==0){enz=5;x1[0]=0;}//靶子移动 
	speed=1;
	}
	if(speedbuff==20){
	xbuff=rand()%(x0-10)+7;ybuff=rand()%(y0-10)+8;
	speedbuff=1;
	}//生成生命buff 
	
	if(exf==0){
    for(i=1;i<=enz;i++){
	if(x1[i]==x2&&y1[i]==y2){
	for(j=i;j<=enz;j++){x1[j]=x1[j+1];y1[j]=y1[j+1];}
	x1[enz]=0;y1[enz]=0;enz=enz-1;de=de+1;}
	}}
	else if(exf==1){
	for(i=1;i<=enz;i++){
	if((x1[i]==x2&&y1[i]==y2-1)||(x1[i]==x2&&y1[i]==y2)||(x1[i]==x2&&y1[i]==y2+1)){
	for(j=i;j<=enz;j++){x1[j]=x1[j+1];y1[j]=y1[j+1];}
	x1[enz]=0;y1[enz]=0;enz=enz-1;de=de+1;}
	}}//是否命中 
	
	if(exf==0){zu=0;
    for(j=0;j<x0;j++){
        	for(i=0;i<y0;i++){
                for(k=1;k<=enz;k++){
				    if(y1[k]==i&&x1[k]==j){f1=1;break;}else {f1=0;}}//实现子弹和靶子共行
        		if(i==y&&j==x){
		            printf("A");
				}
				else if(i==y0-1||i==0||j==x0-1||j==0){
					printf("=");
				}
				else if(f==1&&i==y2&&j==x2){
					printf("|");x2=x2-1;
				}
				else if(f1==1){
					printf("+");
				}
				else {
					printf(" ");
				}
			}printf("\n");
		}
		}
		else if(exf==1){if(de==10){zu=2;}else if(de>=15){zu=5;}//升级后 
		for(j=0;j<x0;j++){
        	for(i=0;i<y0;i++){
                for(k=1;k<=enz;k++){
				    if(y1[k]==i&&x1[k]==j){f1=1;break;}else {f1=0;}}
                for(k=1;k<=zu;k++){
				    if(yp[k]==i&&xp[k]==j){fp=1;yp[k]=yp[k]-1;break;}else {fp=0;}}
        		if(i==y-1&&j==x){
		            printf("*A*");i=i+2;
				}
				else if(i==y0-1||i==0||j==x0-1||j==0){
					printf("=");
				}
				else if(f==1&&i==y2-1&&j==x2){
					printf("|||");x2=x2-1;i=i+2;
				}
				else if(f1==1){
					printf("+");f1=0;
				}
				else if(fp==1){
					printf("-");fp=0;
				}
				else if(i==ybuff&&j==xbuff){
					printf("@");
				}
				else if(de>=15&&i==yt1&&j==xt1){
					printf("?");
				}
				else {
					printf(" ");
				}
			}printf("\n");
		}
		}
		for(i=1;i<=zu;i++)if(yp[i]==0){xp[i]=rand()%(x0-10)+7;yp[i]=y0-2;}//阻拦恢复 
		
		if(x2==0){f=0;x2=x-1;y2=y;}
		else if(f==0){x2=x-1;y2=y;}//固定子弹发射位置 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值