public void Run() { while (true) { int distance = 0; helicopter = new Helicopter(3, Console.BufferHeight / 2); cave = new Cave(); Display(buffer); buffer.WriteCenter("Ready"); buffer.Display(); Utility.WaitForKey(ConsoleKey.Spacebar); while (!cave.Hit(helicopter)) { DateTime timestamp = DateTime.Now; helicopter.Fly(Utility.IsKeyDown(ConsoleKey.Spacebar)); if (Utility.IsKeyDown(ConsoleKey.Enter)) { buffer.WriteCenter("Paused"); buffer.Display(); Utility.WaitForKey(ConsoleKey.Spacebar); } distance++; cave.Generate(); Display(buffer); Thread.Sleep(Math.Max(0, (timestamp + TimeSpan.FromMilliseconds(1000 / Settings.Default.FPS) - DateTime.Now).Milliseconds)); } buffer.WriteCenter("Hello, wall...", "Distance: " + distance); buffer.Display(); Utility.WaitForKey(ConsoleKey.Enter); } }
public bool Hit(Helicopter helicopter) { return Slices .Select((slice, index) => new { Slice = slice, Index = index }) .Any(indexedSlice => indexedSlice.Slice.Hit(helicopter, indexedSlice.Index)); }
public bool Hit(Helicopter helicopter, int x) { return helicopter.Parts.Any(part => part.ContainsX(x) && (part.Y <= Ceiling || part.Y >= Floor)); }
public Part(Helicopter owner) { Owner = owner; }
public TailRotor(Helicopter owner) : base(owner) { }
public MainRotor(Helicopter owner) : base(owner) { }
public Body(Helicopter owner) : base(owner) { }