【问题标题】:Beginner RPG map system初级RPG地图系统
【发布时间】:2018-10-14 10:42:06
【问题描述】:

不幸的是,我在制作 RPG 时遇到了障碍。

我已经制作了一张地图(在 .txt 文件中),我想向玩家显示,但我希望能够在游戏过程中更改地图并使用坐标来实现碰撞检测和传送门等。为此,我需要将我的地图存储在一个二维数组中。问题是我从来没有使用过二维数组(我还是个初学者),所以我不知道如何使用它们。

我的问题是:如何让我的程序一次读取一个字符的 .txt 文件,以及如何将这些字符存储在二维数组中? (数组大小为 32 x 128)

您可以在此处找到 .txt 文件:map1.txt

【问题讨论】:

    标签: c# arrays multidimensional-array ascii console-application


    【解决方案1】:

    试试下面的代码

    sing System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            const string FILENAME = @"c:\temp\test.txt";
            static void Main(string[] args)
            {
                StreamReader reader = new StreamReader(FILENAME);
                string line = "";
                List<string> data = new List<string>();
                while((line = reader.ReadLine()) != null)
                {
                    data.Add(line);
                }
    
                //read line 5 character 6
                char c5_6 = data[4][5];
            }
        }
    }
    

    【讨论】:

    • 这行得通。非常感谢!但是,即使我现在可以使用坐标,我确实需要先显示整个地图,我该怎么做?
    • 使用两个嵌套的for循环并使用Console.Write(Write);
    • 能否请你写一个示例代码(可能有一些 cmets),因为我不太明白(我对编码很陌生)
    • 哦,经过一番尝试(我不得不用谷歌搜索嵌套循环是什么,然后我尝试在我的代码中实现它)我让它工作了!非常感谢您的帮助!
    【解决方案2】:

    一次读取一个字符:

    using (StreamReader sr = new StreamReader(path)) 
    {
        while (sr.Peek() >= 0) 
        {
            Console.Write((char)sr.Read());
        }      
    }
    

    【讨论】:

    • 希望你能弄清楚如何设置 path 并用填充二维数组的代码替换 Console.Write
    • 这里有一个很好的示例可以帮助您处理二维数组:c-sharpcorner.com/blogs/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    相关资源
    最近更新 更多