我有这个程序,它允许从它启动游戏,用户可以将自己的游戏/ exe添加到程序中,并指定名称和游戏的路径,以便它可以启动。到目前为止,这是我的代码,没有将游戏添加到程序的设置中:
using System.Windows.Forms;
namespace Games_Manager
{
public class game
{
public string Name;
public string Path;
public game(string name, string path)
{
Name = name;
Path = path;
}
}
public partial class main_Win : Form
{
public main_Win()
{
InitializeComponent();
}
public void addGame(string gameName, string gamePath)
{
//Code to add a game to a list, how can I store the game lists
//so the user doesn't have to re-enter games every time
//the application runs and rather read the list every time.
}
}
}
我想创建一个函数,当被调用时,通过输入的名称创建一个新的游戏对象并存储游戏的名称和路径。我该如何做到这一点?
答案 0 :(得分:3)
问题。你的游戏存储在哪里?如果您想将它们存储在表单中,请尝试以下操作:
using System.Windows.Forms;
namespace Games_Manager
{
public class Game
{
public string Name;
public string Path;
public Game(string name, string path)
{
Name = name;
Path = path;
}
}
public partial class MainWin : Form
{
List<Game> games; //here is where the games will be stored
public MainWin()
{
InitializeComponent();
games = new List<Game>(); //here the list is initialized
}
public void AddGame(string gameName, string gamePath)
{
games.Add(new Game(gameName, gamePath)); //add a game to the list
}
}
}
PS。我对标准C#
naming convention使用了类和变量名。适用于类和变量的小写。
以下是一些非常基本的代码,用于在Xml
文件中保留游戏列表。要求Game
具有无参数构造函数,并且它具有名称,路径等的读/写属性。
private bool ReadGamesList(string path)
{
if (File.Exists(path))
{
XmlSerializer xml=new XmlSerializer(typeof(Game[]));
var fs=File.Open(path, FileMode.OpenOrCreate, FileAccess.Read);
games=new List<Game>((Game[])xml.Deserialize(fs));
fs.Close();
return true;
}
return false;
}
private bool SaveGamesList(string path)
{
if (games.Count==0) return false;
XmlSerializer xml=new XmlSerializer(typeof(Game[]));
var fs=File.Open(path, FileMode.Create, FileAccess.Write);
xml.Serialize(fs, games.ToArray());
fs.Close();
return true;
}
答案 1 :(得分:0)
可能是我误解了你。 您可以使用构造函数创建游戏,例如:
var g = new game("packman", "c:\folder\packman.exe");
如果你想拥有一个工厂方法,你可以将它设为静态,并从那里调用一个构造函数:
var g = game.Create("packman", "c:\folder\packman.exe");