При компиляции выдает ошибку: Ошибка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();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д