Пример #1
0
        // create/load a game
        private void SetupGame(MemoryPlayers players = null, Point gridGroote = new Point(), TimerMode timerMode = 0, int nKaartenGelijk = 0, Stream loadStream = null)
        {
            // Check of we een spel moeten laden
            bool loadGame = loadStream != null;

            // setup de benodigde data
            // deze data leest de MemoryGrid en MemoryCards object
            if (loadGame)
            {
                SetupSpeelveldData((Point)loadStream.Load(), (int)loadStream.Load());
            }
            else
            {
                SetupSpeelveldData(gridGroote, nKaartenGelijk);
            }

            // maak de het speelveld in de grid
            memoryGrid.Create(nColumns, nRows);

            // leg de kaarten uit op het speelveld
            memoryCards = new MemoryCards(this, loadStream);

            // setup de game logic
            memoryLogic = new MemoryLogic(this, timerMode, players, loadStream);
        }
Пример #2
0
        public MemoryLogic(MemoryGame game, TimerMode timerMode, MemoryPlayers players, Stream loadStream = null)
        {
            // Check of we een spel moeten laden
            bool loadGame = loadStream != null;

            // copieer de benodige data vanuit het memorygame object game
            currentGame    = game;
            context        = currentGame.context;
            memoryCards    = currentGame.memoryCards;
            gameInterface  = currentGame.context.gameInterface;
            nKaartenGelijk = currentGame.nKaartenGelijk;

            // deze lijst gebruiken we om de zetten te onthouden
            moves = new List <Move>();

            // timer om de kaarten na een tijdje terug te leggen
            kaartTimer           = new Timer();
            kaartTimer.Interval  = 1000;    // tijd tot kaarten weer terug vallen in ms
            kaartTimer.AutoReset = false;   // zorgt dat een timer een keer aftelt

            // registreer de callback functie KaartenTerugLeggen voor het event Elapsed
            kaartTimer.Elapsed += KaartenTerugLeggen;

            // maak de feedback overlay images
            KaartFeedback = new MemoryOverlays(currentGame);

            // Setup de player data
            if (loadGame)
            {
                playerGroup = loadStream.Load() as MemoryPlayers;
            }
            else
            {
                playerGroup = players;
            }

            // als een nieuwe game word gestart dobbelen we wie start
            if (!loadGame)
            {
                playerGroup.aanZet = Global.RandomNumberGenerator.Next(playerGroup.players.Count);
            }

            // setup of herlaad de game status
            if (loadGame)
            {
                gameStatus = loadStream.Load() as GameStatus;
            }
            else
            {
                gameStatus = new GameStatus(timerMode, currentGame.nKaartenUniek);
            }

            // setup het game interface
            gameInterface.Setup(this);
        }
Пример #3
0
        public void Setup(MemoryLogic gameLogic)
        {
            pPlayerGroup = gameLogic.playerGroup;
            pGameStatus  = gameLogic.gameStatus;

            playerGrid.Create(2, 2);

            playerBords  = new List <PlayerBord>();
            bordControls = new List <UIElement>();

            // timer om de kaarten na een tijdje terug te leggen
            popupTimer           = new Timer();
            popupTimer.Interval  = 1000;    // tijd tot kaarten weer terug vallen in ms
            popupTimer.AutoReset = false;   // zorgt dat een timer een keer aftelt

            // registreer de callback functie KaartenTerugLeggen voor het event popupTimer Elapsed
            popupTimer.Elapsed += popupVerwijderen;

            // timer om de speeltijd bij te houden
            timerClock           = new Timer();
            timerClock.Interval  = 1000;
            timerClock.AutoReset = true;

            // registreer de callback functie gameTimerUpdate voor het event timerClock Elapsed
            timerClock.Elapsed += gameTimerUpdate;

            // zet de speeltijd timer aan
            timerClock.Enabled = true;

            int index = 0;

            foreach (MemoryPlayer player in pPlayerGroup.players)
            {
                PlayerBord playerBord = new PlayerBord(this)
                {
                    naam = player.naam, score = player.score
                };
                playerBords.Add(playerBord);

                bordControls.Add(playerBord.pControl);
                playerGrid.AddByIndex(playerBord.pControl, index++);

                if (index == pPlayerGroup.players.Count)
                {
                    playerBord.pControl.Loaded += playerBordsLoaded;
                }
            }
        }
Пример #4
0
 // new game function entry
 public void RunGame(MemoryPlayers players, Point gridGroote, TimerMode timerMode, int nKaartenGelijk)
 {
     SetupGame(players, gridGroote, timerMode, nKaartenGelijk);
 }
Пример #5
0
        private void NewGame(object sender, RoutedEventArgs e)
        {
            // setup de spelers
            MemoryPlayers playerGroup = new MemoryPlayers();

            if (SpelerNaam1.Text.notEmpty())
            {
                playerGroup.AddPlayer(SpelerNaam1.Text);
            }
            if (SpelerNaam2.Text.notEmpty())
            {
                playerGroup.AddPlayer(SpelerNaam2.Text);
            }
            if (SpelerNaam3.Text.notEmpty())
            {
                playerGroup.AddPlayer(SpelerNaam3.Text);
            }
            if (SpelerNaam4.Text.notEmpty())
            {
                playerGroup.AddPlayer(SpelerNaam4.Text);
            }

            // setup de game mode
            TimerMode timerMode = 0;

            if ((bool)roundabout.IsChecked)
            {
                timerMode = TimerMode.roundAbout;
            }
            if ((bool)timerturn.IsChecked)
            {
                timerMode = TimerMode.timerTurn;
            }

            // check of er genoeg spelers zijn voor de geselecteerd game mode
            switch (timerMode)
            {
            case TimerMode.roundAbout:
                if (playerGroup.players.Count == 0)
                {
                    MessageBox.Show("Vul minimaal één speler naam in.");
                    return;
                }
                else
                {
                    break;
                }

            case TimerMode.timerTurn:
                if (playerGroup.players.Count < 2)
                {
                    MessageBox.Show("Vul minimaal twee speler namen in.");
                    return;
                }
                else
                {
                    break;
                }
            }

            // setup het speelveld groote
            int gridDiameter = 0;

            if ((bool)Grid_3x3.IsChecked)
            {
                gridDiameter = 3;
            }
            if ((bool)Grid_4x4.IsChecked)
            {
                gridDiameter = 4;
            }
            if ((bool)Grid_5x5.IsChecked)
            {
                gridDiameter = 5;
            }
            if ((bool)Grid_6x6.IsChecked)
            {
                gridDiameter = 6;
            }
            if ((bool)Grid_7x7.IsChecked)
            {
                gridDiameter = 7;
            }
            if ((bool)Grid_8x8.IsChecked)
            {
                gridDiameter = 8;
            }

            Point gridGroote = new Point(gridDiameter, gridDiameter);

            // setup het aantal kaarten die gelijk moeten zijn
            int aatalGelijk = 0;

            if ((bool)KaartenDouble.IsChecked)
            {
                aatalGelijk = 2;
            }
            if ((bool)KaartenTriple.IsChecked)
            {
                aatalGelijk = 3;
            }
            if ((bool)KaartenQuad.IsChecked)
            {
                aatalGelijk = 4;
            }

            // navigeer naar het spelbord
            context.contentFrame.NavigateBlank();
            context.gameGrid.Background     = (ImageBrush)FindResource("SpelR");
            context.contentFrame.Background = null;
            context.menuFrame.Navigate(context.gameInterface);

            //maak een nieuwe game
            context.memoryGame.RunGame(playerGroup, gridGroote, timerMode, aatalGelijk);
        }