Cześć, piszę sobie gierkę Snejka w C# żeby ogarnąć obiektówkę. W trakcie pracy postanowiłem, że napisze sobie klase MENU która będzie uniwersalna, że będę do niej podawał tablice dwuwymiarową w której będą zawarte opcje wyboru i wygeneruje mi ona pełne menu. Problem się pojawia, gdy mam switch który musi się sam wygenerować podczas działania programu, bo nie wiem ile będę miał opcji. Próbowałem z pętlą ale to nie działa. Czy jedyną opcją jest dziedziczenie i polimorfizm.. Pomóżcie bo nie mogę ruszyć dalej ;d
```using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SNAKE
{
/// <summary>
/// To create menu you need to create string [,] array to fill menu.
/// </summary>
/// <param name = "PossitionsListArray"> String Array with menu list</param>
class Menu
{
private double HowMuchFieldsInArray;
/// <summary>
/// 1 column is the first menu options and second is the develop of the first column option
/// </summary>
private string[,] MenuOptions;
public Menu(string[,] PossitionsListArray )
{
MenuOptions = PossitionsListArray;
HowMuchFieldsInArray = MenuOptions.Length;
HowMuchFieldsInArray = Math.Sqrt(HowMuchFieldsInArray);
}
public int CreateMenu ()
{
int position = 1;
int status = 0;
ConsoleKeyInfo cki;
do
{
switch (position)
{
case 1:
{
Console.WriteLine(MenuOptions[0, 0]);
Console.BackgroundColor = ConsoleColor.White;
Console.WriteLine(MenuOptions[1, 0]);
Console.BackgroundColor = ConsoleColor.Black;
Console.WriteLine(MenuOptions[2, 0]);
Console.WriteLine(MenuOptions[3, 0]);
break;
}
case 2:
{
Console.WriteLine(MenuOptions[0, 0]);
Console.WriteLine(MenuOptions[1, 0]);
Console.BackgroundColor = ConsoleColor.White;
Console.WriteLine(MenuOptions[2, 0]);
Console.BackgroundColor = ConsoleColor.Black;
Console.WriteLine(MenuOptions[3, 0]);
break;
}
case 3:
{
Console.WriteLine(MenuOptions[0, 0]);
Console.WriteLine(MenuOptions[1, 0]);
Console.WriteLine(MenuOptions[2, 0]);
Console.BackgroundColor = ConsoleColor.White;
Console.WriteLine(MenuOptions[3, 0]);
Console.BackgroundColor = ConsoleColor.Black;
break;
}
}
cki = Console.ReadKey();
switch (cki.Key)
{
case ConsoleKey.UpArrow:
{
if (position == 1)
{
break;
}
else
{
position--;
break;
}
}
case ConsoleKey.DownArrow:
{
if (position == 3)
{
break;
}
else
{
position++;
break;
}
}
case ConsoleKey.Enter:
{
status = position;
break;
}
};
Console.Clear();
} while (cki.Key != ConsoleKey.Enter);
return status; //zwracam status 1- new game / 2- opcje / 3- wyjście z gry
}
}
}
Z góry dziękuje za odpowiedzi.