ゲームの作り方を学んでいます。ユーザーが部屋の間を歩き回り、各部屋のオブジェクトを操作できる単純なテキストベースのゲームを作成しました。しかし、私のアプローチが悪いスパゲッティコードの山につながったような気がします。このようなゲームを構築するための良い方法が何かはわかりません。
私のアプローチは、各部屋のメソッドを備えた1つのクラスと、その部屋で実行できるすべてのオブジェクトと相互作用を持つことでした。たとえば、これは調査の方法です。
public static void Study()
{
bool studyexited = false;
while (!studyexited) {
string usercommand = Console.ReadLine ();
usercommand.ToLower ();
switch (usercommand) {
case "turn left":
GameEventText.StudyLeft ();
break;
case "turn right":
GameEventText.StudyRight ();
break;
case "go forward":
Notes firstsetofclues = new Notes ("First Note");
GameEventText.StudyFront ();
string firststudycommand = Console.ReadLine ();
firststudycommand.ToLower ();
if (firststudycommand == "read note") {
firstsetofclues.Firstnotereading ();
}
Console.WriteLine ("Picking up this note would prove valuable");
string secondstudycommand = Console.ReadLine ();
secondstudycommand.ToLower ();
if (secondstudycommand == "pick up note") {
if (MainClass.PlayerInventory.AddItem (firstsetofclues))
{
Console.WriteLine ("The note has been added to your inventory");
} else {
Console.WriteLine ("Your inventory is full");
}
MainClass.PlayerInventory.Inventorydisplay ();
}
}
}
}
これは拡張可能なアプローチだとは思いません。つまり、すべての部屋でこのような関数を実際に作成することはできません。何らかの方法でファイルを使用することは、私が現在行っている「ハードコーディング」を回避するための良い戦略になると思います。しかし、どうすればそれを達成できるのかわかりません。