Exemple #1
0
        public MemoryCards(MemoryGame game, Stream loadStream = null)
        {
            // Check of we een spel moeten laden
            bool loadGame = loadStream != null;

            // copieer de benodige object handles
            currentGame = game;
            memoryGrid  = currentGame.memoryGrid;

            // copieer de benodige data vanuit het memorygame object game
            nColumns       = currentGame.nColumns;
            nRows          = currentGame.nRows;
            nKaartenUniek  = currentGame.nKaartenUniek;
            nKaartenGelijk = currentGame.nKaartenGelijk;

            if (loadGame)
            {
                // laad de gebruikte kaarten
                lUsedKaartIds = loadStream.Load() as List <int>;
            }
            else
            {
                // maak een lijst van random kaart IDs
                lUsedKaartIds = GetRndmKaartLijst(nKaartenUniek);
            }

            // maak een resource object van de kaart gebruikte image resources
            kaartResource = GetKaartResources(lUsedKaartIds);

            if (loadGame)
            {
                // laad de kaart posities
                lGridKaarten = loadStream.Load() as List <int>;
            }
            else
            {
                // zorg dat alle kaarten twee keer voorkomen en zet ze in toevallige volgorde
                lGridKaarten = SplitAndRandomize(lUsedKaartIds);
            }

            // maak een lijst van buttons voor de kaart speelveld
            lSymboolButtons = GetBttnLijst(lGridKaarten);

            if (loadGame)
            {
                // laad en set de status van de kaarten
                SetKaartStatus(loadStream.Load() as List <KaartStatus>);
            }

            // registreer de buttons in het grid van het speelveld
            int index = 0;

            foreach (Button symboolBttn in lSymboolButtons)
            {
                memoryGrid.AddByIndex(symboolBttn, index++);
            }
        }
        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;
                }
            }
        }