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

📄 main.c

📁 这是我买的:白领就业j2me:的代码
💻 C
📖 第 1 页 / 共 2 页
字号:
		while(k<j)
		{
			i=eBulletSize;
			while(i >= 0)
			{
				eBullet[i+1].id		=eBullet[i].id ;
				eBullet[i+1].index	=eBullet[i].index ;
				eBullet[i+1].time	=eBullet[i].time ;
				eBullet[i+1].x		=eBullet[i].x ;
				eBullet[i+1].y		=eBullet[i].y ;
				eBullet[i+1].xObject=eBullet[i].xObject  ;
				eBullet[i+1].yObject=eBullet[i].yObject  ;
				i--;
			}
			eBullet[0].id		=e3Plane[0].BulletType ;
			eBullet[0].index	=1;
			eBullet[0].time		=0;
			eBullet[0].x		=e3Plane[index[k]].XPos ;
			eBullet[0].y		=e3Plane[index[k]].YPos ;
			eBullet[0].xObject	=myPlane.XPos ;
			eBullet[0].yObject	=myPlane.YPos ;
			k++;
		}
	}*/
}
// **************************************************
// 我方发射子弹
// **************************************************
void SendBullet()
{
	int i=myBulletSize;
	/*eBulletSave[0]	=eBullet[0].id ;
	eBulletSave[1]	=eBullet[0].index ;
	eBulletSave[2]	=eBullet[0].time ;
	eBulletSave[3]	=eBullet[0].x ;
	eBulletSave[4]	=eBullet[0].y ;
	eBulletSave[5]  =eBullet[0].xObject  ;
	eBulletSave[6]	=eBullet[0].yObject  ;*/

	while(i >= 0)
	{
		i--;
		myBullet[i+1].id	=myBullet[i].id;
		myBullet[i+1].index	=myBullet[i].index ;
		myBullet[i+1].time	=myBullet[i].time ;
		myBullet[i+1].x		=myBullet[i].x ;
		myBullet[i+1].y		=myBullet[i].y ;
	}

	myBullet[0].id		=myPlane.BulletType ;
	myBullet[0].index	=1;
	myBullet[0].time	=0;
	myBullet[0].x		=myPlane.XPos+15 ;
	myBullet[0].y		=myPlane.YPos+3 ;	
//*************处理Struct结构体BUG的代码.
/*	eBullet[0].id           =eBulletSave[0]	;
	eBullet[0].index 		=eBulletSave[1] ;
	eBullet[0].time         =eBulletSave[2] ;
	eBullet[0].x            =eBulletSave[3] ;
	eBullet[0].y            =eBulletSave[4] ;
	eBullet[0].xObject      =eBulletSave[5] ;
	eBullet[0].yObject      =eBulletSave[6] ;*/
}
// **************************************************
// 勾画敌方子弹路径
// **************************************************
void eBulletTrace()
{
	int i=0;
	while(i < eBulletSize)
	{
		if(eBullet[i*7] !=0)
		{
			eBullet[i*7+1] -=eBulletType[eBullet[i*7+3]-4 ].speed ;
			eBullet[i*7+2] +=eBulletType[eBullet[i*7+3]-4 ].speed ;

			//if(eBulletType[eBullet[i*7+3]-4].number ==1
			//	&& eBulletType[eBullet[i*7+3]-4].show ==YES)
			ShowBullet(eBullet[i*7+1] ,eBullet[i*7+2],eBulletType[eBullet[i*7+3]-4 ].imgtype );
		}
		i++;
	}
}
// **************************************************
// 勾画我方子弹路径
// **************************************************
void BulletTrace()
{
	int i=0;
	//int temp[20]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
	while(i < myBulletSize)//显示我方子弹
	{
		if(myBullet[i].index !=0)//判断是否有子弹。
		{
			//更新发射后的时间
			if(myBullet[i].x < 101)
				myBullet[i].time ++;
			
			myBullet[i].x +=myBullet[i].time*2*myBulletType[myBullet[i].id].speed ;

			if(myBulletType[myBullet[i].id ].number==1 
				&& myBulletType[myBullet[i].id ].show ==YES)
					ShowBullet(myBullet[i].x ,myBullet[i].y,
							myBulletType[myBullet[i].id ].imgtype );			
			if(myBulletType[myBullet[i].id ].number==2
				&& myBulletType[myBullet[i].id ].show ==YES)
			{
				ShowBullet(myBullet[i].x ,myBullet[i].y-1,
							myBulletType[myBullet[i].id ].imgtype );
				ShowBullet(myBullet[i].x ,myBullet[i].y+1,
							myBulletType[myBullet[i].id ].imgtype );
			}
			if(myBulletType[myBullet[i].id ].number==4
					&& myBulletType[myBullet[i].id ].show ==YES)
			{
				ShowBullet(myBullet[i].x ,myBullet[i].y-3,
							myBulletType[myBullet[i].id ].imgtype );
				ShowBullet(myBullet[i].x ,myBullet[i].y-1,
							myBulletType[myBullet[i].id ].imgtype );
				ShowBullet(myBullet[i].x ,myBullet[i].y+1,
							myBulletType[myBullet[i].id ].imgtype );
				ShowBullet(myBullet[i].x ,myBullet[i].y+3,
							myBulletType[myBullet[i].id ].imgtype );
			}
			if(myBulletType[myBullet[i].id ].number==8
					&& myBulletType[myBullet[i].id ].show ==YES)
			{
				ShowBullet(myBullet[i].x ,myBullet[i].y-myBullet[i].time*4,
							myBulletType[myBullet[i].id ].imgtype );
				ShowBullet(myBullet[i].x ,myBullet[i].y-myBullet[i].time*3,
							myBulletType[myBullet[i].id ].imgtype );

				ShowBullet(myBullet[i].x ,myBullet[i].y-3,
							myBulletType[myBullet[i].id ].imgtype );
				ShowBullet(myBullet[i].x ,myBullet[i].y-1,
							myBulletType[myBullet[i].id ].imgtype );
				ShowBullet(myBullet[i].x ,myBullet[i].y+1,
							myBulletType[myBullet[i].id ].imgtype );
				ShowBullet(myBullet[i].x ,myBullet[i].y+3,
							myBulletType[myBullet[i].id ].imgtype );

				ShowBullet(myBullet[i].x ,myBullet[i].y+myBullet[i].time*3,
							myBulletType[myBullet[i].id ].imgtype );
				ShowBullet(myBullet[i].x ,myBullet[i].y+myBullet[i].time*4,
							myBulletType[myBullet[i].id ].imgtype );
			}
			//结构设计有问题:无法知道哪个BulletItem.show			
		}
		i++;
	}	
}
// **************************************************
// 求平方的函数
//	a			底数
//	n			指数
// **************************************************
int Square(int a,int n)
{
	int i=0,temp;
	temp=a;
	while(i<n)
	{
		a=a*temp;		
		i++;
	}
	a=a/temp;
	if(i==0)
		a=1;
	return a;
}
// **************************************************
// 延时函数,
//   nTime		:延时的时间,单位为微秒.
// **************************************************
void Sleep(int nTime)
{
	int Time;
	Time	= vGetTickCount() + nTime ;	
	while(vGetTickCount() < Time);
}
// **************************************************
// 显示地图
//	h			:地图滚动的坐标
// **************************************************
void ShowMap(int h)
{	int x;  
	x=h;    
	vClearScreen(vRGB(0,0,0)) ;		// Clear the "backbuffer" with black
	if(Map[(x/101)] == AllMap[0] )
		vDrawObject((h/101)*101-h,0,&BackGround01);
	if(Map[(x/101)] == AllMap[1] )
		vDrawObject((h/101)*101-h,0,&BackGround02);
	if(Map[(x/101)] == AllMap[2] )
		vDrawObject((h/101)*101-h,0,&BackGround03);	

	if(Map[(x/101)+1] == AllMap[0] )
		vDrawObject((h/101)*101+101-h,0,&BackGround01);
	if(Map[(x/101)+1] == AllMap[1] )
		vDrawObject((h/101)*101+101-h,0,&BackGround02);
	if(Map[(x/101)+1] == AllMap[2] )
		vDrawObject((h/101)*101+101-h,0,&BackGround03);	
}
// **************************************************
// 显示飞机
//	X			:X坐标
//	Y			:Y坐标
//	ImgPlane	:飞机图片索引
// **************************************************
void ShowPlane(int x,int y,int ImgPlane)
{
	if(ImgPlane==AllPlane[1])
		vDrawObject(x,y,&Plane01);
	if(ImgPlane==AllPlane[2])
		vDrawObject(x,y,&Enemy01);
		
}
// **************************************************
// 勾画我方和敌方飞机路径
// **************************************************
void PlaneTrace()
{
	int i=0;

	//if(id==myID)
		ShowPlane(myPlane.XPos ,myPlane.YPos ,myPlane.ImgType );
	//if(id==eID01)
	{
		while(i<eID01)
		{
			if(e1Plane[i].HP !=0)
			{
				if(e1Plane[i].Flytype ==LFly)
					e1Plane[i].XPos -=e1Plane[i].Speed ;
				ShowPlane(e1Plane[i].XPos ,e1Plane[i].YPos ,e1Plane[i].ImgType );
			}
			i++;
		}
		i=0;
		while(i<eID02)
		{
			if(e2Plane[i].HP !=0)
			{
				if(e2Plane[i].Flytype ==S1Fly)
				{
					e2Plane[i].XPos -=e2Plane[i].Speed ;
					
					if(e2Plane[i].YPos >e2Plane[i].Flytype +10)
						e2Plane[i].Direct =UP;
					if(e2Plane[i].YPos <e2Plane[i].Flytype -10)
						e2Plane[i].Direct =DOWN;
					if(e2Plane[i].Direct ==DOWN)
						e2Plane[i].YPos ++;
					if(e2Plane[i].Direct ==UP)
						e2Plane[i].YPos --;
				}
				ShowPlane(e2Plane[i].XPos ,e2Plane[i].YPos ,e2Plane[i].ImgType );
			}
			i++;
		}
		i=0;
		while(i<eID03)
		{
			if(e3Plane[i].HP !=0)
			{
				if(e3Plane[i].Flytype ==S2Fly)
				{
					e3Plane[i].XPos -=e3Plane[i].Speed ;
					
					if(e3Plane[i].YPos >e3Plane[i].Flytype +10)
						e3Plane[i].Direct =UP;
					if(e3Plane[i].YPos <e3Plane[i].Flytype -10)
						e3Plane[i].Direct =DOWN;
					if(e3Plane[i].Direct ==DOWN)
						e3Plane[i].YPos ++;
					if(e3Plane[i].Direct ==UP)
						e3Plane[i].YPos --;
				}
				ShowPlane(e3Plane[i].XPos ,e3Plane[i].YPos ,e3Plane[i].ImgType );
			}
			i++;
		}
	}
}
// **************************************************
// 游戏引擎
// **************************************************
int GameEngine(int here)
{
	int key=0;	
	
	key=vGetButtonData();
	ShowMap(here);
	if(key==KEY_UP)
	{	
		if(myPlane.YPos > 3)
			myPlane.YPos -=myPlane.Speed ;
		SendBullet();
	}
	if(key==KEY_LEFT)
	{	
		if(myPlane.XPos > 0)
			myPlane.XPos -=myPlane.Speed ;
		
	}
	if(key==KEY_RIGHT)
	{
		if(myPlane.XPos < 80)
			myPlane.XPos +=myPlane.Speed ;		
	}
	if(key==KEY_DOWN)
	{
		if(myPlane.YPos < 70)
			myPlane.YPos +=myPlane.Speed ;		
		SendBullet();
	}	
	if(key==0)
	{
		//SendBullet();
	}
	key=0;		
	
	ShowBoss(here);
	PlaneTrace();
	BulletTrace();
	//eSendBullet();
	//eBulletTrace();
	/*if(here%10==0)
	{
		SendBullet();
	}*/
		
	vFlipScreen(1);	
	 
	return 1;
}
// **************************************************
// 主函数.
// **************************************************
int main(void) 
{
	uint32_t  key=0;//键盘键值变量。
	int mapX=0,SpeedTemp=0;

	
    vClearScreen(vRGB(0,0,0)) ;		// Clear the "backbuffer" with black
    vSetClipWindow(0,0,101,80);
	
	vDrawObject(0,0,&Menu);	
	vFlipScreen(1);

	GameInit();

	while(!key)
    key = vGetButtonData();
  	while(vGetButtonData()==key);	//等待键盘输入...

    while(1)
	{
		Sleep(GameSpeed);
		if(!GameEngine(mapX))		
			break;
		//地图速度控制
		if(SpeedTemp >= MapSpeed)
		{
			mapX++;
			SpeedTemp=0;
		}
		SpeedTemp++;
	}
	vTerminateVMGP();                           // Terminate vmgp
	return 1;
}




⌨️ 快捷键说明

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