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

📄 drawunit.cpp

📁 经典飞机游戏的源代码 dx实现
💻 CPP
字号:
#include "fj.h"
#include <ddraw.h>
int l=0,r=0,d=0,dd=0,power_x=100,power_y=0,pp=0,m_x=600,m_y=0,mm=0;
bool start_bar=TRUE;
extern LPDIRECTDRAWSURFACE4     g_pDDSBack; 
extern LPDIRECTDRAWSURFACE4     back;
extern LPDIRECTDRAWSURFACE4     Map;
extern bool play_dead,play_start,super,power,missile;
extern int play_num,super_num;
extern void GetRect(RECT* rect, long left, long top, long width, long height);

  void draw_play(int x,int y,int flag)
  {  
	  RECT rc;
	  if(flag==LEFT){l++;r=0;}
      if(flag==RIGHT){r++;l=0;}
      if(flag==STOP){r--;l--;}
	  if(l>8)l=8;
      if(r>8)r=8;
	  if(l<0)l=0;
      if(r<0)r=0;
      if(flag==STOP&&l>0)GetRect(&rc,(8-l)*54,70,54,70);
      if(flag==STOP&&r>0)GetRect(&rc,r*54,0,54,70);
	  if(flag==STOP&&l==0&&r==0)GetRect(&rc,0,0,54,70);
	  if(flag==LEFT)GetRect(&rc,(8-l)*54,70,54,70);
	  if(flag==RIGHT)GetRect(&rc,r*54,0,54,70);
	  if(super)
	  {
		  RECT rc1;
	      GetRect(&rc1,580,2,52,68);
	      if(dd==1)
		  {
			  back->BltFast(x,y,Map,&rc,DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT);  	  
			  dd=0;
		  }
		  else
		  {
			  back->BltFast(x,y,Map,&rc1,DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT);  	  
			  dd=1;
		  }
	  }
	  else
      back->BltFast(x,y,Map,&rc,DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT);  
	  
  }
   
   //自机开始时的出场画面

   void draw_play_start()
   {
     RECT L_rc,R_rc,rc;
	 int r=1;
	 GetRect(&L_rc,556,564,60,17);  
	 GetRect(&R_rc,556,583,60,17);  
     GetRect(&rc,580,2,52,68);   
	 l+=25;
	 super=TRUE;
	 if(l>310){
		 start_bar=false;
		 back->BltFast(344,364,Map,&rc,DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT);
	     play_start=false;
		 super_num=0;
	 	 l=0;
	 }
	 if(start_bar)back->BltFast(l,400,Map,&L_rc,DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT);  
     if(start_bar)back->BltFast(680-l,400,Map,&R_rc,DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT);  
	 
    }

   //自机爆炸画面
   void draw_play_dead(int x,int y)
   {
	   RECT rc;
	   GetRect(&rc,d*65,453,66,66);
	   super=true;
       d++;
	   if(d>7){
		   d=0;
		   play_dead=false;
		   play_num--;
		   play_start=TRUE;
           start_bar=TRUE;
		   return;
	   }
     back->BltFast(x,y,Map,&rc,DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT);  
   }

   void TREE::init(int cx,int cy,int ctype)
   {
   x=cx;
   y=0;
   type=ctype;
   }

   void TREE::draw()
   {
	   RECT rc;
	   y++;
	   if(y>530)y=0;
	   switch(type)
	   {
	   case 0:
		   GetRect(&rc,570,81,27,24);
		   break;
	   case 1:
		   GetRect(&rc,610,107,24,22);
		   break;
	   case 2:
		   GetRect(&rc,570,108,37,31);
		   break;
	   case 3:
		   GetRect(&rc,555,144,34,22);
		   break;
   	   }
   back->BltFast(x,y,Map,&rc,DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT);  

   }

   void draw_power()
   { 
	   RECT rc;

	   if(pp==0)
	   {
	     power_x+=3;
         if(power_x>490)pp=1;
	   }
	   else
	   {
	     power_x-=3;
		 if(power_x<100)pp=0;
	   }
	  
   power_y+=1;
   if(power_y>530)power=false;
   GetRect(&rc,612,502,21,12);
   back->BltFast(power_x,power_y,Map,&rc,DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT);  
   }

   void draw_missile()
   {
      RECT rc;

	   if(mm==0)
	   {
	     m_x-=3;
         if(m_x<200)mm=1;
	   }
	   else
	   {
	     m_x+=3;
		 if(m_x>600)mm=0;
	   }
	  
   m_y+=1;
   if(m_y>530)missile=false;
   GetRect(&rc,612,486,21,12);
   back->BltFast(m_x,m_y,Map,&rc,DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT);  
   }

   void MISSILE_L::init(int cx,int cy)
   {
     x=cx;
	 y=cy;
	 f=0;
	 die=false;
   }

   void MISSILE_L::draw()
   {
      RECT rc1,rc2;
	  if(die)return;
	  GetRect(&rc1,510,13,14,36);
      GetRect(&rc2,533,13,14,36);
	  y-=6;
      if(y<15){die=true;return;}
      if(f==0)
	  {
		  back->BltFast(x,y,Map,&rc1,DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT);  
		  f=1;
	  }
	  else
	  {
		  back->BltFast(x,y,Map,&rc2,DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT);  
		  f=0;
	  }
      
   }

   void MISSILE_R::init(int cx,int cy)
   {
     x=cx;
	 y=cy;
	 f=0;
	 die=false;
   }

   void MISSILE_R::draw()
   {
      RECT rc1,rc2;
	  if(die)return;
	  GetRect(&rc1,510,13,14,36);
      GetRect(&rc2,533,13,14,36);
      y-=6;
      if(y<15){die=true;return;}
      if(f==0)
	  {
		  back->BltFast(x,y,Map,&rc1,DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT);  
		  f=1;
	  }
	  else
	  {
		  back->BltFast(x,y,Map,&rc2,DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT);  
		  f=0;
	  }
      
   }

   void draw_missile_num(int num)
   {int i;
    RECT rc;
	if(num==0)return;
	GetRect(&rc,607,524,9,19);
	for(i=0;i<num;i++)
back->BltFast(50+i*12,500,Map,&rc,DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT);  
   }

⌨️ 快捷键说明

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