示例#1
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();
        }
示例#2
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");
        }