Ошибка ссылка на объект не указывает на экземпляр объекта - C# (191161)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте все, нуждаюсь в вашей помощи. Есть код, который почему то не работает, ошибка "ссылка на объект не указывает на экземпляр объекта. Строка 101". Помогите ее устранить, искал, гуглил, пытался исправить но результата никакого. Код :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
 
enum Colors
{
    Black = 0, Blue = 1, Green = 2, Cyan = 3, Red = 4, Magenta = 5, Brown = 6, LightGray = 7, DarkGray = 8,
    LightBlue = 9, LightGreen = 10, LightCyan = 11, LightRed = 12, LightMagenta = 13, Yellow = 14, White = 15
};
 
enum Control
{
    LEFT, UP, RIGHT, DOWN
};
 
public enum Type {
    KONEC, STENA,  PLUS, MOVE
};
 
class Program
{
    static void Main()
    {
        int key = 0, count = 0;
        bool Pause = false;
        Game g = new Game();
        Play play = new Play();
        play.skorostGame(g);
        play.STENA_2();
        Console.WriteLine("\n\n\n");
        bool pause = false;
    }
}
 
public class COORD
{
    public int X;
    public int Y;
    public COORD(int x, int y)
    {
        X = x; Y = y;
    }
}
 
public class Snake
{
    public COORD[] t;
    public int PCount;
    public void SetCursor(int X, int Y)
    {
        Console.SetCursorPosition(X, Y);
    }
 
    public void SetColor(ConsoleColor text, ConsoleColor background)
    {
        Console.ForegroundColor = text;
        Console.BackgroundColor = background;
    }
}
 
public class Game
{
    public Snake gaduka;
    public COORD jabloko;
    public int dx, dy;
    public int pause;
    public int nap;
}
 
public class Play : Game
{
    Random rand = new Random();
    Snake s = new Snake();
 
    public void PlusJabloko(Game g)
    {
        int i,x,y;
        int n = g.gaduka.PCount;
        do
        {
            x = rand.Next() % 56+3;
            y = rand.Next() % 19 + 3;
            for(i = 0; i < n; i++)
            {
                if(x == g.gaduka.t[i].X && y == g.gaduka.t[i].Y)
                    break;
            }
        } while(i < n);
        g.jabloko.X = x;
        g.jabloko.Y = y;
        Console.SetCursorPosition(g.jabloko.X, g.jabloko.Y);
        Console.ForegroundColor = ConsoleColor.Red;
        Console.Write(4);
    }
 
    public void skorostGame(Game g)
    {
        g.gaduka.PCount = 3;
        g.gaduka.t = new COORD [3];
        for(int i = 0; i < 3; i++)
        {
            g.gaduka.t[i].X = 20 + i;
            g.gaduka.t[i].Y = 20;
        
        }
        g.dx = 1;
        g.dy = 0;
        g.pause = 100;
        PlusJabloko(g);
    }
 
    public void STENA_2()
    {        
        s.SetColor(ConsoleColor.Cyan, ConsoleColor.Black);
        s.SetCursor(20, 0);
        Console.WriteLine("Snake Game");
        s.SetCursor(64, 2); Console.WriteLine("# Данные #");
        s.SetCursor(64, 3); Console.WriteLine("Яблок : 0");
        s.SetCursor(64, 4); Console.WriteLine("Длина : 3");
        s.SetCursor(64, 5); Console.WriteLine("Скорость : 0");
        s.SetCursor(64, 7); Console.WriteLine("# Управление #");
        s.SetCursor(64, 8); Console.WriteLine("ESC : Выход");
        s.SetCursor(64, 9); Console.WriteLine("P : Пауза");
        s.SetCursor(64, 10); Console.WriteLine("S : Старт");
        s.SetCursor(64, 11); Console.WriteLine("L : +Левел");
        s.SetCursor(64, 13); Console.Write(24); Console.WriteLine(":Вверх");
        s.SetCursor(64, 14); Console.Write(25); Console.WriteLine(":Вниз");
        s.SetCursor(64, 15); Console.Write(27); Console.WriteLine(":Влево");
        s.SetCursor(64, 16); Console.Write(26); Console.WriteLine(":Вправо");
        {
            s.SetColor(ConsoleColor.Magenta, ConsoleColor.Black);
 
            s.SetCursor(2, 2);
            int m = 0;
            for (m = 0; m < 60; m++)
            {
                Console.Write("*");
            }
        }
        {
            s.SetCursor(2, 24);
            int m = 0;
            for (m = 0; m < 60; m++)
            {
                Console.Write("*");
            }
        }
        {
            for (int i = 3; i <= 23; i++)
            {
                s.SetCursor(2, i); Console.WriteLine("*");
            }
        }
        {
            for (int i = 3; i <= 23; i++)
            {
                s.SetCursor(61, i); Console.WriteLine("*");
            }
        }
    }
 
    public int Move(Game g)
    {
        int n = g.gaduka.PCount;
        COORD head = g.gaduka.t[n - 1];
        COORD tail = g.gaduka.t[0];
        COORD next = null;
        next.X = head.X + g.dx;
        next.Y = head.Y + g.dy;
    
        if(next.X < 3 || next.Y < 3 || next.X > 60 || next.Y > 23)
            return (int)Type.STENA;
        
        if(n > 4)
        {
            for(int i = 0; i < n; i++)
                if(next.X == g.gaduka.t[i].X && next.Y == g.gaduka.t[i].Y)
                    return (int)Type.KONEC;
        }
    
        if(next.X == g.jabloko.X && next.Y == g.jabloko.Y)
        {
            COORD [] temp = new COORD[ ++n ];
            for(int i = 0; i < n; i++)
                temp[i] = g.gaduka.t[i];
            temp[n - 1] = next;
            Array.Clear(g.gaduka.t, 0, g.gaduka.t.Length);
            g.gaduka.t = temp;
 
            s.SetCursor(head.X, head.Y);
            Console.ForegroundColor = ConsoleColor.Green;
            Console.Write("*");
            s.SetCursor(next.X, next.Y);
            Console.ForegroundColor = ConsoleColor.Green;
            Console.Write(1);
            PlusJabloko(g);
            return (int)Type.PLUS;
        }
    
        for(int i = 0; i < n - 1; i++)
            g.gaduka.t[i] = g.gaduka.t[i + 1];
        g.gaduka.t[n - 1] = next;
        s.SetCursor(tail.X, tail.Y);
        Console.Write(" ");
 
        s.SetCursor(head.X, head.Y);
        Console.ForegroundColor = ConsoleColor.Green;
        Console.Write("*");
        s.SetCursor(next.X, next.Y);
        Console.ForegroundColor = ConsoleColor.White;
        Console.Write(1);
    
        return (int)Type.MOVE;
    }
 
}

Решение задачи: «Ошибка ссылка на объект не указывает на экземпляр объекта»

textual
Листинг программы
g.gaduka.t[i].X = 20 + i;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4 из 5
Похожие ответы