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

📄 move.cpp

📁 非常经典的小游戏代码, 推球的,for WindowsCE
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	 Temp_buf[carrier.last_y+moved_y*2][carrier.last_x+moved_x*2]=TERM1;
	}
    DeleteDC(hMemDC);
   }
}


void   CarrierShow(HDC hdc,int moved_x,int moved_y)
{
		HDC hMemDC;
	
		
	   if(PassJudge())
	   {	
		 pass_flag = 1;
		 Sleep(100);
		 DialogBox (hInst, MAKEINTRESOURCE(IDD_PASS), hwndMain,(DLGPROC)PassShow);
	   }
	   else
	   {
		hMemDC=CreateCompatibleDC(hdc);

		switch(Temp_buf[carrier.last_y ][carrier.last_x ])
       {
		 case WALL:
			  hStep=element[WALL];
              break;
	 	 case BOX:
		      hStep=element[BOX];
              break;
		 case TERM:
			  hStep=element[TERM];
              break;
         case TERM1:
			  hStep=element[TERM1];
              break;
         case SPACE:
         default:
              hStep=element[SPACE];
		      break;
      }

	if( Temp_buf[carrier.last_y][carrier.last_x] == 1)
		Temp_buf[carrier.last_y][carrier.last_x] = 0;
	
	SelectObject(hMemDC,hStep);
	BitBlt(hdc,(carrier.last_x)*CARR_WI,(carrier.last_y)*CARR_WI+MENUTOP,CARR_WI,CARR_WI,
	                  hMemDC,0,0,SRCCOPY);

	if(( moved_x==0)&&(moved_y==-1))
  {
    if(carrier.action_num_U==2)
       {
       hStep=element[BUG];
       SelectObject(hMemDC,hStep);
       BitBlt(hdc,(carrier.x)*CARR_WI,(carrier.y)*CARR_WI+MENUTOP,CARR_WI,CARR_WI,
	                  hMemDC,0,0,SRCCOPY);
   
	   carrier.direction=Up;
       carrier.action_num_U=1;
       }
       else if(carrier.action_num_U==1)
       {
   			  hStep=element[BUG];
			  SelectObject(hMemDC,hStep);    
		      BitBlt(hdc,(carrier.x)*CARR_WI,(carrier.y)*CARR_WI+MENUTOP,CARR_WI,CARR_WI,
	                  hMemDC,0,0,SRCCOPY);
      
			  carrier.direction=Up;
              carrier.action_num_U=2;
       }

  }

  if(( moved_x==0)&&(moved_y==+1))
   {

       if(carrier.action_num_D==2)
        {
           hStep=element[BUGDN];
		   SelectObject(hMemDC,hStep);  
		
	       BitBlt(hdc,(carrier.x)*CARR_WI,(carrier.y)*CARR_WI+MENUTOP,CARR_WI,CARR_WI,
	                  hMemDC,0,0,SRCCOPY);

           carrier.direction=Dn;
           carrier.action_num_D=1;
        }
       else if(carrier.action_num_D==1)
        {
 		   hStep=element[BUGDN];
		   SelectObject(hMemDC,hStep);
		   BitBlt(hdc,(carrier.x)*CARR_WI,(carrier.y)*CARR_WI+MENUTOP,CARR_WI,CARR_WI,
	                  hMemDC,0,0,SRCCOPY);

		   carrier.direction=Dn;
           carrier.action_num_D=2;

        }
   }
  if(( moved_x==1)&&(moved_y==0))
   {
      if(carrier.action_num_R==2)
       {
            hStep=element[BUGRH];
			SelectObject(hMemDC,hStep);
		    BitBlt(hdc,(carrier.x)*CARR_WI,(carrier.y)*CARR_WI+MENUTOP,CARR_WI,CARR_WI,
	                  hMemDC,0,0,SRCCOPY);
		
			carrier.direction=Rt;
            carrier.action_num_R=1;
        }
        else if(carrier.action_num_R==1)
        {
      		   hStep=element[BUGRH];
	    	   SelectObject(hMemDC,hStep);
	           BitBlt(hdc,(carrier.x)*CARR_WI,(carrier.y)*CARR_WI+MENUTOP,CARR_WI,CARR_WI,
	                  hMemDC,0,0,SRCCOPY);
	
			   carrier.direction=Rt;
               carrier.action_num_R=2;
        }
   }
	if(( moved_x==-1)&&(moved_y==0))
	{
       if(carrier.action_num_L==2)
       {      
	           hStep=element[BUGLF];
			   SelectObject(hMemDC,hStep);
	           BitBlt(hdc,(carrier.x)*CARR_WI,(carrier.y)*CARR_WI+MENUTOP,CARR_WI,CARR_WI,
	                  hMemDC,0,0,SRCCOPY);

			   carrier.direction=Lt;
               carrier.action_num_L=1;
       }
       else if(carrier.action_num_L==1)
       {
               hStep=element[BUGLF];
			   SelectObject(hMemDC,hStep);
		       BitBlt(hdc,(carrier.x)*CARR_WI,(carrier.y)*CARR_WI+MENUTOP,CARR_WI,CARR_WI,
	                  hMemDC,0,0,SRCCOPY);
              
			   carrier.direction=Lt;
               carrier.action_num_L=2;
       }
	}
	}
	DeleteDC(hMemDC);
}


