private void gameTimer_Tick(object sender, EventArgs e) { // Doe een seconden van de game tijd aftrekken en update de resterende tijd op het scherm. this.secondsLeftInGame--; this.DisplayGameTimeLeftOnScreen(); if (secondsLeftInGame <= 0) { // Wanneer de tijd is afgelopen kan de verstopper zich niet meer verder bewegen en wordt de timer gestopt. // Verder wordt ook bij de resterende tijd afgelopen weergegeven. this.canHide = false; gameTimer.Stop(); gameTimeLeftLabel.Text = "Afgelopen"; if (this.currentSwitch != null) { Domoticz.SendLogMessageToDomoticz("[HIDING] Ended, Current room: " + this.currentSwitch.idx); } else { Domoticz.SendLogMessageToDomoticz("[HIDING] Ended, Current room: none"); } } }
// GAME private void TurnOffAllSwitches() { foreach (Switch @switch in this.switches) { Domoticz.UseSwitch(@switch, SwitchActionEnum.Off); } }
// Timer(s) private void startGameTimer_Tick(object sender, EventArgs e) { // Is de totale aantal seconden zoektijd al gezet, dan wordt de timer gestopt. if (this.secondsLeftInGame != -1) { startGameTimer.Stop(); } // Er gaat gecheckt worden in de logs of er in de laatste 5 minuten een game gestart is. // Dit wordt elke seconde gedaan. // De logs van de laatste 5 minuten op niveau 2 worden opgehaald. List <Log> logs = Domoticz.GetLogs(DateTime.Now - new TimeSpan(0, 5, 0), 2); // Er wordt door de logs gezocht naar logs van de Verstop applicatie. foreach (Log log in logs) { String[] words = log.message.Split(' '); // Als het niet van de Verstop applicatie komt gaat de volgende log bekeken worden. if (!words[4].Equals("[HIDING]")) { continue; } // Als het een bericht is waar het spel niet wordt gestart wordt er naar de volgende gekeken. if (!words[5].Equals("Started:")) { continue; } // Nu kan geconcludeerd worden dat op dit moment dat deze log is gemaakt een spel gestart is. // De tijd van het starten wordt opgehaald en hoeveel tijd er totaal beschikbaar was. DateTime startTime = DateTime.Parse(words[6] + " " + words[7]); int totalSecondsForHiding = int.Parse(words[10]); // Er wordt nu gekeken naar de start tijd en de tijd beschikbaar hoeveel tijd er nog over is. int secondsPassedFromStartTime = (int)DateTime.Now.Subtract(startTime).TotalSeconds; int secondsLeftInGame = totalSecondsForHiding - secondsPassedFromStartTime; // Als er meer tijd is verstreken dan de zoek tijd betekent dat deze niet meer geldig is, dan kan er naar de volgende log gekeken worden. if (secondsPassedFromStartTime > totalSecondsForHiding) { continue; } this.secondsLeftInGame = secondsLeftInGame; // De game kan nu gestart worden nu de informatie is opgehaald. this.StartGame(); // De huidige timer kan gestopt worden aangezien een Game gevonden is. startGameTimer.Stop(); break; } }
private void CheckHiderLocation() { while (!this.canSearch && !this.gameOver) { // De logs gaan gecontroleerd worden of de verstopper zich verplaatst heeft. // Er gaat de laatste seconde gekeken worden na Logs, dit omdat deze method elke seconde herhaalt wordt. List <Log> logs = Domoticz.GetLogs(DateTime.Now - new TimeSpan(0, 0, 1), 2); // Er wordt door de logs gezocht naar logs van de Verstop applicatie. if (logs != null) { foreach (Log log in logs) { String[] words = log.message.Split(' '); // Als het niet van de Verstop applicatie komt gaat de volgende log bekeken worden. if (!words[4].Equals("[HIDING]")) { continue; } // Als het een bericht is waar niet wordt verplaatst wordt er naar de volgende gekeken. if (!words[5].Equals("To:")) { continue; } string switchID = words[6].Trim(new Char[] { '(', ')' }); foreach (Switch @switch in this.switches) { if (@switch.idx.Equals(switchID)) { if (this.currentSwitch == null || !this.currentSwitch.Equals(@switch)) { this.HiderMovesRoom(@switch); break; } } } } } Thread.Sleep(100); } }
public SearchGameMenu() { InitializeComponent(); boxList.Add(pictureBox1); boxList.Add(pictureBox2); boxList.Add(pictureBox3); boxList.Add(pictureBox4); boxList.Add(pictureBox5); boxList.Add(pictureBox6); boxList.Add(pictureBox7); boxList.Add(pictureBox8); this.switches = Domoticz.GetSwitches(); this.CheckIfGameStarted(); }
private void StopGame() { this.EnablePictureBoxStatus(false); this.gameOver = true; gameTimer.Stop(); if (this.foundHider) { MessageBox.Show("Je hebt gewonnen!"); Domoticz.SendLogMessageToDomoticz("[SEEKER] Won Lives" + this.seekerLives); } else { MessageBox.Show("Je hebt verloren!"); Domoticz.SendLogMessageToDomoticz("[SEEKER] Lost Lives:" + this.seekerLives); } }
private void GoToRoom(Switch @switch) { // Check of de verstopper zich nog kan verstoppen, zo niet wordt er een bericht gestuurd en wordt de code verder niet uitgevoerd. if (!this.canHide) { MessageBox.Show("Je kan je niet meer verder verstoppen! De tijd is namelijk afgelopen.", "Stop met verstoppen!"); return; } // Huidige switch uitzetten if (this.currentSwitch != null) { Domoticz.UseSwitch(this.currentSwitch, SwitchActionEnum.Off); } // Nieuwe switch aanzetten Domoticz.UseSwitch(@switch, SwitchActionEnum.On); Domoticz.SendLogMessageToDomoticz("[HIDING] To: " + @switch.idx); this.currentSwitch = @switch; }
public HideGameMenu(int playingTimeInSeconds) { InitializeComponent(); // Haal alle sensoren op via de Domoticz API. this.switches = Domoticz.GetSwitches(); // Doe alle switches uitzetten zodat deze niet al aanstaan voordat het spel begint. this.TurnOffAllSwitches(); // Stuur een bericht naar Domoticz dat het verstoppen begint, zo kan dit in de zoekapplicatie gekeken worden wanneer het spel begonnen is. Domoticz.SendLogMessageToDomoticz("[HIDING] Started: " + DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss") + ", Game length: " + playingTimeInSeconds + " seconds"); // Zet het aantal seconden van het spel naar de gespecificeerde tijd. this.secondsLeftInGame = playingTimeInSeconds; // De tijd wordt gestart this.StartGameTimer(); // Verder wordt ook aangezet dat de verstopper zich kan gaan verstoppen. this.canHide = true; }