Simple Snake Game - Snake Head is not moving after ReadKey()
-
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 availab
-
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 availab
At a quick glance, your program reads a key but does not redraw the image. After a key is read (your Input() routine), you call your Logic() routine and then exit. I guess that what you wanted to do was to loop and redo the Draw(), Input(), Logic() steps until the end of the game. Suggestion: Encapsulate those steps in a
do ... while
loop.