Beispiel #1
0
        public void PrintGameOverWithWinnerMessage(Player i_Winner)
        {
            string GameOverMessage;

            FormClosing -= FormOthloGameBoard_FormClosing;

            if (i_Winner == null)
            {
                GameOverMessage =
                    string.Format(
                        @"Game is over! - We have a tie!
Want a new game?");
            }
            else
            {
                GameOverMessage = string.Format(
                    @"Game is over! - The winner is {0}
Want a new game?", i_Winner.Name);
            }

            DialogResult dialogResult = MessageBox.Show(GameOverMessage, "Game Over", MessageBoxButtons.YesNo);

            if (dialogResult == DialogResult.Yes)
            {
                Dispose();
                NewRound.Invoke();
            }
            else if (dialogResult == DialogResult.No)
            {
                Close();
            }
        }
        public List <Block> SplitBlock()
        {
            CityCenter = GetCityCenter();

            var blocks = new List <Block>();

            int round = 1;

            while (Spread(round++, blocks))
            {
                blocks = blocks.Where(i => i.InCity).ToList();

                var left = (from q in blocks
                            orderby q.Center.Lng
                            select q.Center.Lng).FirstOrDefault();
                var top = (from q in blocks
                           orderby q.Center.Lat descending
                           select q.Center.Lat).FirstOrDefault();
                var bottom = (from q in blocks
                              orderby q.Center.Lat
                              select q.Center.Lat).FirstOrDefault();
                var right = (from q in blocks
                             orderby q.Center.Lng descending
                             select q.Center.Lng).FirstOrDefault();

                MapPainter mp = new MapPainter(left, top, bottom, right);

                foreach (var block in blocks)
                {
                    mp.Draw(block.Center.Lat, block.Center.Lng, block.DistrictColor);
                }
                if (NewRound != null)
                {
                    NewRound.Invoke(this, new NewRoundEventArgs()
                    {
                        Count = blocks.Count, Map = mp.Map
                    });
                }
            }

            return(blocks);
        }