推箱子简单实现(objective-c)
推箱子大家都知道吧,在cocos2d上简单实现了一个!
//后退函数-(void) GoBack{ //后退专用 int x_1;//人的前面(箱子) int y_1; int x_2;//人的后面 int y_2; CGPoint p=[self outStack]; int na=p.x; if (na==0) { return ; } switch (na) { case 1: CCLOG(@"下"); // x_1=x+1; y_1=y; x_2=x-1; y_2=y; [self MoveBack:p.y x1:x_1 y1:y_1 x2:x_2 y2:y_2]; break; case 2: CCLOG(@"上"); // x_1=x-1; y_1=y; x_2=x+1; y_2=y; [self MoveBack:p.y x1:x_1 y1:y_1 x2:x_2 y2:y_2]; break; case 3: CCLOG(@"右"); // x_1=x; y_1=y-1; x_2=x; y_2=y+1; [self MoveBack:p.y x1:x_1 y1:y_1 x2:x_2 y2:y_2]; break; case 4: CCLOG(@"左"); // x_1=x; y_1=y+1; x_2=x; y_2=y-1; [self MoveBack:p.y x1:x_1 y1:y_1 x2:x_2 y2:y_2]; break; default: break; }}-(void) MoveBack:(int)box x1:(int)x1 y1:(int)y1 x2:(int)x2 y2:(int)y2{ Map_State P1,P2; P1=P2=None; //p1:前面,箱子,p2:后面 if ([self IsInGameArea:x1 col:y1]) { P1=myArrays[x1][y1]; } if ([self IsInGameArea:x2 col:y2]) { P2=myArrays[x2][y2]; } //后面是路 if (P2==Passageway) { // myArrays[x2][y2]=Worker; [self changeSpritePic:x2 yy:y2 type:Worker]; }//后面是目的地 if (P2==Destination) { // myArrays[x2][y2]=WorkerInDest; [self changeSpritePic:x2 yy:y2 type:WorkerInDest]; } [self MoveMan:x yy:y]; //前面是箱子并且当时走这一步时推了箱子 if (P1==Box&&box==1) { // if (myArrays[x][y]==Destination) { myArrays[x][y]=RedBox; [self changeSpritePic:x yy:y type:RedBox]; } if (myArrays[x][y]==Passageway) { myArrays[x][y]=Box; [self changeSpritePic:x yy:y type:Box]; } myArrays[x1][y1]=Passageway; [self changeSpritePic:x1 yy:y1 type:Passageway]; }//前面是目的地的箱子并且当时走这一步时推了箱子 if (P1==RedBox&&box==1) { // if (myArrays[x][y]==Destination) { myArrays[x][y]=RedBox; [self changeSpritePic:x yy:y type:RedBox]; } if (myArrays[x][y]==Passageway) { myArrays[x][y]=Box; [self changeSpritePic:x yy:y type:Box]; } myArrays[x1][y1]=Destination; [self changeSpritePic:x1 yy:y1 type:Destination]; } x=x2; y=y2; }好了,就这么多,回头我会再贴一个,C#写的地图编辑器!欢迎交流!