照着书上打了一个C#的贪吃蛇,结果报错了

书上C#贪吃蛇代码好像有缺少的部分,但不知道在哪儿,有没有人能帮帮我😭(明天就要交了😱)

你当我是你的背后灵吗
你不放代码我怎么知道你的代码长什么样子


using System;
using System.Collections.Generic;

namespace SnakeGame
{
    class Program
    {
        // 设定地图大小
        const int Width = 20;
        const int Height = 10;

        // 蛇的节点列表
        static List<Node> Snake = new List<Node>();

        // 食物坐标
        static int FoodX, FoodY;

        // 记录蛇的移动方向
        static int dx = 1;
        static int dy = 0;

        static void Main(string[] args)
        {
            // 初始化蛇
            InitSnake();

            // 随机生成食物
            GenerateFood();

            while (true)
            {
                // 显示地图和蛇
                Console.Clear();
                PrintMap();

                // 移动蛇头
                MoveSnake();

                // 判断是否吃到食物
                if (Snake[0].x == FoodX && Snake[0].y == FoodY)
                {
                    // 确认为蛇头吃到食物,增加身体节点
                    GenerateFood();
                    Snake.Add(new Node(Snake[Snake.Count - 1].x, Snake[Snake.Count - 1].y));
                }

                // 判断是否碰到边界或蛇身
                if (Snake[0].x < 0 || Snake[0].x >= Width || Snake[0].y < 0 || Snake[0].y >= Height)
                {
                    Console.WriteLine("Game Over!");
                    break;
                }
                else
                {
                    for (int i = 1; i < Snake.Count; i++)
                    {
                        if (Snake[0].x == Snake[i].x && Snake[0].y == Snake[i].y)
                        {
                            Console.WriteLine("Game Over!");
                            return;
                        }
                    }
                }

                // 刷新画面
                System.Threading.Thread.Sleep(200);
            }
        }

        // 初始化蛇
        private static void InitSnake()
        {
            Snake.Add(new Node(0, 0));
            Snake.Add(new Node(1, 0));
            Snake.Add(new Node(2, 0));
        }

        // 生成食物
        private static void GenerateFood()
        {
            Random rand = new Random(Guid.NewGuid().GetHashCode());
            bool over = false;
            while (!over)
            {
                FoodX = rand.Next(Width);
                FoodY = rand.Next(Height);
                over = true;
                for (int i = 0; i < Snake.Count; i++)
                {
                    if (Snake[i].x == FoodX && Snake[i].y == FoodY)
                    {
                        over = false;
                        break;
                    }
                }
            }
        }

        // 移动蛇
        private static void MoveSnake()
        {
            for (int i = Snake.Count - 1; i > 0; i--)
            {
                Snake[i].x = Snake[i - 1].x;
                Snake[i].y = Snake[i - 1].y;
            }

            Snake[0].x += dx;
            Snake[0].y += dy;

            // 接收键盘输入,确定蛇头移动方向
            if (Console.KeyAvailable)
            {
                ConsoleKey key = Console.ReadKey(true).Key;
                if (key == ConsoleKey.LeftArrow && dx == 0)
                {
                    dx = -1;
                    dy = 0;
                }
                else if (key == ConsoleKey.RightArrow && dx == 0)
                {
                    dx = 1;
                    dy = 0;
                }
                else if (key == ConsoleKey.UpArrow && dy == 0)
                {
                    dx = 0;
                    dy = -1;
                }
                else if (key == ConsoleKey.DownArrow && dy == 0)
                {
                    dx = 0;
                    dy = 1;
                }
            }
        }

        // 显示地图和蛇
        private static void PrintMap()
        {
            for (int i = 0; i < Height; i++)
            {
                for (int j = 0; j < Width; j++)
                {
                    if (i == FoodY && j == FoodX)
                    {
                        Console.Write("★");
                    }
                    else if (i == Snake[0].y && j == Snake[0].x)
                    {
                        Console.Write("◆");
                    }
                    else
                    {
                        bool print = false;
                        for (int k = 1; k < Snake.Count; k++)
                        {
                            if (i == Snake[k].y && j == Snake[k].x)
                            {
                                Console.Write("◇");
                                print = true;
                                break;
                            }
                        }
                        if (!print)
                        {
                            Console.Write(" ");
                        }
                    }
                }
                Console.WriteLine();
            }
        }

        // 节点类,用来表示蛇的节点或食物坐标
        class Node
        {
            public int x;
            public int y;

            public Node(int x, int y)
            {
                this.x = x;
                this.y = y;
            }
        }
    }
}