예제 #1
0
        /// <summary>
        /// Ends current round.
        /// </summary>
        void EndGame()
        {
            Pause();
            HardPause = true;
            Program.Debug(LogLevel.Error, "Game ended, hits: {0}, misses: {1}", clicks.Where(x => x.Score).Count(), clicks.Where(x => !x.Score).Count());
            String clicks_str   = "";
            String clicks_stats = "";
            int    index        = 0;

            foreach (Click c in clicks)
            {
                index++;
                clicks_str += String.Format("Click x:{0}, y:{1}, hit: {2}, distance to nearest target: {3}, target lifetime: {4}\n",
                                            c.X,
                                            c.Y,
                                            c.Score,
                                            c.Distance,
                                            c.TargetLiveTime
                                            );
                clicks_stats += String.Format("Strzał#{0} x:{1}, y:{2}, trafienie: {3}{4}{5}\n",
                                              index,
                                              c.X,
                                              c.Y,
                                              (c.Score ? "Tak":"Nie"),
                                              (!c.Score ? String.Format(", dystans do najbliższego celu: {0}", c.Distance) : ""),
                                              (c.TargetLiveTime != TimeSpan.FromTicks(0) ? String.Format(", czas życia celu: {0}", c.TargetLiveTime) : "")
                                              );
            }
            Program.Debug(LogLevel.Error, clicks_str);
            FileLogger fl;

            fl = new FileLogger();
            string text = String.Format("Czas gry: {0}\nTrafienia: {1}\nChybienia: {2}\nCelność: {3}%",
                                        ElapsedTime,
                                        GetHits(),
                                        GetMisses(),
                                        ((Program.game.GetHits() != 0 || Program.game.GetMisses() != 0) ? 100 * Program.game.GetHits() / (Program.game.GetHits() + Program.game.GetMisses()) : 0)
                                        );

            Task.Run(() => fl.WriteData(String.Format("{0}.txt", DateTime.Now.ToString("dd_MM_yyyy_HH-mm-ss")),
                                        "Data: {0}\nTryb gry: {1}\n{2}{3}{4}{5}{6}{7}\n{8}",
                                        DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"),
                                        type.ToString(),
                                        String.Format("Poruszające się cele: {0}\n", MovingTargets ? "Tak" : "Nie"),
                                        type == GameType.ScoreTrial ? (String.Format("Zmieniające wielkość cele: {0}\n", ResizableTargets ? "Tak" : "Nie")) : "",
                                        type == GameType.ScoreTrial ? String.Format("Czas życia celu: {0}\n", TimeSpan.FromMilliseconds(TargetLifetime * (1000 / 30.0))) : "",
                                        String.Format("Ilość celów na start: {0}\n", StartingTargets),
                                        type == GameType.ScoreTrial ? String.Format("Czas pojawiania się kolejnych celów: {0}\n", TargetAddTime) : "",
                                        text,
                                        clicks_stats
                                        ));

            var box = MessageBox.Show(text, "Koniec gry!", MessageBoxButtons.OK);

            if (box == DialogResult.OK)
            {
                gf1.ShowMenu();
            }
        }
예제 #2
0
        static void Main()
        {
            LogLevel = LogLevel.Error;

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            gf = new GameForm();
            StartGame(new TimeSpan(0), false, false, 0, 0, new TimeSpan(0));
            gf.ShowMenu();
            Application.Run(gf);
        }