Пример #1
0
        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;
            }
        }
Пример #2
0
        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;
            }
        }