public void Run() { _running = true; _state = GameState.Setup; while (_running) { switch (_state) { case GameState.Setup: if (_initialEvent) { _weather = new Weather(_settings); _animator.SetWeather(_weather); _animator.Render(); _initialEvent = false; } _animator.ReadInput(); Thread.Sleep(100); break; case GameState.Transaction: if (_initialEvent) { _transaction.SetUp(_players[_currentPlayer], _settings, _currentPlayer, _day, _weather, signCost, GlassCost); _transaction.Render(); _initialEvent = false; } _transaction.ReadInput(); Thread.Sleep(100); break; case GameState.Event: if (_initialEvent) { _result.Setup(_players, _weather); _result.Render(); _day++; if (_players.Any(s => s.Budget < GlassCost)) { Console.Clear(); IEnumerable <PlayerState> lost = _players.Where(s => s.Budget < GlassCost); Console.WriteLine($"The following players are out: {string.Join(", ", lost.Select(s => s.Number.ToString()))}"); Thread.Sleep(2000); Console.Clear(); _players.RemoveAll(s => lost.Contains(s)); } DiffDraw.Draw(_settings.Color, true); _initialEvent = false; } _result.ReadInput(); Thread.Sleep(100); break; default: throw new ArgumentOutOfRangeException(); } } }
private static TimeSpan Perform(bool smooth1, bool smooth2, bool color) { DiffDraw.Clear(0, 0); Renderer.Player.Clear(); Pixel[,] init = new Pixel[1, 2]; init.Populate(new Pixel()); DiffDraw.Clear(init); DiffDraw.Draw(false, true); Stopwatch t = Stopwatch.StartNew(); (char[,] level, _) = CharArrayLoader.LoadLevel(@" ##################### # ### # ### # # # ## # # # # # ## # #####################", smooth1); DiffDraw.Clear(ColorSelector.Get(level)); Renderer.Player.Add(new Tuple <Point, Point>(new Point(1, 2), new Point(0, 0))); Renderer.Player.Add(new Tuple <Point, Point>(new Point(2, 2), new Point(0, 0))); Renderer.Player.Add(new Tuple <Point, Point>(new Point(2, 3), new Point(0, 0))); Renderer.Player.Add(new Tuple <Point, Point>(new Point(1, 3), new Point(0, 0))); Renderer.Player.Add(new Tuple <Point, Point>(new Point(1, 4), new Point(0, 0))); Renderer.Player.Add(new Tuple <Point, Point>(new Point(1, 5), new Point(0, 0))); Renderer.Player.Add(new Tuple <Point, Point>(new Point(1, 6), new Point(0, 0))); Renderer.Player.Add(new Tuple <Point, Point>(new Point(2, 6), new Point(0, 0))); Renderer.Player.Add(new Tuple <Point, Point>(new Point(2, 5), new Point(0, 0))); Renderer.Player.Add(new Tuple <Point, Point>(new Point(2, 4), new Point(0, 0))); Renderer.Player.Add(new Tuple <Point, Point>(new Point(3, 4), new Point(0, 0))); Renderer.Player.Add(new Tuple <Point, Point>(new Point(3, 3), new Point(0, 0))); Renderer.Player.Add(new Tuple <Point, Point>(new Point(3, 2), new Point(0, 0))); Renderer.Player.Add(new Tuple <Point, Point>(new Point(4, 2), new Point(0, 0))); Renderer.Enemies.Add(new Point(5, 4)); Renderer.Enemies.Add(new Point(5, 5)); Renderer.Enemies.Add(new Point(5, 6)); Renderer.Enemies.Add(new Point(6, 6)); Renderer.Enemies.Add(new Point(7, 6)); Renderer.Enemies.Add(new Point(7, 5)); Renderer.Enemies.Add(new Point(7, 4)); Renderer.Enemies.Add(new Point(6, 3)); Renderer.Enemies.Add(new Point(5, 2)); Renderer.Render(smooth2); DiffDraw.Draw(color); foreach (string t1 in Levels.levels) { (char[,] lvl, _) = CharArrayLoader.LoadLevel(t1, SettingsMan.SmoothTerrain); DiffDraw.Clear(ColorSelector.Get(lvl)); DiffDraw.Draw(true); } t.Stop(); return(t.Elapsed); }
private static void PlayRound() { Console.Clear(); bool playing = true; Pixel[,] init = new Pixel[1, 2]; init.Populate(new Pixel()); DiffDraw.Clear(init); DiffDraw.Draw(false); Label scoreLabel = new Label(new Point(0, 0), ""); Renderer.Labels.Clear(); Renderer.Labels.Add(scoreLabel); Levels.Load(); (char[,] level, bool[,] spawnable) = CharArrayLoader.LoadLevel(Levels.levels[Rnd.Next(Levels.levels.Length)], SettingsMan.SmoothTerrain); bool hasIncreased = false; Renderer.Player.Clear(); Renderer.Player.Add(new Tuple <Point, Point>(new Point(1, 1), new Point(0, 1))); Renderer.Enemies.Clear(); DiffDraw.Clear(ColorSelector.Get(level)); DiffDraw.Draw(SettingsMan.Color); Input.Reset(); while (playing) { DiffDraw.Clear(ColorSelector.Get(level)); scoreLabel.Text = $"Score: {_score}"; Renderer.Render(SettingsMan.SmoothPlayer); Input.Get(); if (Input.Move(hasIncreased) || Input.Esc) { Renderer.Player.Clear(); Input.Reset(); playing = false; Input.Esc = false; continue; } if (Input.R) { _score = 0; init.Populate(new Pixel()); DiffDraw.Clear(init); DiffDraw.Draw(SettingsMan.Color); Console.Clear(); (level, spawnable) = CharArrayLoader.LoadLevel(Levels.levels[Rnd.Next(Levels.levels.Length)], SettingsMan.SmoothTerrain); DiffDraw.Clear(ColorSelector.Get(level)); Renderer.Player.Clear(); Renderer.Player.Add(new Tuple <Point, Point>(new Point(2, 2), new Point(0, 1))); Renderer.Enemies.Clear(); Input.Reset(); Input.R = false; } Renderer.Render(SettingsMan.SmoothPlayer); hasIncreased = Enemy.Compute(spawnable); if (hasIncreased) { _score++; } DiffDraw.Draw(SettingsMan.Color); } Console.ResetColor(); }
public void Configure() { CenteredScreen settingsScreen = new CenteredScreen(200, 20, ConsoleColor.Black, Color) { TabPoint = 0, Title = "Lemonade - Settings" #if DEBUG + "[R to redraw]" #endif }; Panel scr = settingsScreen.ContentPanel; scr.ForeColor = ConsoleColor.DarkGray; Label playerLabel = new Label("Players"); playerLabel.Point = new Point(scr.Size.Width / 2 - playerLabel.Content.Length / 2, 3); scr.Controls.Add(playerLabel); Slider playerSlider = new Slider { MinValue = 1, Value = 2, Size = new Size(100, 1) }; playerSlider.Point = new Point(scr.Size.Width / 2 - playerSlider.Size.Width / 2, 4); scr.Controls.Add(playerSlider); Label difficultyLabel = new Label("Difficulty"); difficultyLabel.Point = new Point(scr.Size.Width / 2 - difficultyLabel.Content.Length / 2, 7); scr.Controls.Add(difficultyLabel); Slider difficulty = new Slider { Value = 5, Size = new Size(100, 1) }; difficulty.Point = new Point(scr.Size.Width / 2 - difficulty.Size.Width / 2, 8); scr.Controls.Add(difficulty); CheckBox colorBox = new CheckBox("Color") { Checked = true }; colorBox.Point = new Point(scr.Size.Width / 2 - (colorBox.Content.Length + 4) / 2, 12); colorBox.CheckedChanged += (screen, args) => { settingsScreen.Color = colorBox.Checked; }; #if DEBUG settingsScreen.Input += (screen, args) => { if (args.Info.Key == ConsoleKey.R) { DiffDraw.Draw(Color, true); } }; #endif scr.Controls.Add(colorBox); Button okButton = new Button("OK"); okButton.Point = new Point(scr.Size.Width / 2 - okButton.Content.Length / 2, 16); scr.Controls.Add(okButton); bool visible = true; okButton.Click += (screen, args) => visible = false; settingsScreen.Close += (screen, args) => visible = false; if (!File.Exists(Settingsfile)) { GenDef(); } try { XElement conf = XElement.Parse(File.ReadAllText(Settingsfile)); playerSlider.Value = int.Parse(conf.Element("Players").Value); difficulty.Value = int.Parse(conf.Element("Difficulty").Value); colorBox.Checked = bool.Parse(conf.Element("Color").Value); settingsScreen.Color = colorBox.Checked; } catch { Debug.Fail("Failed to load settings"); } settingsScreen.Render(); while (visible) { settingsScreen.ReadInput(); Thread.Sleep(100); } PlayerCount = playerSlider.Value; DifficultyFactor = difficulty.Value / 10f; Color = colorBox.Checked; try { Gen(PlayerCount, difficulty.Value, Color); } catch { Debug.Fail("Failed to save settings"); } }
private static void Main(string[] args) { Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.White; Console.Clear(); CenteredScreen cScreen = new CenteredScreen(40, 20, ConsoleColor.Green); Panel screen = cScreen.ContentPanel; Button btn1 = new Button("Test") { Point = new Point(2, 0), BackColor = ConsoleColor.DarkGreen }; screen.Controls.Add(btn1); btn1.Click += (screen1, eventArgs) => { DiffDraw.Draw(true, true); }; Label lab1 = new Label("Meem") { Point = new Point(2, 1), BackColor = ConsoleColor.Green }; screen.Controls.Add(lab1); screen.Controls.Add(new Label("Saas\nSoos") { Point = new Point(2, 2), BackColor = ConsoleColor.Green }); Button btn2 = new Button("X") { BackColor = ConsoleColor.Red, ForeColor = ConsoleColor.White }; screen.Controls.Add(btn2); CheckBox box = new CheckBox("Are u gae?") { Point = new Point(2, 3), BackColor = ConsoleColor.DarkGreen }; screen.Controls.Add(box); box.CheckedChanged += (screen1, eventArgs) => { lab1.Content = box.Checked ? "Sas" : "Meem"; }; TextBox tbox = new TextBox("Hello\nWorld1\n\nHow are u?") { Size = new Size(20, 10), Point = new Point(0, 6), BackColor = ConsoleColor.DarkYellow }; screen.Controls.Add(tbox); Slider slider = new Slider { Point = new Point(2, 4), Size = new Size(16, 2), MaxValue = 75, StepSize = 14, MinValue = -3, Value = 7, BackColor = ConsoleColor.Magenta }; screen.Controls.Add(slider); bool visible = true; btn2.Click += (screen1, eventArgs) => visible = false; cScreen.Close += (screen1, eventArgs) => visible = false; cScreen.TabChanged += (screen1, eventArgs) => btn1.Content = $"Test {cScreen.TabPoint}"; cScreen.Render(); while (visible) { Thread.Sleep(50); cScreen.ReadInput(); } Console.ResetColor(); Console.Clear(); Console.WriteLine("Test2"); Thread.Sleep(100); DiffDraw.Clear(10, 10); DiffDraw.Draw(true, false); Console.Clear(); Console.WriteLine("Bye"); }