Ejemplo n.º 1
0
            }//地图文件读取(关卡数-地图)

            public char[,] PosRead(string[] levelmap)
            {
                List <char[]> charmap = new List <char[]>();

                char[,] mappos = new char[26, 26];
                string[] array = new string[levelmap.Length - 2];
                for (int i = 0; i < array.Length; i++)
                {
                    array[i] = levelmap[i + 1];
                }

                int height = 0;

                foreach (var s in array)
                {
                    char[] a = new char[s.Length - 2];
                    for (int i = 0; i < a.Length; i++)
                    {
                        a[i] = s[i + 1];
                    }
                    charmap.Add(a); //char数组里面增加了一串横的坐标里的内容
                    int length = 0; //横坐标
                    for (length = 0; length < 24 && a.Length > length; length++)
                    {
                        mappos[height, length] = a[length];
                        if (a[length] == '#')
                        {
                            Wall wall = new Wall("□", 1001);
                            wall.SetPos(length, height);
                            Rogue.walls[MapPos(wall.x, wall.y)] = wall;
                        }
                        if (a[length] == 'o')
                        {
                            ElectricityDoor electricitydoor = new ElectricityDoor("×", 8);
                            electricitydoor.SetPos(length, height);
                            Rogue.electricitydoors[MapPos(electricitydoor.x, electricitydoor.y)] = electricitydoor;
                        }
                        if (a[length] == 'y')
                        {
                            Thorn thorn = new Thorn("◆", 5001);
                            thorn.SetPos(length, height);
                            Rogue.thorns[MapPos(thorn.x, thorn.y)] = thorn;
                        }
                        if (a[length] == 'w')
                        {
                            ElectricSwitch electricSwitch = new ElectricSwitch("※", 8);
                            electricSwitch.SetPos(length, height);
                            Rogue.electricSwitchs[MapPos(electricSwitch.x, electricSwitch.y)] = electricSwitch;
                        }
                        if (a[length] == 'u')
                        {
                            LongPole longPole = new LongPole("♂", 1);
                            longPole.SetPos(length, height);
                            Rogue.longpoles[MapPos(longPole.x, longPole.y)] = longPole;
                        }
                        if (a[length] == 'i')
                        {
                            Transfer transfer1 = new Transfer("¤", 1);
                            transfer1.SetPos(length, height);
                            Rogue.transfers[MapPos(transfer1.x, transfer1.y)] = transfer1;
                        }
                        if (a[length] == 'l')
                        {
                            Transfer transfer2 = new Transfer("§", 2);
                            transfer2.SetPos(length, height);
                            Rogue.transfers[MapPos(transfer2.x, transfer2.y)] = transfer2;
                        }
                        if (a[length] == ',')
                        {
                            Transfer transfer3 = new Transfer("◎", 1);
                            transfer3.SetPos(length, height);
                            Rogue.transfers[MapPos(transfer3.x, transfer3.y)] = transfer3;
                        }
                        if (a[length] == '.')
                        {
                            Transfer transfer4 = new Transfer("◎", 1);
                            transfer4.SetPos(length, height);
                            Rogue.transfers[MapPos(transfer4.x, transfer4.y)] = transfer4;
                        }
                        if (a[length] == 'p')
                        {
                            NPC oldman1 = new NPC("何炅", 1);
                            oldman1.SetPos(length, height);
                            Rogue.npcs[MapPos(oldman1.x, oldman1.y)] = oldman1;
                        }
                        if (a[length] == 'q')
                        {
                            NPC oldman2 = new NPC("恶魔", 2);
                            oldman2.SetPos(length, height);
                            Rogue.npcs[MapPos(oldman2.x, oldman2.y)] = oldman2;
                        }
                        if (a[length] == 'v')
                        {
                            NPC oldman3 = new NPC("撒贝宁", 3);
                            oldman3.SetPos(length, height);
                            Rogue.npcs[MapPos(oldman3.x, oldman3.y)] = oldman3;
                        }
                        if (a[length] == 'r')
                        {
                            Monster monster1 = new Monster("〓", 1, 5, 1);
                            monster1.SetPos(length, height);
                            Rogue.monsters[MapPos(monster1.x, monster1.y)] = monster1;
                        }
                        if (a[length] == '1')
                        {
                            Key key1 = new Key("Ⅰ", 1);
                            key1.SetPos(length, height);
                            Rogue.keys[MapPos(key1.x, key1.y)] = key1;
                        }
                        if (a[length] == '2')
                        {
                            Key key2 = new Key("Ⅱ", 2);
                            key2.SetPos(length, height);
                            Rogue.keys[MapPos(key2.x, key2.y)] = key2;
                        }
                        if (a[length] == '3')
                        {
                            Key key3 = new Key("Ⅲ", 3);
                            key3.SetPos(length, height);
                            Rogue.keys[MapPos(key3.x, key3.y)] = key3;
                        }
                        if (a[length] == '4')
                        {
                            Key key4 = new Key("Ⅳ", 4);
                            key4.SetPos(length, height);
                            Rogue.keys[MapPos(key4.x, key4.y)] = key4;
                        }
                        if (a[length] == '5')
                        {
                            Key key5 = new Key("Ⅴ", 5);
                            key5.SetPos(length, height);
                            Rogue.keys[MapPos(key5.x, key5.y)] = key5;
                        }
                        if (a[length] == '6')
                        {
                            Key key6 = new Key("Ⅵ", 6);
                            key6.SetPos(length, height);
                            Rogue.keys[MapPos(key6.x, key6.y)] = key6;
                        }
                        if (a[length] == '7')
                        {
                            Key key7 = new Key("Ⅶ", 7);
                            key7.SetPos(length, height);
                            Rogue.keys[MapPos(key7.x, key7.y)] = key7;
                        }
                        if (a[length] == 'a')
                        {
                            Door door1 = new Door("①", 1);
                            door1.SetPos(length, height);
                            Rogue.doors[MapPos(door1.x, door1.y)] = door1;
                        }
                        if (a[length] == 'b')
                        {
                            Door door2 = new Door("②", 2);
                            door2.SetPos(length, height);
                            Rogue.doors[MapPos(door2.x, door2.y)] = door2;
                        }
                        if (a[length] == 'c')
                        {
                            Door door3 = new Door("③", 3);
                            door3.SetPos(length, height);
                            Rogue.doors[MapPos(door3.x, door3.y)] = door3;
                        }
                        if (a[length] == 'd')
                        {
                            Door door4 = new Door("④", 4);
                            door4.SetPos(length, height);
                            Rogue.doors[MapPos(door4.x, door4.y)] = door4;
                        }
                        if (a[length] == 'e')
                        {
                            Door door5 = new Door("⑤", 5);
                            door5.SetPos(length, height);
                            Rogue.doors[MapPos(door5.x, door5.y)] = door5;
                        }
                        if (a[length] == 'f')
                        {
                            Door door6 = new Door("⑥", 6);
                            door6.SetPos(length, height);
                            Rogue.doors[MapPos(door6.x, door6.y)] = door6;
                        }
                        if (a[length] == 'g')
                        {
                            Door door7 = new Door("⑦", 7);
                            door7.SetPos(length, height);
                            Rogue.doors[MapPos(door7.x, door7.y)] = door7;
                        }
                        if (a[length] == 'h')
                        {
                            Monster monster10 = new Monster("★", 1, 5, 1);
                            monster10.SetPos(length, height);
                            Rogue.monsters[MapPos(monster10.x, monster10.y)] = monster10;
                        }
                        if (a[length] == 'j')
                        {
                            Monster monster11 = new Monster("☆", 1, 5, 1);
                            monster11.SetPos(length, height);
                            Rogue.monsters[MapPos(monster11.x, monster11.y)] = monster11;
                        }
                        if (a[length] == 'k')
                        {
                            Monster monster12 = new Monster("○", 1, 5, 1);
                            monster12.SetPos(length, height);
                            Rogue.monsters[MapPos(monster12.x, monster12.y)] = monster12;
                        }
                        if (a[length] == 't')
                        {
                            Monster monster13 = new Monster("●", 1, 5, 1);
                            monster13.SetPos(length, height);
                            Rogue.monsters[MapPos(monster13.x, monster13.y)] = monster13;
                        }
                        if (a[length] == 'm')
                        {
                            Monster monster14 = new Monster("◇", 1, 5, 1);
                            monster14.SetPos(length, height);
                            Rogue.monsters[MapPos(monster14.x, monster14.y)] = monster14;
                        }
                        if (a[length] == 'n')
                        {
                            Monster monster15 = new Monster("◆", 1, 5, 1);
                            monster15.SetPos(length, height);
                            Rogue.monsters[MapPos(monster15.x, monster15.y)] = monster15;
                        }
                    }
                    height++;
                }
                return(mappos);
            }
