2011-06-05 72 views
0

我一直在研究一个程序,随着游戏我和我的一些朋友一起玩,到目前为止我所做的所有事情都是使界面,我想要的界面提前帮助,因为我知道不需要它。我想制作一个GUI,从文本文件中读取一个字符的数据,用它填充文本框,并能够用两个框执行方程式,然后通过点击下一步从该文本文件移动到另一个字符。在数据读取 样品是: InterfaceC#从streamreader中读取多个配置文件,并给出输出

Hark <- new character 
    5 
    2 
    6 
    40.0 
    12.00 
    Caro <- new character 
    6 
    1 
    8 
    38.0 
    10.00 
    Ethan <- new character 
    4 
    5 
    42.0 
    15.00 

(以上是不实际的代码,它是如何贴) 因此,“名”到“字符NUM”会刚刚data.Readline填充() ;来自阅读器,但是HP和护甲需要一起计时才能获得比率(击中计算比例按钮),所有数据从名称到比例都将放在按钮下方的文本框中,下一个按钮将循环到下一个按钮字符。 任何帮助将不胜感激,在此先感谢。

+1

是什么问题? – BrokenGlass 2011-06-05 03:50:44

+0

只是有关如何做到这一点的任何建议。我知道如何从1个字符读取数据,但不能读取多个字符。 – Mark 2011-06-05 03:54:22

+0

只是一个念头:将数据存储在一个XML结构中,然后加载到一个XmlDocument中......可能会过度杀伤.... – 2011-06-05 04:11:12

回答

0

我可能会做一个File.ReadAllText(或类似的东西)成一个字符串。这样你释放文件句柄。然后,您可以遍历从文件中读取的字符串中的字符,并执行任何您想要的操作。

1

用XML序列化/反序列化来做它会容易得多。

下面是一个完整的演示。它创建两个字符的列表,将其序列化为XML,然后将其反序列化为新的列表。这至少会照顾到它的存储方面。

using System.Collections.Generic; 
using System.IO; 
using System.Xml.Serialization; 

namespace XmlDemo 
{ 

public class CharacterAttributes 
{ 
    public string Name { get; set; } 
    public int Strength { get; set; } 
    public int Dexterity { get; set; } 
} 
class Program 
{ 
    static void Main(string[] args) 
    { 
     var characters = new List<CharacterAttributes> 
          { 
           new CharacterAttributes 
            { 
             Name = "Throgdor the Destroyer", 
             Strength = 5, 
             Dexterity = 10 
            }, 
           new CharacterAttributes 
            { 
              Name = "Captain Awesome", 
              Strength = 100, 
              Dexterity = 9 
            } 
          }; 
     SerializeToXML(characters); 
     var charactersReloaded = DeserializeFromXML(@"C:\temp\characters.xml"); 

    } 

    static public void SerializeToXML(List<CharacterAttributes> characters) 
    { 
     var serializer = new XmlSerializer(typeof(List<CharacterAttributes>)); 
     var textWriter = new StreamWriter(@"C:\temp\characters.xml"); 
     using (textWriter) 
     { 
      serializer.Serialize(textWriter, characters); 
      textWriter.Close();     
     } 

    } 

    public static List<CharacterAttributes> DeserializeFromXML(string path) 
    { 
     var serializer = new XmlSerializer(typeof(List<CharacterAttributes>)); 
     var textReader = new StreamReader(path); 
     var deserializedCharacters = new List<CharacterAttributes>(); 
     using (textReader) 
     { 
      deserializedCharacters = serializer.Deserialize(textReader) as List<CharacterAttributes>;  
     } 
     return deserializedCharacters; 
    } 

} 
} 
相关问题