.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);
}
}