// 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); }
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); }
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; } } }
// new game function entry public void RunGame(MemoryPlayers players, Point gridGroote, TimerMode timerMode, int nKaartenGelijk) { SetupGame(players, gridGroote, timerMode, nKaartenGelijk); }
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); }