|
|
@@ -31,19 +31,21 @@ namespace D13._3
|
|
|
int? last = null;
|
|
|
do
|
|
|
{
|
|
|
- last = lastCart(carts);
|
|
|
-
|
|
|
Bitmap image = new Bitmap(width, height);
|
|
|
foreach (var t in track) image.SetPixel(t.Key.x, t.Key.y, Color.White);
|
|
|
foreach (var t in carts) image.SetPixel(t.x, t.y, t.c);
|
|
|
|
|
|
writer.WriteVideoFrame(image);
|
|
|
|
|
|
- carts.Sort((a, b) => a.x.CompareTo(b.x));
|
|
|
- carts.Sort((a, b) => a.y.CompareTo(b.y));
|
|
|
+ carts.Sort((a, b) =>
|
|
|
+ {
|
|
|
+ if (a.y == b.y) return a.x - b.x;
|
|
|
+ return a.y - b.y;
|
|
|
+ });
|
|
|
+
|
|
|
+ last = lastCart(carts);
|
|
|
+ if (last == null) tick(track, carts);
|
|
|
|
|
|
- tick(track, carts);
|
|
|
-
|
|
|
} while (last == null) ;
|
|
|
|
|
|
writer.Close();
|
|
|
@@ -137,13 +139,14 @@ namespace D13._3
|
|
|
|
|
|
static (int x, int y, int vx, int vy, int t, Color c) getCart(char c, int x, int y)
|
|
|
{
|
|
|
- var r = new Random();
|
|
|
+ var r = new Random(DateTime.Now.Millisecond);
|
|
|
+ var cl = Color.FromArgb(255, r.Next(0, 255), r.Next(0, 255), r.Next(0, 255));
|
|
|
switch (c)
|
|
|
{
|
|
|
- case '>': return (x, y, +1, +0, 0, Color.FromArgb(r.Next(0, 255), r.Next(0, 255), r.Next(0, 255)));
|
|
|
- case '<': return (x, y, -1, +0, 0, Color.FromArgb(r.Next(0, 255), r.Next(0, 255), r.Next(0, 255)));
|
|
|
- case '^': return (x, y, +0, -1, 0, Color.FromArgb(r.Next(0, 255), r.Next(0, 255), r.Next(0, 255)));
|
|
|
- case 'v': return (x, y, +0, +1, 0, Color.FromArgb(r.Next(0, 255), r.Next(0, 255), r.Next(0, 255)));
|
|
|
+ case '>': return (x, y, +1, +0, 0, cl);
|
|
|
+ case '<': return (x, y, -1, +0, 0, cl);
|
|
|
+ case '^': return (x, y, +0, -1, 0, cl);
|
|
|
+ case 'v': return (x, y, +0, +1, 0, cl);
|
|
|
}
|
|
|
return default;
|
|
|
}
|