public static void DoMove(int a, int b) { int e = 0; int c = 0; int result = 0; foreach (var pair in monsters) { int r = pair.Value.x - a; int w = pair.Value.y - b; if (Math.Abs(r) < 4 && Math.Abs(w) < 4) { c = pair.Key; if (Math.Abs(r) == 1 && Math.Abs(w) == 0 || Math.Abs(r) == 0 && Math.Abs(w) == 1) { e = 1; } else { e = DirectionMove(player, pair.Value); } } } if (e == 3) { } if (e == 2) { int m; Monster monster2 = new Monster(monsters[c].level); monster2.x = monsters[c].x; monster2.y = monsters[c].y; m = MapPos(monster2.x, monster2.y); monsters.Remove(c); monsters.Add(m, monster2); int r = monster2.x - a; int w = monster2.y - b; if (Math.Abs(r) == 1 && Math.Abs(w) == 0 || Math.Abs(r) == 0 && Math.Abs(w) == 1) { string info; result = monster2.Attack(player, out info); below_text = info; if (result == -1) { GameOver(); } else if (result == 1) { bool ret = onMonsterDead(monster2); if (ret) { below_text += "怪物死亡。"; player.AddExp(monster2.level); monsters.Remove(m); } } } } if (e == 1) { string info; result = player.Attack2(monsters[c], out info); below_text = info; if (result == -1) { GameOver(); } else if (result == 1) { bool ret = onMonsterDead(monsters[c]); if (ret) { below_text += "怪物死亡。"; player.AddExp(monsters[c].level); monsters.Remove(c); } } } }//是否移动