int MoveUndo(HDC hdc,int undo_x, int undo_y)
{
    int moved_x,moved_y;
	
	undo_num = 1;    //Only undo one step;
	switch(carrier.direction)
	{
	case Dn:
		 moved_x=0; moved_y=1;
		 break;
	case Up:
		 moved_x=0; moved_y=-1;
		 break;
	case Lt:
		 moved_x=-1;moved_y=0;
		 break;
	case Rt:
		 moved_x=1; moved_y=0;
		 break;
	}
		 
  	if((Temp_buf[carrier.y+moved_y][carrier.x+moved_x]==SPACE)||
	   (Temp_buf[carrier.y+moved_y][carrier.x+moved_x]==TERM))
    {
	   CarrierShowUndo(hdc,moved_x,moved_y);
	}
	else
	{
	   if((Temp_buf[carrier.y+moved_y][carrier.x+moved_x]==BOX)||
	      (Temp_buf[carrier.y+moved_y][carrier.x+moved_x]==TERM1))
	    {
		  if(Temp_buf[carrier.y+moved_y][carrier.x+moved_x]==BOX)
		  {
			  Temp_buf[carrier.y+moved_y][carrier.x+moved_x]=SPACE;
			  if(Temp_buf[carrier.y][carrier.x]==TERM)
			  {
				  Temp_buf[carrier.y][carrier.x]=TERM1;   //Add for level4 bug.
			  }
			  else
				  Temp_buf[carrier.y][carrier.x]=BOX;
		  }

	      if(Temp_buf[carrier.y+moved_y][carrier.x+moved_x]==TERM1)
		  {
			  Temp_buf[carrier.y+moved_y][carrier.x+moved_x]=TERM;
			  if(Temp_buf[carrier.y][carrier.x]==SPACE)
					Temp_buf[carrier.y][carrier.x]=BOX;
			  if(Temp_buf[carrier.y][carrier.x]==TERM)
					Temp_buf[carrier.y][carrier.x]=TERM1;
		  }
		  BrickShowUndo(hdc,moved_x,moved_y);  
		  CarrierShowUndo(hdc,moved_x,moved_y);
	   }
   }
		   return 1;
}//MoveUnDo();

