示例#1
0
        private void btn_2spieler_Click(object sender, EventArgs e)
        {
            this.Hide();
            Spielfeld sForm = new Spielfeld();

            sForm.ShowDialog();
            Application.Exit();
        }
示例#2
0
        /// <summary>
        ///     Bestandteil des Siegerbildschirms
        /// </summary>
        /// <param name="s"></param>
        private static void OutputWinner(Spielfeld s)
        {
            var name     = s.GetPlayerID() ? Spielfeld.PlayerNames[0] : Spielfeld.PlayerNames[1];
            var r        = new Random();
            var gewonnen = string.Format("   WINNER  {0}                  ", name);

            for (var row = 0; row < 16; row++)
            {
                name = s.GetPlayerID() ? Spielfeld.PlayerNames[0] : Spielfeld.PlayerNames[1];
                Console.SetCursorPosition(horizonzal - 2 + r.Next(0, 12), r.Next(6, 18) + 1);
                SwitchBackgroundColor(row);
                Console.WriteLine(name + gewonnen.Substring(0, row));
                ResetBoard2();
            }
        }
示例#3
0
        /// <summary>
        ///     Siegerbildschirm
        /// </summary>
        /// <param name="s"></param>
        private static void Win(Spielfeld s)
        {
            var delete = "                                      ";

            OutputWinner(s);

            for (var J = 0; J < 8; J++)
            {
                ScreenClear(delete);

                Thread.Sleep(200);

                OutputWinner(s);

                ResetBoard2();

                Thread.Sleep(500);
            }
        }
示例#4
0
        private static void Main()
        {
            var s          = new Spielfeld();
            var fpsCounter = new Timer();

            Console.CursorVisible   = false;
            Console.ForegroundColor = ConsoleColor.Yellow;

            var key = ConsoleKey.Attention;

            var tbStart = new TextBox(new Point(10, 10), ConsoleColor.DarkRed);

            tbStart.Spieler1Abfragen();

            var rahmen = new TextBox(new Point(0, 0), SwitchForegroundColor(rand.Next(0, 15)));

            do
            {
                fpsCounter.FpsChecker();
                tbStart.Draw();
                rahmen.DrawRahmen();

                if (programmZustand == 2)
                {
                    ResetBoard2();
                }

                if (programmZustand == 3)
                {
                    ResetBoard2();
                    OutputTie();
                }

                if (!Console.KeyAvailable)
                {
                    continue;
                }
                // code only processed when a key is down

                key = Console.ReadKey(true).Key;

                if (programmZustand == 2)
                {
                    ValidateInput(s, key);
                    if (gameResult == TurnResult.Valid || gameResult == TurnResult.Invalid)
                    {
                        ResetBoard2();
                    }
                    else if (gameResult == TurnResult.Win)
                    {
                        Win(s);
                    }
                    else if (gameResult == TurnResult.Tie)
                    {
                        programmZustand = 3;
                        OutputTie();
                    }
                }

                else
                {
                    switch (key)
                    {
                    default:
                        tbStart.ProcessKey(key, s);
                        break;
                    }
                }
            } while (key != ConsoleKey.Escape);

            Console.ResetColor();

            Console.ReadKey(true);
        }
示例#5
0
        /// <summary>
        ///     Spielzug wird auf Ergebnis geprüft.
        ///     Win/Tie/Valid und Invalid sind mögliche Resultate
        ///     Tastatuteingabe wird behandelt
        /// </summary>
        /// <param name="s"></param>
        public static void ValidateInput(Spielfeld s, ConsoleKey key)
        {
            ResetHints();

            switch (key)
            {
            case ConsoleKey.Spacebar:
            case ConsoleKey.Enter:
                gameResult = s.Turn(new Point(Lesekopf.X, Lesekopf.Y));
                break;

            case ConsoleKey.LeftArrow:
                if (Lesekopf.X > 0)
                {
                    Lesekopf.X--;
                    MoveCursor();
                    Console.BackgroundColor = ConsoleColor.Blue;
                    OutputSign(Lesekopf.X, Lesekopf.Y);
                }

                break;

            case ConsoleKey.UpArrow:
                if (Lesekopf.Y > 0)
                {
                    Lesekopf.Y--;
                    MoveCursor();
                    Console.BackgroundColor = ConsoleColor.Blue;
                    OutputSign(Lesekopf.X, Lesekopf.Y);
                }

                break;

            case ConsoleKey.RightArrow:
                if (Lesekopf.X < 2)
                {
                    Lesekopf.X++;
                    MoveCursor();
                    Console.BackgroundColor = ConsoleColor.Blue;
                    OutputSign(Lesekopf.X, Lesekopf.Y);
                }

                break;

            case ConsoleKey.DownArrow:
                if (Lesekopf.Y < 2)
                {
                    Lesekopf.Y++;
                    MoveCursor();
                    Console.BackgroundColor = ConsoleColor.Blue;
                    OutputSign(Lesekopf.X, Lesekopf.Y);
                }

                break;

            case ConsoleKey.F1:
                s.DrawHint(Lesekopf.X, Lesekopf.Y);
                ResetBoard2();
                break;

            case ConsoleKey.Escape:
                break;
            }

            Console.ResetColor();
        }
