При компиляции выдает ошибку: Ошибка1 "GameCore.Form1.Dispose (bool)": не найден метод - C#

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

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

Есть код . При компиляции выдает ошибку:Ошибка1 "GameCore.Form1.Dispose(bool)": не найден метод, пригодный для переопределения.Как утранить? Код:1
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
 
namespace GameCore
{
    public abstract class ObjectDrawable
    {
        public SizeF Size { get; set; } //У всех объектов в игре есть размер
        public PointF Position { get; set; } //так же как и позиция
        public RectangleF Bounds { get { return new RectangleF(this.Position, this.Size); } } //зная позицию и размер можно получить границы объекта
        public Image Texture { get; set; } // ну и естественно какой же это игровой объект без его графического представления, текстуры
        public IContainer Parent { get; set; } //у кажого объекта есть родитель, собственно будет удобнее удалять самого себя из списка при разрушении/удалении объекта
//например Parent.Remove(this);
 
        protected ObjectDrawable(PointF position, SizeF size, Image texture, IContainer parent)
        {
            this.Position = position;
            this.Size = size;
            this.Texture = texture;
            this.Parent = parent;
        }
 
        //абстрактные методы, их будем реализовывать в каждом потомке посвоему, 
        //хотя метод Draw можно реализовать прямо здесь, вряд-ли он измениться
        public abstract void Update(float dt); //обновление состояния объекта
        public abstract void Draw(Graphics graphics); //отрисовка объекта
    }
 
    class Wall : ObjectDrawable
    {
        public Wall(PointF position, SizeF size, Image texture, IContainer parent) : base(position, size, texture, parent)
        {
        }
 
        public override void Update(float dt)
        {
            //Так как это стена то и обновлять здесь нечего, пускай себе стоит
        }
 
        public override void Draw(Graphics graphics)
        {
            graphics.DrawImage(this.Texture, Position); //А вот отрисовать текстурку в указаной точке не помешает
        }
    }
 
    class Tank : ObjectDrawable
    {
        //А вот и первый "живой" подвижный объект, а раз он движется, значит у него есть скорость
        PointF Velocity { get; set; } //По сути это вектор, но так как конкретно под ВинФорм нет реализации класса вектор, то обойдемся Float Point'ом
        public Tank(PointF position, SizeF size, Image texture, PointF velocity, IContainer parent) : base(position, size, texture, parent)
        {
            this.Velocity = velocity;
        }
 
        public override void Update(float dt)
        {
            //здесь обрабатываем нажатия клавишь и в зависимости от значений задаем нашу скорость
        }
 
        public override void Draw(Graphics graphics)
        {
            graphics.DrawImage(this.Texture, Position);
        }
    }
    //Невероятно полезный интерфейс, взмахом волшебной палочки позволяет добавить/удалить потомка, 
    //что бы потом можно было перерисовать все элементы одним махом
    //Реализуем этот интерфейс в классе который будет отвечать за отрисовку картинки
    public interface IContainer
    {
        List<ObjectDrawable> Childs { get; set; }
        void Register(ObjectDrawable child);
        void Register(IEnumerable<ObjectDrawable> childs); // перегрузка для множественного добавления
        void Remove(ObjectDrawable child);
    }
 
    class MainForm : Form, IContainer
    {
        public MainForm()
        {
            //здесь подписываемся на какойнибудь таймер или на Application.Idle в котором будет происходить сначало обновление, а потом отрисовка всех объектов
            Application.Idle += Application_Idle;
        }
 
        private DateTime prevTime = DateTime.Now; // перменная для подсчета дельты времени, короче потребуется для плавной анимации
        private void Application_Idle(object sender, EventArgs eventArgs)
        {
            DateTime currTime = DateTime.Now;
            TimeSpan delatTime = currTime - prevTime;
            float gameTime = (float)delatTime.TotalMilliseconds / 1000f;
            var graphics = Graphics.FromImage(pictureBox1.Image); //Пускай будет picturebox
 
            graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; 
            graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
            graphics.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceOver; 
            graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;

            foreach (ObjectDrawable child in this.Childs)
            {
                child.Update(gameTime);
            }
 
            foreach (ObjectDrawable child in this.Childs)
            {
                child.Draw(graphics);
            }
            pictureBox1.Invalidate(); //Прикажем перерисоваться
            prevTime = currTime;
        }
 
        public List<ObjectDrawable> Childs
        {
            get;
            set;
        }
 
        public void Register(ObjectDrawable child)
        {
            Childs.Add(child);
        }
 
        public void Register(IEnumerable<ObjectDrawable> childs)
        {
            Childs.AddRange(childs);
        }
 
        public void Remove(ObjectDrawable child)
        {
            Childs.Remove(child);
        }
    }
}

Решение задачи: «При компиляции выдает ошибку: Ошибка1 "GameCore.Form1.Dispose (bool)": не найден метод»

textual
Листинг программы
InitializeComponent();

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


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

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

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