void BrickShowUndo(HDC hdc,int moved_x,int moved_y)
{
	HDC hMemDC;


	hMemDC=CreateCompatibleDC(hdc);
	if(Temp_buf[carrier.y+moved_y][carrier.x+moved_x]==SPACE)
    {
       hStep=element[SPACE];
	   SelectObject(hMemDC,hStep);
	   BitBlt(hdc,(carrier.x+moved_x)*CARR_WI,(carrier.y+moved_y)*CARR_WI+MENUTOP,CARR_WI,CARR_WI,
	                  hMemDC,0,0,SRCCOPY);
     }
	  
	if(Temp_buf[carrier.y][carrier.x]==BOX)
    {
       hStep=element[BOX];
	   SelectObject(hMemDC,hStep);
	   BitBlt(hdc,(carrier.x)*CARR_WI,(carrier.y)*CARR_WI+MENUTOP,CARR_WI,CARR_WI,
	                  hMemDC,0,0,SRCCOPY);
    } 
	 
	   if(Temp_buf[carrier.y+moved_y][carrier.x+moved_x]==TERM)
	   {
			hStep=element[TERM];
			SelectObject(hMemDC,hStep);
			BitBlt(hdc,(carrier.x+moved_x)*CARR_WI,(carrier.y+moved_y)*CARR_WI+MENUTOP,CARR_WI,CARR_WI,
	                  hMemDC,0,0,SRCCOPY);
	   }
	   if(Temp_buf[carrier.y][carrier.x]==SPACE)
	   {
		    hStep=element[BOX];
			SelectObject(hMemDC,hStep);
			BitBlt(hdc,(carrier.x)*CARR_WI,(carrier.y)*CARR_WI+MENUTOP,CARR_WI,CARR_WI,
	                  hMemDC,0,0,SRCCOPY);
	   }				
	   if(Temp_buf[carrier.y][carrier.x]==TERM1)
	   {
		    hStep=element[TERM1];
			SelectObject(hMemDC,hStep);
			BitBlt(hdc,(carrier.x)*CARR_WI,(carrier.y)*CARR_WI+MENUTOP,CARR_WI,CARR_WI,
	                  hMemDC,0,0,SRCCOPY);
	   }
	   DeleteDC(hMemDC);
}


void CarrierShowUndo(HDC hdc,int undo_x,int undo_y)
{
	HDC hMemDC;


	hMemDC=CreateCompatibleDC(hdc);

    hStep=element[BUG];
    SelectObject(hMemDC,hStep);
    BitBlt(hdc,(carrier.last_x)*CARR_WI,(carrier.last_y)*CARR_WI+MENUTOP,CARR_WI,CARR_WI,
                  hMemDC,0,0,SRCCOPY);
  
	   carrier.x = carrier.last_x;
	   carrier.y = carrier.last_y;

	   carrier.last_x = temp_x;
	   carrier.last_y = temp_y;

	   carrier.undo_flag = 0;

	DeleteDC(hMemDC);
}

int PassJudge()
{
	int i,j,num,num1;

	for(num = 0;num < 20;num+=2)
	{
		if(Temp_Term[num]!=0)
		{
			i = Temp_Term[num];
			j = Temp_Term[num+1];
			if(Temp_buf[i][j]!=TERM1)
			   return FALSE;	
		}
  	}

	for(num1 = 0;num1 < 10;num1+=2)
	{
		if(Temp_Term1[num1]!=0)
		{
			i = Temp_Term1[num1];
			j = Temp_Term1[num1+1];
			if(Temp_buf[i][j]!=TERM1)
			   return FALSE;	
		}
  	}
 	 return TRUE;
}

 LRESULT CALLBACK PassShow(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	int i;

	 switch(message)
	{
       case WM_COMMAND:
            switch (LOWORD(wParam))
            {
                case IDOK:
                     EndDialog(hwnd, TRUE);
					 nRoom++;
					 pass_flag=0;
					 init_flag=0;
					 InvalidateRect(hwndMain,NULL,TRUE); 
					 for(i=0;i<40;i++)
						Temp_Term[i]=0;
					 for(i=0;i<20;i++)
						Temp_Term1[i]=0;
				     return TRUE;
				case IDCANCLE:
					 init_flag=1; 
					 EndDialog(hwnd, TRUE);
			         return TRUE;
			}
		    break; 
	  
	   case WM_CLOSE:
	        EndDialog(hwnd,TRUE);
	     	return TRUE;	
	}
     return (FALSE);
} // PassShow().

⌨️ 快捷键说明

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