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

📄 unit1.cpp

📁 这是我买的:白领就业j2me:的代码
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
//--------------------------------------------------------
#define MapSpeed	2		//地图滚动速度
#define LFly		1		//飞行轨迹:直线
#define S1Fly		20		//飞行轨迹:S型,中心轴20像素
#define S2Fly		60		//飞行轨迹:S型,中心轴60像素
#define LSpeed		1		//速度:低速
#define MSpeed		2		//速度:中速
#define HSpeed		3		//速度:高速
#define myID		1		//自己飞机编号。注:敌方飞机为自动编号
#define eID01		2000	//类型一敌方的数量
#define eID02		500		//类型二敌方的数量
#define eID03		500		//类型三敌方的数量
#define DOWN		0		//方向:下
#define UP			1		//方向:上
#define YES			1		//是
#define NO			0		//否
#define GameSpeed	50		//游戏速度:微妙
#define myBulletSize	20	//自己子弹最大量
#define eBulletSize		10	//敌方子弹最大量
#define eSendBullet1	90	//定义敌方发射子弹的点,单位像素
#define eSendBullet2	50	//定义敌方发射子弹的点,单位像素
#define Offset			4	//定义偏移量,单位像素
//--------------------------------------------------------
typedef struct _Plane_
{
	int id;			// 类型编号
	int XPos;		// X坐标
	int YPos;		// Y坐标
	int ImgType;	// 图片类型
	int Flytype;	// 飞行轨迹
	int HP ;		// 生命值
	int BulletType;	// 子弹类型
	int Speed;		// 速度
	int Direct;		// 方向
	int ShowBullet;	// 是否显示子弹
}
PLANE;

typedef struct _bullettype_
{
	int id;		//Bullet
	int imgtype;//子弹图片
	int xpos;	//子弹X坐标
	int ypos;	//子弹Y坐标
	int number;	//数量
	int step;	//子弹距离
	int time;	//发射后的时间
	int speed;	//子弹速度
	int show;	//是否显示
}
BULLETTYPE;

typedef struct _bullet_
{
	int index;
	int x;
	int y;
	int id;
	int time;
}
BULLET;

typedef struct _ebullet_
{
	int index;
	int x;
	int y;
	int id;
	int time;
	int xObject;//目标坐标X
	int yObject;//目标坐标Y
}
EBULLET;
//--------------------------------------------------------
int Square(int a,int n);

int BulletSave[5]={0,0,0,0,0};
int eBulletSave[7]={0,0,0,0,0,0,0};
PLANE myPlane;					//自己飞机
PLANE e1Plane[eID01];			//敌方飞机一
PLANE e2Plane[eID02];			//敌方飞机二
PLANE e3Plane[eID03];			//敌方飞机三
BULLETTYPE	myBulletType[4];	//定义自己四中子弹类型.
BULLETTYPE	eBulletType[3];		//定义敌方三种子弹类型.
BULLET	myBullet[myBulletSize];	//自己子弹数组
EBULLET  eBullet[eBulletSize];	//敌方子弹数组
int AllPlane[10]={0,1,2,3,4,5,6,7,8,9};	//所有的飞机图片0:没有
int AllBullet[10]={1,2,2,2,2,2,2,2,2,2};//图片0:没有1:自己弹,2:敌弹
int AllMap[5]={1,2,3,4,5};				//所有地图图片
int Map[1000];
//--------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------



