Beispiel #1
0
        public static void Log(object sender, HamsterEventArgs e)
        {
            //Kan hända att det kraschar just för att programmet  använder denna metod samtidigt i de olika  trådarna. Då kan vi ta hjälp utav denna lock och gör så att trådarna får vänta
            lock (objectLocker)
            {
                using (StreamWriter w = File.AppendText("Filelog.txt"))
                {
                    if (e.Hamster != null)
                    {
                        // Ifall aktivitet är null och bur inte är null så befinner sig hamstern/hamstrarna i kön och flyttas till buren
                        if (e.Hamster.Aktivitet == null && e.Hamster.Bur != null)
                        {
                            Console.WriteLine("Flyttade hamster med namn: {0},ägarnamn: {1}, ålder: {2} och kön {3} till Bur från Kö.", e.Hamster.Namn, e.Hamster.ÄgarNamn, e.Hamster.Ålder, e.Hamster.Kön);
                            w.WriteLine("Flyttade hamster med namn: {0},ägarnamn: {1}, ålder: {2} och kön {3} till Bur från Kö", e.Hamster.Namn, e.Hamster.ÄgarNamn, e.Hamster.Ålder, e.Hamster.Kön);
                            Thread.Sleep(500);
                        }
                        // om aktivitet och bur inte är null så flyttar vi hamstern till aktivitet från bur
                        if (e.Hamster.HamsterKö == null && e.Hamster.Aktivitet != null && e.Hamster.Bur != null)
                        {
                            Console.WriteLine("Flyttade hamster med namn: {0}, ägarnamn: {1}, ålder: {2} och kön {3} till Aktivitet från Bur.", e.Hamster.Namn, e.Hamster.ÄgarNamn, e.Hamster.Ålder, e.Hamster.Kön);
                            w.WriteLine("Flyttade hamster med namn: {0}, ägarnamn: {1}, ålder: {2} och kön {3} till Aktivitet från Bur.", e.Hamster.Namn, e.Hamster.ÄgarNamn, e.Hamster.Ålder, e.Hamster.Kön);
                            Thread.Sleep(500);
                        }


                        //if (e.Hamster.HamsterKö != null && e.Hamster.Aktivitet != null)
                        //{
                        //    Console.WriteLine("Flyttade hamster med namn {0} till Aktivitet från Kön med ägarnamn {1}", e.Hamster.Namn, e.Hamster.ÄgarNamn);
                        //    w.WriteLine("Flyttade hamster med namn {0} till Aktivitet från Kön med ägarnamn {1}" +
                        //        "", e.Hamster.Namn, e.Hamster.ÄgarNamn);
                        //}

                        //Om hemfärd inte är null så har hamstern åkt hem
                        if (e.Hamster.Hemfärd != null)
                        {
                            Console.ForegroundColor = ConsoleColor.Green;
                            Console.WriteLine("Hamster med namn {0} åkte hem från aktivitet och motionerade {1} gånger och motsvarar {2} minuter", e.Hamster.Namn, e.Hamster.MotionsNivå, e.Hamster.MotionsNivå * 60);
                            w.WriteLine("Hamster med namn {0} åkte hem från aktivitet och motionerade {1} gånger och motsvarar {2}", e.Hamster.Namn, e.Hamster.MotionsNivå, e.Hamster.MotionsNivå * 60);
                            HamstersHome++;
                            Console.WriteLine("Totalt hamstrar som gick hem {0}", HamstersHome);

                            Console.ResetColor();
                        }
                        //om resterande hamster som är kvar i dagiset inte är null så betyder det att de inte motionerat ännu
                        if (e.Hamster.ResterandeHamster != null)
                        {
                            Console.ForegroundColor = ConsoleColor.Yellow;
                            Console.WriteLine("Hamstrar med namn {0} har ännu inte motionerat, väntar tills de motionerat minst 1 gång under vistelsen", e.Hamster.Namn);
                            w.WriteLine("Hamstrar med namn {0} har ännu inte motionerat, väntar tills de motionerat minst 1 gång under vistelsen", e.Hamster.Namn);
                            HamstersStillExercising++;
                            Console.WriteLine("Totalt hamstar som väntas motionera {0}", HamstersStillExercising);

                            Console.ResetColor();
                        }
                        if (e.Hamster.ResterandeHamster != null && e.Hamster.Hemfärd == null)
                        {
                            Console.WriteLine("Hamstrar som väntades motionera med namn {0} har nu motionerat {1} gånger", e.Hamster.Namn, Motionerade);
                            w.WriteLine("Hamstrar som väntades motionera med namn {0} har nu motionerat {1} gånger", e.Hamster.Namn, Motionerade);
                            Motionerade++;
                            Thread.Sleep(1500);
                        }
                    }
                }
            }
        }
 internal virtual void OnHamsterMoved(HamsterEventArgs e)
 {
     //raisar eventet
     HamsterMovedEvent?.Invoke(this, e);
 }