Попытка сделать игру змея.Я использую Console.SetCursorPosition (int x, int y) для рисования частей тела («O»), 2D-массив для хранения «O» предыдущих местоположений и Console.KeyAvailable для обнаружения изменений направления.Когда нажата клавиша, которой нет в операторе switch, рисование останавливается на одну итерацию.Когда нажата клавиша, которая находится в операторе switch, консоль стирает самую старую часть тела.
Отладчик не показывает причину.Может кто-нибудь помочь мне понять, почему это происходит?
static void Main(string[] args)
{
Console.CursorVisible = false;
while (true)
{
ConsoleKey key = Console.ReadKey().Key;
switch (key)
{
case ConsoleKey.RightArrow:
direction = "RIGHT";
break;
case ConsoleKey.LeftArrow:
direction = "LEFT";
break;
case ConsoleKey.DownArrow:
direction = "DOWN";
break;
case ConsoleKey.UpArrow:
direction = "UP";
break;
}
breakOut = false;
switch (direction)
{
case "RIGHT":
for (int i = x; i <= 100; i++)
{
Iterator(i, y);
x = i;
if (breakOut)
break;
};
break;
case "LEFT":
break;
case "DOWN":
for (int i = y; i <= 100; i++)
{
Iterator(x, i);
y = i;
if (breakOut)
break;
}
break;
case "UP":
break;
}
}
}
static void Iterator(int x, int y)
{
Draw(x, y);
xSlot = x;
ySlot = y;
histPoints[slotCounter, (int)place.x] = xSlot;
histPoints[slotCounter, (int)place.y] = ySlot;
if (slotCounter >= length)
{
Erase(histPoints[slotCounter - length, (int)place.x], histPoints[slotCounter - length, (int)place.y]);
}
slotCounter += 1;
if (Console.KeyAvailable)
{
breakOut = true;
return;
}
Sleep();
}