При компиляции выдает ошибку: Ошибка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();