Ejemplo n.º 2
0
        // 返回值: 是否需要刷新
        static bool MovePlayer()
        {
            ConsoleKeyInfo key = Console.ReadKey(true);

            int next_x = player.x;
            int next_y = player.y;

            if (key.Key == ConsoleKey.UpArrow)
            {
                next_y -= 1;
            }
            else if (key.Key == ConsoleKey.DownArrow)
            {
                next_y += 1;
            }
            else if (key.Key == ConsoleKey.LeftArrow)
            {
                next_x -= 1;
            }
            else if (key.Key == ConsoleKey.RightArrow)
            {
                next_x += 1;
            }
            else
            {
                return(true);
            }
            if (next_x < 0 || next_x >= map_width - 2 || next_y < 0 || next_y >= map_height - 2)
            {
                return(true);
            }
            int next_pos = MapPos(next_x, next_y);

            if (keys.ContainsKey(next_pos))
            {
                Key key1 = keys[next_pos];
                player.bag.Add(key1);
                string s;
                if (key1.OnTalk(player, out s))
                {
                    npcs.Remove(next_pos);
                    object o = key1.AfterDisappear();
                    if (o is Monster)
                    {
                        Monster m = o as Monster;
                        monsters[MapPos(m.x, m.y)] = m;
                    }
                }
                below_text = s;
                keys.Remove(next_pos);
            }
            else if (doors.ContainsKey(next_pos))
            {
                Door   door = doors[next_pos];
                string s;
                if (door.OnTalk(player, out s))
                {
                    //npcs.Remove(next_pos);
                    object o = door.AfterDisappear();
                    if (o is Monster)
                    {
                        Monster m = o as Monster;
                        monsters[MapPos(m.x, m.y)] = m;
                    }
                }
                below_text = s;
                for (int n = 0; n < player.bag.Count; n++)
                {
                    if (player.bag[n].id == doors[next_pos].id)
                    {
                        player.bag.RemoveAt(n);
                        doors.Remove(next_pos);
                        break;
                    }
                }
                return(false);
            }
            if (electricSwitchs.ContainsKey(next_pos))
            {
                ElectricSwitch electricSwitch = electricSwitchs[next_pos];
                player.bags.Add(electricSwitch);
                string s;
                if (electricSwitch.OnTalk(player, out s))
                {
                    npcs.Remove(next_pos);
                    object o = electricSwitch.AfterDisappear();
                    if (o is Monster)
                    {
                        Monster m = o as Monster;
                        monsters[MapPos(m.x, m.y)] = m;
                    }
                }
                below_text = s;
                electricSwitchs.Remove(next_pos);
            }
            else if (electricitydoors.ContainsKey(next_pos))
            {
                ElectricityDoor electricitydoor = electricitydoors[next_pos];
                string          s;
                if (electricitydoor.OnTalk(player, out s))
                {
                    //npcs.Remove(next_pos);
                    object o = electricitydoor.AfterDisappear();
                    if (o is Monster)
                    {
                        Monster m = o as Monster;
                        monsters[MapPos(m.x, m.y)] = m;
                    }
                }
                below_text = s;
                for (int n = 0; n < player.bags.Count; n++)
                {
                    if (player.bags[n].id == electricitydoors[next_pos].id)
                    {
                        electricSwitchs.Remove(next_pos); electricitydoors.Remove(next_pos);
                    }
                }
                return(false);
            }
            if (walls.ContainsKey(next_pos))
            {
                return(false);
            }
            else if (monsters.ContainsKey(next_pos))
            {
                Monster monster = monsters[next_pos];
                string  s;
                if (monster.OnTalk(player, out s))
                {
                    //npcs.Remove(next_pos);
                    object o = monster.AfterDisappear();
                    if (o is Monster)
                    {
                        Monster m = o as Monster;
                        monsters[MapPos(m.x, m.y)] = m;
                    }
                }
                below_text = s;
                game_over  = true;
                return(false);
            }
            else if (longpoles.ContainsKey(next_pos))
            {
                LongPole longPole = longpoles[next_pos];
                player.bagss.Add(longPole);
                string s;
                if (longPole.OnTalk(player, out s))
                {
                    object o = longPole.AfterDisappear();
                    if (o is Monster)
                    {
                        Monster m = o as Monster;
                        monsters[MapPos(m.x, m.y)] = m;
                    }
                }
                longpoles.Remove(next_pos);
                below_text = s;
                return(false);
            }
            if (transfers.ContainsKey(next_pos))
            {
                Transfer transfer = transfers[next_pos];
                string   s;
                if (transfer.OnTalk(player, out s))
                {
                    object o = transfer.AfterDisappear();
                    if (o is Monster)
                    {
                        Monster m = o as Monster;
                        monsters[MapPos(m.x, m.y)] = m;
                    }
                }
                below_text = s;
                if (transfers[next_pos].name == "¤")
                {
                    player.x = 21;
                    player.y = 23;
                }
                else if (transfers[next_pos].name == "§")
                {
                    player.x = 12;
                    player.y = 17;
                }
                else if (transfers[next_pos].name == "◎")
                {
                    player.x = 3;
                    player.y = 0;
                }
                return(false);
            }
            else if (npcs.ContainsKey(next_pos))
            {
                Key newkey = new Key("1", 1);
                player.bag.Add(newkey);
                NPC    npc = npcs[next_pos];
                string s;
                if (npc.OnTalk(player, out s))
                {
                    npcs.Remove(next_pos);
                    object o = npc.AfterDisappear();
                    if (o is Monster)
                    {
                        Monster m = o as Monster;
                        monsters[MapPos(m.x, m.y)] = m;
                    }
                }
                below_text = s;
                //{ npcs.Remove(next_pos); }
                return(true);
            }
            else
            {
                int a, b;
                MapXY(next_pos, out a, out b);
                player.x = a;
                player.y = b;
            }

            return(true);
        }