Exemplo n.º 1
0
        public GameTableContext(uint size, IWindowService service)
        {
            //_BackgroundImage = new BitmapImage(new Uri("Images//sea_field.png"));
            _TableSize = (int)size;
            GameController.Instance.Init(size, 9, new[] { new Player("Gipsz Jakab", PlayerColor.Blue),
                                                        new Player("Játékos 2", PlayerColor.Red) });

            if (service == null)
                throw new ArgumentNullException("service");

            Messages = new Queue<MessageContext>();
            WindowService = service;
            NewGameContext = new NewGameContext(this, new[] { new Player("1. játékos", PlayerColor.Blue),
                                                              new Player("2. játékos", PlayerColor.Red),
                                                              new Player("3. játékos", PlayerColor.Orange),
                                                              new Player("4. játékos", PlayerColor.Green), });

            NewGameContext.Closed += (sender, args) => {
                var context = sender as NewGameContext;
                if (context != null) {
                    if (context.IsNewGame)
                        InitializeGame(context);
                }
            };
        }
Exemplo n.º 2
0
        private GameTableContext InitializeGame(NewGameContext newGameContext)
        {
            if (newGameContext == null)
                throw new ArgumentNullException("newGameContext");

            var players = newGameContext.GetPlayers().ToList();
            var newPlayers = new List<Player>();
            var random = new Random();

            GamePhase = GamePhase.Initialization;

            while (players.Any()) {
                var index = random.Next(0, players.Count);
                newPlayers.Add(players[index]);
                players.RemoveAt(index);
            }

            TableSize = newGameContext.TableSize;
            GameController.Instance.Init((uint)TableSize, newGameContext.WinnerScore, newPlayers);

            GameCells = new ObservableCollection<GameCellContext>();

            random = new Random();

            var materials = new[]
            {
                Material.Wood,
                Material.Wool,
                Material.Clay,
                Material.Wheat,
                Material.Iron
            };

            for (var j = 0; j < TableSize; ++j) {
                for (var i = 0; i < TableSize - Math.Abs(Math.Floor(TableSize / 2.0) - j); ++i) {
                    int value = random.Next(2, 13);
                    var h = new Hexagon(value, materials[random.Next(0, materials.Length)], new Hexid(j, i));
                    GameCells.Add(new GameCellContext(this, h) { Value = value });
                    GameController.Instance.Hexagons.Add(h);
                }
            }

            GameController.Instance.SetAllNeighbours();

            GameController.Instance.Step();

            GamePhase = GamePhase.FirstPhase;

            return this;
        }