我正在使用Visual Studio制作控制台应用程序,编码正在编写(C#)。该程序将成为一个基本的命令提示游戏。
所以,我正试图找到一种存储信息的方法。我对编码很新,所以我不知道我需要制作什么类型的文件。我只想要一种方法来存储名称和字符级别等内容,基本上是字符串和整数。
虽然,我不想使用“.txt”文件或类似的东西。我真的在寻找嵌入该计划的东西。
感谢您抽出宝贵时间阅读我的问题;我很乐意回答您可能遇到的任何其他问题,以便我能够实现我正在努力的目标。
答案 0 :(得分:2)
一种简单直接的方法是创建一个存储所有相关数据的可序列化类。这个类可以很容易地写入和读取例如一个Xml文件。
示例代码:
[Serializable]
public class GameData
{
public int Highscore;
/* Plus any other data you want to store */
}
public class Game
{
private const string gameDataLocation = "C:\\GameData.xml";
private GameData gameData;
/* Your game methods */
private void StoreData()
{
XmlSerializer serializer = new XmlSerializer(typeof(GameData));
StreamWriter writer = new StreamWriter(gameDataLocation);
serializer.Serialize(writer, gameData);
writer.Close();
}
private void LoadData()
{
XmlSerializer serializer = new XmlSerializer(typeof(GameData));
FileStream fileStream = new FileStream(gameDataLocation, FileMode.Open);
gameData = (GameData)serializer.Deserialize(fileStream);
fileStream.Close();
}
}
答案 1 :(得分:1)
我认为你首先应该更深入地思考你想要什么。 txt已过,请使用xml for separate levels, for characters。运行时序列化(storing objects in binary format)也可能有帮助
答案 2 :(得分:1)
如果您想存储游戏设置,可以使用app.config和自动生成的设置类。 如果你想存储最好的游戏玩家名字或其他东西,考虑你自己的格式是合理的
答案 3 :(得分:1)
答案 4 :(得分:1)
如果您计划包含多个播放器数据,我建议使用一些结构良好的存储,例如XML。谷歌那个谷歌LINQ转XML。
但是!最好从txt开始,熟悉C#,类,语法等。然后学习使用功能,基本上是基于此。基于您不熟悉/
的情况,这很难深入到抽象中答案 5 :(得分:1)
完全错过Florians的回答,但我发布了这个,因为你可能会从中学到一些东西,即使它基本上是相同的答案。
[Serializable]
public class Player
{
public string Name { get; set; }
public int Level { get; set; }
public Weapon Weapon { get; set; }
}
[Serializable]
public class Weapon
{
public string Name { get; set; }
public int MaxDamage { get; set; }
public int Range { get; set; }
public WeaponClass Class { get; set; }
public enum WeaponClass { Sword, Club, Bow }
}
然后你可以像这样使用这些
var filename = @"c:\temp\player.xml";
var sword = new Weapon { Name = "Dáinsleif", MaxDamage = 42, Range = 1, Class = Weapon.WeaponClass.Sword };
var player = new Player { Name = "Fafhrd", Level = 19, Weapon = sword };
var ser = new XmlSerializer(typeof(Player));
var file = File.OpenWrite(filename);
ser.Serialize(file, player);
file.Close();
player = null;
file = File.OpenRead(filename);
player = (Player)ser.Deserialize(file);
file.Close();
XML:
<?xml version="1.0"?>
<Player xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Name>Fafhrd</Name>
<Level>19</Level>
<Weapon>
<Name>Dáinsleif</Name>
<MaxDamage>42</MaxDamage>
<Range>1</Range>
<Class>Sword</Class>
</Weapon>
</Player>