I am trying to make a program that takes a character list and a list of selection moves and after making all the moves to display the resulted character selected.
The problem is that I am a beginner and my program displays System.String[] instead of the string representing the character. I tried to search in the Microsoft documentation but I haven't found anything related to my problem so I can understand why this is happening and what I'm doing wrong.
Thank you very much!
Below is my code:
static void Main(string[] args)
{
string[][] fighters = new string[][]
{
new string[] { "Ryu", "E.Honda", "Blanka", "Guile", "Balrog", "Vega" },
new string[] { "Ken", "Chun Li", "Zangief", "Dhalsim", "Sagat", "M.Bison" }
};
string[] moves = new string[] {"up", "left", "right", "left", "left"};
int[] position = new int[] {0, 0};
Console.WriteLine(StreetFighterSelection(fighters, position, moves));
Console.ReadLine();
}
static string[] StreetFighterSelection(string[][] fighters, int[] position, string[] moves)
{
string[] fighter = new string[] { fighters[position[0]][position[1]] };
for (int i = 0; i < moves.Length; i++)
{
if (moves[i] == "up" && position[0] == 1)
position[0] -= 1;
if (moves[i] == "down" && position[0] == 0)
position[0] += 1;
if (moves[i] == "right")
{
if (position[1] == fighters.GetLength(position[0]))
{
position[1] = 0;
}
else
{
position[1] += 1;
}
}
if (moves[i] == "left")
{
if (position[1] == 0)
{
position[1] = fighters.GetLength(position[0]);
}
else
{
position[1] -= 1;
}
}
else
i++;
}
return fighter;
}
When you pass an object to Console.WriteLine the ToString method of the object is executed. In this case, it shows it's a string[]. You should iterate over the string objects of the string array and display them.
foreach(var fighter in StreetFighterSelection(fighters, position, moves))
{
Console.WriteLine(fighter);
}
Or you could join the strings into a new string separated by comma:
Console.WriteLine(String.Join(", ", StreetFighterSelection(fighters, position, moves)));