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

📄 movebak.cpp

📁 2D即时战略游戏源码.仿红色警戒之类的。不过有点粗糙
💻 CPP
📖 第 1 页 / 共 5 页
字号:
#include"basic.h"	      


//extern myarmy *soldier;
//extern TABLE table[34][34];

POINT Howtogo(POINT nowHL,int dect,POINT objectplace,myarmy *soldier,TABLE table[34][34])
{POINT placetogo=nowHL; 

 int diret=DecideDect(nowHL,soldier->placetogo);
 if(soldier->around==0xff){soldier->bAround=TRUE;//ready to stop;
                 soldier->around=0;}
   soldier->around|=diret;
 
 
  
 
 switch(dect){
      
       case EAST:
	     
       case EASTSOUTH:
       
       
       
        
            
		  if(((soldier->placetogo.x-nowHL.x)<=1)
		      &&((soldier->placetogo.x-nowHL.x)>=-1)
		      &&((soldier->placetogo.y-nowHL.y)<=1)
		      &&((soldier->placetogo.y-nowHL.y)>=-1))
		   { 	if((table[soldier->nowHL.x][soldier->nowHL.y+1].whatin>=HILL)
		     &&(table[soldier->nowHL.x+1][soldier->nowHL.y].whatin>=HILL)
		      &&(table[soldier->nowHL.x+2][soldier->nowHL.y+1].whatin>=HILL)
		      &&(table[soldier->nowHL.x+1][soldier->nowHL.y+2].whatin>=HILL))
			      {placetogo.y=-99;
		    	    return(placetogo);
		      		}  
		   		   		   		   
		   else if(table[soldier->placetogo.x+1][soldier->placetogo.y+1].whatin<HILL)
		    {
		   if((diret==EASTSOUTH)
		      &&(table[nowHL.x+1+1][nowHL.y+1].whatin<HILL)
		      &&(table[nowHL.x+1][nowHL.y+1+1].whatin<HILL))
		      return(objectplace);
		   else if((diret==WESTSOUTH)
		      &&(table[nowHL.x-1+1][nowHL.y+1+1].whatin<HILL)
		      &&(table[nowHL.x+1][nowHL.y+1+1].whatin<HILL))
		      return(objectplace);
		   else if((diret==WESTNORTH)
		      &&(table[nowHL.x-1+1][nowHL.y+1].whatin<HILL)
		      &&(table[nowHL.x+1][nowHL.y-1+1].whatin<HILL))
		      return(objectplace); 
		   else if((diret==EASTNORTH)
		      &&(table[nowHL.x+1+1][nowHL.y+1].whatin<HILL)
		      &&(table[nowHL.x+1][nowHL.y-1+1].whatin<HILL))
		      return(objectplace);              
		   else if((diret==EAST)||(diret==SOUTH)
			   ||(diret==WEST)||(diret==NORTH))
			    return(objectplace);
	      
		    }
		  
		  
		   else  
		        {placetogo.x=-1;
				    return(placetogo);
		         }
		  
		    
	   } 
	   
	   
	    
	      
	    
		else if((soldier->maxl.x==0)&&(soldier->maxl.y==0))
			soldier->nowdir=RIGHT;           
			   
	  if(soldier->nowdir==RIGHT||soldier->nowdir==NULL)
		  {//if(IsMovingCar(2,1)==TRUE){placetogo.y=-99;return(placetogo);}   //for waiting
		  
		  if(table[nowHL.x+1+1][nowHL.y+1].whatin<HILL)
		      
		     { 
			      if((table[nowHL.x+1+1][nowHL.y+1+1].whatin<HILL)
				  &&(table[nowHL.x+1][nowHL.y+1+1].whatin<HILL))
				  {  if (((soldier->placetogo.x-nowHL.x)>=1)
				          &&((soldier->placetogo.y-nowHL.y)>1))
				  {}// return(objectplace);
				      
				     else if((table[nowHL.x+1+1][nowHL.y-1+1].whatin<HILL)
				           &&(table[nowHL.x+1][nowHL.y-1+1].whatin<HILL))
				        {if(((soldier->placetogo.y-nowHL.y)<-1)
				          &&(table[nowHL.x+1-1][nowHL.y-1+1].whatin>=HILL))
				            {  
			       
				              placetogo.y-=1;   
				              soldier->nowdir=UP;}
				             // return(placetogo);}
				         else if((soldier->placetogo.y-nowHL.y)>1)
				             {  
			       
				              placetogo.y+=1;   
				              soldier->nowdir=DOWN;}
				              //return(placetogo);}
				         else{}//  return(objectplace);
			            }   
			            
			         else { 
			       
				         placetogo.x+=1;   
				         soldier->nowdir=RIGHT;}
				         //return(placetogo);}   
			            
			            
			        }
			      
			       else { 
			       

				         placetogo.x+=1;   
				         soldier->nowdir=RIGHT;}
				       //  return(placetogo);}
			   }
			   
			   //if(IsMovingCar(1,2)==TRUE){placetogo.y=-99;return(placetogo);}   //for waiting       
		 else if(table[nowHL.x+1][nowHL.y+1+1].whatin<HILL)   
			  { 
				   placetogo.y+=1;
				   soldier->nowdir=DOWN;}
				   //return(placetogo);} 
				
			   //if(IsMovingCar(0,1)==TRUE){placetogo.y=-99;return(placetogo);}   //for waiting	   
		 else  if(table[nowHL.x-1+1][nowHL.y+1].whatin<HILL)        
				  { 
				   placetogo.x-=1;
				   soldier->nowdir=LEFT;}
				   //return(placetogo);}
			   
			   //if(IsMovingCar(1,0)==TRUE){placetogo.y=-99;return(placetogo);}   //for waiting	    
		 else if(table[nowHL.x+1][nowHL.y-1+1].whatin<HILL)        
				  { 
				   placetogo.y-=1;
				   soldier->nowdir=UP;}
				   //return(placetogo);} 
				   
		 else	if((table[soldier->nowHL.x][soldier->nowHL.y+1].whatin>=CAR)
		     ||(table[soldier->nowHL.x+1][soldier->nowHL.y].whatin>=CAR)
		      ||(table[soldier->nowHL.x+2][soldier->nowHL.y+1].whatin>=CAR)
		      ||(table[soldier->nowHL.x+1][soldier->nowHL.y+2].whatin>=CAR))
		      {placetogo.y=-99;
		        return(placetogo);
		      }     
			 else 	
			     {placetogo.x=-1;
				 return(placetogo);}
			  }       //for stop          
				   
	       
	       
	       
		else if(soldier->nowdir==DOWN)
		  {//if(IsMovingCar(1,2)==TRUE){placetogo.y=-99;return(placetogo);}   //for waiting
		 /* if(table[nowHL.x+1][nowHL.y+1+1].whatin<HILL)
		     
		     {
			      if((nowHL.y>=soldier->maxl.y)
				 &&(table[nowHL.x+1+1][nowHL.y+1+1].whatin<HILL)
				  &&(table[nowHL.x+1+1][nowHL.y+1].whatin<HILL))
				 { if(((soldier->placetogo.x-nowHL.x)>1)
				      
				      ||
				      ((table[nowHL.x+1][nowHL.y-1+1].whatin<HILL)
				      &&(table[nowHL.x+1+1][nowHL.y-1+1].whatin<HILL)))
				 
				  {}// return(objectplace);
				   else
				   { 
				    placetogo.x+=1;
			      
				   soldier->nowdir=RIGHT;
				  // return(placetogo);
				   
				   }
				 }
			     else { 
				    placetogo.y+=1;
			      
				   soldier->nowdir=UP|DOWN;
				 //return(placetogo);
				   }
			   }                 */
			             
			             
			             
			             
			    if(table[nowHL.x+1][nowHL.y+1+1].whatin<HILL)
		     
		     {
			      if((nowHL.y>=soldier->maxl.y)
				 &&(table[nowHL.x+1+1][nowHL.y+1+1].whatin<HILL)
				  &&(table[nowHL.x+1+1][nowHL.y+1].whatin<HILL))
				 {
				 if(((soldier->placetogo.y-nowHL.y)>1)
				    &&((soldier->placetogo.x-nowHL.x)>1) )
				     {}//return(objectplace);
				      
				 else if((table[nowHL.x+1+1][nowHL.y-1+1].whatin<HILL)
				      &&(table[nowHL.x+1][nowHL.y-1+1].whatin<HILL))
				     {if(((soldier->placetogo.y-nowHL.y)<-1)
				        &&((soldier->placetogo.x-nowHL.x)>1) )
				        {}//return(objectplace);
				      else if((soldier->placetogo.x-nowHL.x)<-1)
				        {   if(table[nowHL.x-1+1][nowHL.y+1].whatin>=HILL)
				        	{ 
				         	placetogo.y+=1;
			      
				         	soldier->nowdir=DOWN;
				         	//return(placetogo);
				         	}
				         	else { 
				         	placetogo.x+=1;
			      
				         	soldier->nowdir=RIGHT;
				         	//return(placetogo);
				         	}
				       }  
				      else {}
				         //return(objectplace);
				      
				      }
				   else
				   { 
				    placetogo.x+=1;
			      
				   soldier->nowdir=RIGHT;
				   //return(placetogo);
				   }
				  }
			      else { 
				    placetogo.y+=1;
			      
				 soldier->nowdir=(DOWN|UP);
				 //return(placetogo);
				 }
			     }   
			               
			             
			             
			             
			             
			             
			   //if(IsMovingCar(2,1)==TRUE){placetogo.y=-99;return(placetogo);}   //for waiting       
			else if(table[nowHL.x+1+1][nowHL.y+1].whatin<HILL)   
			  { 
				    placetogo.x+=1;
				   soldier->nowdir=RIGHT;
				   //return(placetogo);
				   } 
			   //if(IsMovingCar(0,1)==TRUE){placetogo.y=-99;return(placetogo);}   //for waiting	   
			else if(table[nowHL.x-1+1][nowHL.y+1].whatin<HILL)        
				  { 
				   placetogo.x-=1;
				   soldier->nowdir=LEFT;
				   //return(placetogo);
				   }
				   
			   //if(IsMovingCar(1,0)==TRUE){placetogo.y=-99;return(placetogo);}   //for waiting	   
			else if(table[nowHL.x+1][nowHL.y-1+1].whatin<HILL)        
				  { 
				   placetogo.y-=1;
				   soldier->nowdir=UP;
				  // return(placetogo);
				   } 
			else if((table[soldier->nowHL.x][soldier->nowHL.y+1].whatin>=CAR)
		     ||(table[soldier->nowHL.x+1][soldier->nowHL.y].whatin>=CAR)
		      ||(table[soldier->nowHL.x+2][soldier->nowHL.y+1].whatin>=CAR)
		      ||(table[soldier->nowHL.x+1][soldier->nowHL.y+2].whatin>=CAR))
		      {placetogo.y=-99;
		        return(placetogo);
		      }  	   
			   else 	   
			    {placetogo.x=-1;
				 return(placetogo);
				 }
			  }       //for stop             
			  
			  
			  
		 else  if(soldier->nowdir==LEFT)
		  {
		  
		  if(table[nowHL.x+1][nowHL.y+1+1].whatin<HILL)
		     { 
			      placetogo.y+=1;
			      soldier->nowdir=DOWN;
			    //  return(placetogo);
			     }  
		   else if(table[nowHL.x-1+1][nowHL.y+1].whatin<HILL)   
			  { 
				   placetogo.x-=1;
				   soldier->nowdir=LEFT;
				   //return(placetogo);
				   } 
		   else if(table[nowHL.x+1][nowHL.y-1+1].whatin<HILL)        
				  { 
				    placetogo.y-=1;
				   soldier->nowdir=UP;
				   //return(placetogo);
				   }
		  else if(table[nowHL.x+1+1][nowHL.y+1].whatin<HILL)        
				  { 
				   placetogo.x+=1;
				   soldier->nowdir=UP|RIGHT;
				   //return(placetogo);
				   } 
		   else if((table[soldier->nowHL.x][soldier->nowHL.y+1].whatin>=CAR)
		     ||(table[soldier->nowHL.x+1][soldier->nowHL.y].whatin>=CAR)
		      ||(table[soldier->nowHL.x+2][soldier->nowHL.y+1].whatin>=CAR)
		      ||(table[soldier->nowHL.x+1][soldier->nowHL.y+2].whatin>=CAR))
		      {placetogo.y=-99;
		        return(placetogo);
		      }  
		   else 
		      {placetogo.x=-1;
			 return(placetogo);
				 }
			  }       //for stop          
				   
		 
		
		else if(soldier->nowdir==UP)
		  {
		  if(table[nowHL.x-1+1][nowHL.y+1].whatin<HILL)
		     { 
			      placetogo.x-=1;
			      soldier->nowdir=LEFT;
			      //return(placetogo);
			      } 
		else if(table[nowHL.x+1][nowHL.y-1+1].whatin<HILL)   
			  { 
				   placetogo.y-=1;
				   soldier->nowdir=UP;
				   //return(placetogo);
				   } 
		  else if(table[nowHL.x+1+1][nowHL.y+1].whatin<HILL)        
				  { 
				   placetogo.x+=1;
				   soldier->nowdir=UP|RIGHT;
				   //return(placetogo);
				   }
		  else
				   if(table[nowHL.x+1][nowHL.y+1+1].whatin<HILL)        
				  { 
				   placetogo.y+=1;
				   soldier->nowdir=UP|DOWN;
				   //return(placetogo);
				   } 
		   else if((table[soldier->nowHL.x][soldier->nowHL.y+1].whatin>=CAR)
		     ||(table[soldier->nowHL.x+1][soldier->nowHL.y].whatin>=CAR)
		      ||(table[soldier->nowHL.x+2][soldier->nowHL.y+1].whatin>=CAR)
		      ||(table[soldier->nowHL.x+1][soldier->nowHL.y+2].whatin>=CAR))
		      {placetogo.y=-99;
		        return(placetogo);
		      }  
		   else 	
		      {placetogo.x=-1;
				return(placetogo);
				 
				 }
			  }       //for stop          
				   
		
		else if(soldier->nowdir==(UP|DOWN))
		  {
		  if(table[nowHL.x+1+1][nowHL.y+1].whatin<HILL)
		     {if((nowHL.y>=soldier->maxl.y)
			 &&(table[nowHL.x+1+1][nowHL.y+1+1].whatin<HILL)
			 &&(table[nowHL.x+1][nowHL.y+1+1].whatin<HILL))
			     {if(((soldier->placetogo.y-nowHL.y)>1)
			     
				      ||
				      ((table[nowHL.x+1][nowHL.y-1+1].whatin<HILL)
				      &&(table[nowHL.x+1+1][nowHL.y-1+1].whatin<HILL)))
				 
				   {}//return(objectplace);
				   else
				   { 
				    placetogo.x+=1;
			      
				   soldier->nowdir=RIGHT;
				   //return(placetogo); 
				   }
				 }
		     
		     else{
		       
			       placetogo.x+=1;
			      soldier->nowdir=UP|RIGHT;
			      //return(placetogo);
			      } 
			     }
			     
		  else  if(table[nowHL.x+1][nowHL.y+1+1].whatin<HILL)   
			  { 
				   placetogo.y+=1;
				   soldier->nowdir=UP|DOWN;
				//   return(placetogo);
				   } 
		  else if(table[nowHL.x-1+1][nowHL.y+1].whatin<HILL)        
				  { 
				   placetogo.x-=1;
				   soldier->nowdir=UP|LEFT;
				   //return(placetogo);
				   }
		  else if(table[nowHL.x+1][nowHL.y-1+1].whatin<HILL)        
				  { 
				   placetogo.y-=1;
				   soldier->nowdir=UP;
				   //return(placetogo);
				   } 
		  else if((table[soldier->nowHL.x][soldier->nowHL.y+1].whatin>=CAR)
		     ||(table[soldier->nowHL.x+1][soldier->nowHL.y].whatin>=CAR)
		      ||(table[soldier->nowHL.x+2][soldier->nowHL.y+1].whatin>=CAR)
		      ||(table[soldier->nowHL.x+1][soldier->nowHL.y+2].whatin>=CAR))
		      {placetogo.y=-99;

⌨️ 快捷键说明

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