コード例 #1
0
        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");
                }
            }
        }
コード例 #2
0
 // GAME
 private void TurnOffAllSwitches()
 {
     foreach (Switch @switch in this.switches)
     {
         Domoticz.UseSwitch(@switch, SwitchActionEnum.Off);
     }
 }
コード例 #3
0
        // 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;
            }
        }
コード例 #4
0
        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);
            }
        }
コード例 #5
0
        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();
        }
コード例 #6
0
        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);
            }
        }
コード例 #7
0
        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;
        }
コード例 #8
0
        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;
        }