Ejemplo n.º 1
0
        /*
         * Update snake linked list position record
         * No vaild move check!
         * No tail adding logic
         */
        public void move(GameDef.Action d)
        {
            int dh = 0, dv = 0;

            if (this.towards != (GameDef.Towards)d)
            {
                this.towards = (GameDef.Towards)d;
                return;
            }

            GameDef.Towards towards = 0;;
            switch (d)
            {
            case GameDef.Action.left:
                dh      = -1;
                towards = GameDef.Towards.Left;
                break;

            case GameDef.Action.Right:
                dh      = 1;
                towards = GameDef.Towards.Right;
                break;

            case GameDef.Action.Up:
                dv      = -1;
                towards = GameDef.Towards.Up;
                break;

            case GameDef.Action.Down:
                dv      = 1;
                towards = GameDef.Towards.Down;
                break;

            default:
                dv = 0;
                dh = 0;
                break;
            }

            this.towards = towards;

            LiftUpElement();

            if (!gsm.canMoveTo(this.pos_v + dv, this.pos_h + dh))
            {
                return;
            }

            this.pos_v += dv;
            this.pos_h += dh;
        }
Ejemplo n.º 2
0
        public void Update(GameDef.Action action)
        {
            switch (action)
            {
            case GameDef.Action.left:
            case GameDef.Action.Right:
            case GameDef.Action.Down:
            case GameDef.Action.Up:
                stage.player.move(action);
                break;

            case GameDef.Action.RESTART:
                Restart();
                return;

            case GameDef.Action.LiftUp:
                stage.player.LiftUpElement();
                break;

            case GameDef.Action.PutDown:
                stage.player.PushDownElement();
                break;

            case GameDef.Action.UseSkill:
                stage.player.UseSkill();
                break;

            case GameDef.Action.EatElement:
                stage.player.EatElement();
                break;

            default:
                break;
            }

            //
            gsm.stage.AutoSettleElement();
            // move first, then check the new head position eating
            BulletManager.checkAllBullet();
            System.Threading.Thread.Sleep(50);
        }