示例#6
0
        static void Main()
        {
            Console.CursorVisible = false;
            List <string> logolines = new List <string>();   // erstellen eines lagers für die logo-zeilen
            string        readbuffer;                        //zwischenlager für eine gelesene Zeile

            using (var sr = new StreamReader("Logo.txt"))    // öffnen der Datei mit lesezugriff
                while ((readbuffer = sr.ReadLine()) != null) // solange lesen bis NULL (dateiende) erreicht wird
                {
                    logolines.Add(readbuffer);
                }                              // gelesene zeile im lager ablegen

            Random rndGen = new Random();

            for (int counter = 0; counter < logolines.Count; counter++)
            {
                // ausgabe zentrieren
                Console.SetCursorPosition(Console.BufferWidth / 2 - logolines[counter].Length / 2,
                                          Console.WindowHeight / 2 - logolines.Count / 2 + counter);
                Console.ForegroundColor = (ConsoleColor)rndGen.Next(1, 16); // zufällige farbe einstellen
                Console.Write(logolines[counter]);                          // zeile ausgeben
            }
            Console.ReadKey(true);                                          // auf irgendeinen tastenanschlag warten
            Console.ResetColor();                                           // farben zurücksetzen
            Console.Clear();                                                // bildschirm leeren

            string[] userNames = new string[2];

            Console.WriteLine("Hallo User, ich bin ein Spiel"); // ausgabe begrüssung
            Console.WriteLine("Spieler X bitte name eingeben"); // ausgabe Spieler X bitte name eingeben
            userNames[0] = Console.ReadLine();                  // eingabe von tastatur lesen und abspeichern
            Console.WriteLine("Spieler Y bitte name eingeben"); // ausgabe Spieler Y bitte name eingeben
            userNames[1] = Console.ReadLine();                  // eingabe von tastatur lesen und abspeichern


            Spielfeld spiel = new Spielfeld();

            do                 // wiederholen
            {
                spiel.Reset(); //   spiel auf anfangszustand setzen
                TurnResult result = TurnResult.Invalid;
                do
                {                                                                                                                  //   wiederholen
                    Draw(spiel.GetBoard());                                                                                        //      spielfeld anzeigen
                    do
                    {                                                                                                              //      wiederholen
                        Console.Write("Bitte feld auswählen {0} xy : ", (spiel.GetCurrentPlayer() ? userNames[0] : userNames[1])); //          ausgabe Bitte feld auswählen
                        byte   X;
                        byte   Y;
                        string userInput = Console.ReadLine();//          eingabe des feldes lesen und abspeichern
                        if (!byte.TryParse(userInput[0].ToString(), out X) || X > 2)
                        {
                            Console.WriteLine("keine gültige koordinate X");
                            continue;
                        }

                        if (!byte.TryParse(userInput[1].ToString(), out Y) || Y > 2)
                        {
                            Console.WriteLine("keine gültige koordinate Y");
                            continue;
                        }
                        result = spiel.Turn(new Point(X, Y)); //          zug durchführen und ergebnis abspeichern
                    } while (result == TurnResult.Invalid);   //      solange Spielerzug ungültig
                } while (result == TurnResult.Valid);         //   solange Spielerzug gültig
                Draw(spiel.GetBoard());
                if (result == TurnResult.Tie)                 //   wenn spielerzug unentschieden
                {
                    Console.WriteLine("Unentschieden!");
                }
                else
                {
                    Console.WriteLine("Sieg für {0}", (spiel.GetCurrentPlayer() ? userNames[0] : userNames[1])); //      ausgabe aktueller spieler hat gewonnen
                }
                Console.WriteLine("Möchten sie noch ein Spiel spielen? [y/n]");                                  //   ausgabe möchten sie noch ein spiel?
            } while (Console.ReadKey(true).Key == ConsoleKey.Y);                                                 // solange y von der tastatur gelesen wurde

            Console.WriteLine("Auf wiedersehen");
        }