Exemple #1
0
        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);
                    }
                }
            }
        }//是否移动