void __fastcall TForm1::Button1Click(TObject *Sender)
{
        //game init
	int i=0;

	//初始化子弹类型
	i=0;
	while(i<4)
	{
		myBulletType[i].id		=i;
		myBulletType[i].imgtype =AllBullet[0];
		myBulletType[i].number	=Square(2,i);		
		myBulletType[i].speed	=LSpeed;		//自己子弹速度。
		myBulletType[i].step	=5;				//一组子弹中的子弹间距,单位像素
		myBulletType[i].time	=3;				//两次发射的时间间隔,单位是像素
		myBulletType[i].xpos	=0;
		myBulletType[i].ypos	=0;		
		myBulletType[i].show	=YES;
		i++;
	}
	i=0;
	while(i<3)
	{
		eBulletType[i].id		=i+4;			//id:4,5,6
		eBulletType[i].imgtype	=AllBullet[1];
		eBulletType[i].number	=1;
		if(i==2)
			eBulletType[i].number =20;			//boss bullet type2.
		eBulletType[i].speed	=LSpeed;
		eBulletType[i].step		=10;
		eBulletType[i].time		=100;
		eBulletType[i].xpos		=0;
		eBulletType[i].ypos		=0;
		eBulletType[i].show		=YES;
		i++;
	}
	//初始化子弹数组
	i=0;
	while(i < myBulletSize)
	{
		myBullet[i].index	=0;
		myBullet[i].id		=myBulletType[0].id ;
		i++;
	}
	i=0;
	while(i < eBulletSize)
	{
		eBullet[i].index	=0;
		eBullet[i].id		=eBulletType[0].id ;
		i++;
	}
	//初始化地图
	i=0;
	while(i<1000)
	{
		if(i<20)
			Map[i]=AllMap[0];//Blue map
		if(i>=20 && i<60)
			Map[i]=AllMap[1];//Block
		if(i>=60)
			Map[i]=AllMap[2];//Red Map
		i++;
	}
	//初始化自己飞机
	myPlane.id			=myID;
	myPlane.BulletType	=myBulletType[3].id ;
	myPlane.ImgType		=AllPlane[1];
	myPlane.XPos		=5;
	myPlane.YPos		=40; 
	myPlane.Speed		=HSpeed;
	myPlane.ShowBullet	=YES;	
	//初始化敌方飞机
	i=0;
	while(i<eID01)
	{
		e1Plane[i].id			=i;
		e1Plane[i].BulletType	=eBulletType[0].id ;
		e1Plane[i].Flytype		=LFly;
		e1Plane[i].HP			=1;
		e1Plane[i].ImgType		=AllPlane[2];
		e1Plane[i].Speed		=LSpeed;
		e1Plane[i].XPos			=101+i*50;
		e1Plane[i].YPos			=(i%Offset)*10+20;
		e1Plane[i].ShowBullet	=YES;

		i++;
	}
	i=0;
	while(i<eID02)
	{
		e2Plane[i].id			=i;
		e2Plane[i].BulletType	=0;		//eBulletType[0].id ;
		e2Plane[i].Flytype		=S1Fly;
		e2Plane[i].HP			=1;
		e2Plane[i].ImgType		=AllPlane[2];
		e2Plane[i].Speed		=LSpeed;
		e2Plane[i].XPos			=101+i*80;
		e2Plane[i].YPos			=20;
		e2Plane[i].Direct		=DOWN;
		e2Plane[i].ShowBullet	=NO;

		i++;
	}
	i=0;
	while(i<eID03)
	{
		e3Plane[i].id			=i;
		e3Plane[i].BulletType	=0;	//eBulletType[0].id ;
		e3Plane[i].Flytype		=S2Fly;
		e3Plane[i].HP			=1;
		e3Plane[i].ImgType		=AllPlane[2];
		e3Plane[i].Speed		=LSpeed;
		e3Plane[i].XPos			=101+i*80;
		e3Plane[i].YPos			=60;
		e3Plane[i].Direct		=UP;
		e3Plane[i].ShowBullet	=NO;

		i++;
	}
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
        //void eSendBullet()
	int i=0,j=0,k=0,index[5]={0,0,0,0,0};

	
	//判断类型一飞机的子弹发射情况
	if(e1Plane[0].BulletType )
	{
		while(i < eID01)//分析出那个飞机在发射子弹
		{
		       //	if(e1Plane[i].XPos+e1Plane[i].id%Offset  == eSendBullet1|| e1Plane[i].XPos+e1Plane[i].id%Offset  == eSendBullet2)

                                {
				index[j++] =e1Plane[i].id;
                       i++;                                
                                break;
                                }

		}

		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		=e1Plane[0].BulletType ;
			eBullet[0].index	=1;
			eBullet[0].time		=0;
			eBullet[0].x		=e1Plane[index[k]].XPos ;
			eBullet[0].y		=e1Plane[index[k]].YPos ;
			eBullet[0].xObject	=myPlane.XPos ;
			eBullet[0].yObject	=myPlane.YPos ;
			k++;
		}


	}
	//判断类型二飞机的子弹发射情况
	if(e2Plane[0].BulletType )
	{
		i=0;j=0;k=0;
		while(i < eID02)//分析出那个飞机在发射子弹
		{
			if(e2Plane[i].XPos+e2Plane[i].id%Offset  == eSendBullet1
				|| e2Plane[i].XPos+e2Plane[i].id%Offset  == eSendBullet2)
				index[j++] =e2Plane[i].id;
			i++;
		}
		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		=e2Plane[0].BulletType ;
			eBullet[0].index	=1;
			eBullet[0].time		=0;
			eBullet[0].x		=e2Plane[index[k]].XPos ;
			eBullet[0].y		=e2Plane[index[k]].YPos ;
			eBullet[0].xObject	=myPlane.XPos ;
			eBullet[0].yObject	=myPlane.YPos ;
			k++;
		}
	}
	//判断类型三飞机的子弹发射情况
	if(e3Plane[0].BulletType )
	{
		i=0;j=0;k=0;
		while(i < eID03)//分析出那个飞机在发射子弹
		{
			if(e3Plane[i].XPos+e3Plane[i].id%Offset  == eSendBullet1
				|| e3Plane[i].XPos+e3Plane[i].id%Offset  == eSendBullet2)
				index[j++] =e3Plane[i].id;
			i++;
		}
		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 __fastcall TForm1::Button3Click(TObject *Sender)
{
        //void SendBullet()
        //*************
        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  ;
        //*************
	int i=myBulletSize;

	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 ;

        //*************
        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 __fastcall TForm1::Button4Click(TObject *Sender)
{
//void eBulletTrace()

	int i=0;
	while(i < eBulletSize)
	{
		if(eBullet[i].index !=0)
		{
			eBullet[i].x -=eBulletType[eBullet[i].id-4 ].speed ;
			eBullet[i].y +=eBulletType[eBullet[i].id-4 ].speed ;

			//if(eBulletType[eBullet[i].id-4].number ==1
			//	&& eBulletType[eBullet[i].id-4].show ==YES)
			ShowBullet(eBullet[i].x ,eBullet[i].y,eBulletType[eBullet[i].id-4 ].imgtype );
		}
		i++;
	}
}
//---------------------------------------------------------------------------

void TForm1::ShowBullet(int x,int y,int ImgBullet)
{

  Memo1->Lines->Add (" X: " + IntToStr(x)+" Y: " + IntToStr(y)+ " ImgBullet: " + IntToStr(ImgBullet));

}

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;
}

void __fastcall TForm1::Button5Click(TObject *Sender)
{
//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++;
	}
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button6Click(TObject *Sender)
{
  Memo1->Clear ();
        //GameInit();
    //    Button1->Click ();

        Button3->Click ();   //void SendBullet()
        Button5->Click ();   //void BulletTrace()
        Button2->Click ();   //void eSendBullet()
        Button4->Click ();   //void eBulletTrace()
    /*	PlaneTrace();
	BulletTrace();
	eSendBullet();
	eBulletTrace();*/
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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