.NET 4.x Как превратить пиксели в обекты? - C#

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

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

Hello World! Помогите мне пожалуйста, хочу создать игру-песочницу в стиле The Powder Toy (пиксельная песочница). И вот все бы хорошо, только я никак не могу придумать, как пиксели, которые мы рисуем, превратить в обьекты имеющие свои свойства.

Решение задачи: «.NET 4.x Как превратить пиксели в обекты?»

textual
Листинг программы
    /// <summary>
    /// Базовый класс частицы
    /// </summary>
    abstract class Particle
    {
        public PointF Location { get; set; }
        public PointF PrevLocation { get; set; }
        public PointF Velocity { get; set; }
        public PointF Force { get; set; }
        public float Mass { get; set; }
        public virtual Color Color { get; set; }
        public float AirFriction { get; set; }
 
        protected static Random OtherThreadRnd = new Random();
        protected static Random Rnd = new Random();
 
        public Particle()
        {
            Mass = 1;
            Color = Color.Orange;
            AirFriction = 0.95f;
            //сила тяжести
            Force = new PointF(0, Mass*9.8f);
        }
 
        /// <summary>
        /// Обновление сил, скоростей и координат
        /// </summary>
        public virtual void Update(Sandbox sb, float dt)
        {
            PrevLocation = Location;
 
            //приращение скорости
            Velocity = Velocity.Add(Force, dt / Mass);
            //трение о воздух
            Velocity = Velocity.Mult(AirFriction);
            //приращение координаты
            Location = Location.Add(Velocity, dt);
            //мы ударились о другую частицу?
            var cell = sb[(int)Location.X, (int)Location.Y];
            if (cell != null && cell != this)
            {
                //остаемся на месте, обрабатываем столкновение
                Location = PrevLocation;
                OnCollision(cell);
            }
        }
 
        /// <summary>
        /// Событие соударения
        /// </summary>
        public virtual void OnCollision(Particle other)
        {
            Velocity = new PointF(Rnd.Next(-4, 5), 0);
        }
    }

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


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

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

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