0

クラスで C# を学習し、自由な時間に独学を試みています。

C# で初めてのゲームを作ろうとしています。これまでのところ、私のコードは次のとおりです。

 static void Main(string[] args)
    {

        string aValue;
        int Limit = 20;

        int[,] MOVEMENT = new int[20,20];           

        // MOVEMENT

        for (int i = 0; i < 20;)
            for (int j = 0; j < 20;)
            {
                Console.WriteLine("Which direction do you wish to move in?");
                aValue = Console.ReadLine();

                // MOVE NORTH
                if (aValue == "North" || aValue == "north")
                {
                    i = i + 1;

                    if (i >= 20)
                    {
                        Console.WriteLine("You cannot move any further in this direction!");
                        i = 20;
                    }
                }

                // MOVE SOUTH
                if (aValue == "South" || aValue == "south")
                {
                    i = i - 1;

                    if (i <= 0)
                    {
                        Console.WriteLine("You cannot move any further in this direction!");
                        i = 0;
                    }
                }

                // MOVE EAST
                if (aValue == "East" || aValue == "east")
                {
                    j = j + 1;

                    if (j >= 20)
                    {
                        Console.WriteLine("You cannot move any further in this direction!");
                        j = 20;
                    }
                }

                // MOVE WEST
                if (aValue == "West" || aValue == "west")
                {
                    j = j - 1;

                    if (j <= 0)
                    {
                        Console.WriteLine("You cannot move any further in this direction!");
                        j = 0;
                    }
                }


                // Display where the character is after each movement and list possible events 
                // in the area. 

                Console.WriteLine("You are now at {0},{1}", i, j);


            }
        Console.ReadLine();
}

ここで、配列の各要素をゲーム内の異なる場所に対応させたいと考えています。例: 0,0 はホームかもしれません。0,1 は村かもしれません。0,2 は砂漠かもしれません。1,5はレイクかもしれません。

各場所に独自の説明といくつかのイベント (If ステートメントなどで作成) が必要です。コードに場所を表示させる方法がわかりません (これは単に要素の値でしょうか?)、i と j も等しいことに依存します。これを機能させるにはswitchステートメントが最適だと言われましたが、それを試してみましたが、機能させることができません。

どんな助けでも感謝します。

4

2 に答える 2

1

なぜオブジェクトを使用しないのですか?

public class Location{
    public int Latitude   {get;set;}
    public int Longitude  {get;set;}
    public string Name{get;set;}
    public string Description  {get;set;}
}

LINQ を使用して名前と値を取得する

yourIEnumerableLocation.FirstOrDefault(x=> x.Latitude== yourXposition && x.Longitude == yourYposition)

または Gam Erix の説明に従って Dictionnary を使用する

于 2013-03-28T01:02:11.090 に答える
0

構造体と文字列 (または 2 つの文字列の構造体 - それぞれ説明と場所) の辞書を使用して、各場所に次のような情報を割り当てることをお勧めします。

using System;
public struct Point
{
   public int x, y;

   public Point(int p1, int p2)
   {
      x = p1;
      y = p2;
   }
}
public struct Information
{
   public string description, location;

   public Information(string desc, string loc)
   {
      description = desc;
      location = loc;
   }
}
var info = new Dictionary<Point, Information>();

info[Point(i,j)] = Information("This is our lovely lake","Lake");
于 2013-03-28T01:01:58.833 に答える