The snake head ```0``` does not move anywhere when ```Console.ReadKey()``` happens. Here is the full code:
``` using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;
namespace SimpleSnakeGame_ConsoleApp { internal class Program { public bool gameOver = true; public int width = 20; public int height = 20;
//HEAD POS public int x, y;
//FRUIT POS public int fruitX, fruitY;
public int score;
//bir kere basinca oraya gitmeni saglayacak enum enum eDirection { STOP = 0, LEFT, RIGHT, UP, DOWN }; eDirection dir; //enum class gibi çalisiyor enum'dan dir isimli bir object yarattik
static void Main(string[] args) {
Program oyun = new Program();
oyun.Setup();
oyun.Draw(); oyun.Input(); oyun.Logic();
Console.ReadLine(); }
//Setting Up the MAP public void Setup() { gameOver = false; string a = "!!!!! SIMPLE SNAKE GAME !!!!!"; Console.WriteLine(gameOver.ToString() + " " + a, "{0}" + "{1}"); dir = eDirection.STOP; x = width / 2; y = height / 2;
Random rnd = new Random(); fruitX = rnd.Next(1, 19); fruitY = rnd.Next(1, 19); score = 0;
} void Draw() { for (int j = 0; j < height; j++) { for (int i = 0; i < width; i++) { if (i == y && j == x) { Console.Write("0"); } else if (i == fruitY && j == fruitX) { Console.Write("F"); } else if (j > 0 && j < height - 1 && i > 0 && i < width - 1) { Console.Write(" "); } else { Console.Write("#"); }
}
Console.WriteLine(); }
Console.WriteLine(); } void Input() { ConsoleKey key;
// Key is available - read it key = Console.ReadKey(true).Key;
if (key == ConsoleKey.A) { dir = eDirection.LEFT; } else if (key == ConsoleKey.D) { dir = eDirection.RIGHT; } else if (key == ConsoleKey.W) { dir = eDirection.UP; } else if (key == ConsoleKey.S) { dir = eDirection.DOWN; } else if (key == ConsoleKey.X) { gameOver=true; } } void Logic() { switch (dir) { case eDirection.LEFT: x--; break; case eDirection.RIGHT: x++; break; case eDirection.UP: y--; break; case eDirection.DOWN: y++; break; default: break; } } }
} ```
I guess the problem is ```Console.ReadKey()``` function here:
``` void Input() { ConsoleKey key;
if (key == ConsoleKey.A) { dir = eDirection.LEFT; } else if (key == ConsoleKey.D) { dir = eDirection.RIGHT; } else if (key == ConsoleKey.W) { dir = eDirection.UP; } else if (key == ConsoleKey.S) { dir = eDirection.DOWN; } else if (key == ConsoleKey.X) { gameOver=true; } } ``` However I do not know what to replace ```Console.ReadKey()``` with and how to do it.