/* * 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; }
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); }