public void move() { //到边界,不可以向前走了。 if ((pos.Y <= MyHelp.StartPos.Y && _dir == 0) || (pos.Y >= MyHelp.StartPos.Y + 240 && _dir == 1) || (pos.X <= MyHelp.StartPos.X && _dir == 2) || (pos.X >= MyHelp.StartPos.X + 320 && _dir == 3)) { _dir |= 0x10; return; } //正常移动。 if (MyHelp.isInPatten(pos)) { if (!canMove()) { _dir |= 0x10; return; } } if ((_dir & 0x10) != 0) { return; } pos.X += MyHelp.moveLen[_dir * 2] * _speed; pos.Y += MyHelp.moveLen[_dir * 2 + 1] * _speed; //是否到整Patten上,停步 if (MyHelp.isInPatten(pos)) { OurGame.map[MyHelp.Vector2ToPos(pos) - MyHelp.posLen[_dir]].canMove &= 0x7f; _dir |= 0x10; } }
private void updataMap() { switch (boxAndTree) { case 0: break; case 1: boxAndTreePos.X += MyHelp.moveLen[(_dir & 0xf) * 2] * 5; boxAndTreePos.Y += MyHelp.moveLen[(_dir & 0xf) * 2 + 1] * 5; if (MyHelp.isInPatten(boxAndTreePos)) { boxAndTree = 0; int nowpos = MyHelp.Vector2ToPos(boxAndTreePos); OurGame.map[nowpos].mapData = backData; OurGame.map[nowpos].canMove &= 0xBF; //去掉箱子标志 } break; case 0x10: if (MyHelp.isInPatten(pos)) { int nowpos = MyHelp.Vector2ToPos(boxAndTreePos); OurGame.map[nowpos].mapData = backData; boxAndTree = 0; } break; default: if (mapDelay == 0) { mapDelay = 2; ++boxAndTree; if ((boxAndTree & 1) != 0) { ++boxAndTreePos.X; } else { --boxAndTreePos.X; } if (boxAndTree >= 4) { boxAndTree = 0x10; } } else { --mapDelay; } break; } }