예제 #1
0
        // Schachbrett manuell step by step eingeben
        public Schachbrett manuellEingeben()
        {
            int gegnerzahl;

            // Stellung initialisieren
            Console.Clear();
            Console.Write("Enter board width in fields (3 - 11) >");
            string eingabe = Console.ReadLine();

            if (eingabe == "")
            {
                eingabe = "0";
            }
            int breite = Convert.ToInt32(eingabe);

            if (breite < 3)
            {
                breite = 3;
            }
            if (breite > 11)
            {
                breite = 11;
            }
            Console.Write("Enter board length in fields (3 - 11) >");
            eingabe = Console.ReadLine();
            if (eingabe == "")
            {
                eingabe = "0";
            }
            int hoehe = Convert.ToInt32(eingabe);

            if (hoehe < 3)
            {
                hoehe = 3;
            }
            if (hoehe > 11)
            {
                hoehe = 11;
            }

            schachbrett = new Schachbrett(breite, hoehe);

            Console.Clear();
            zeigeSchachbrett();

            // Narr= setzen
            Console.Write("Enter Fool X-Position (1 - {0}) >", breite);
            eingabe = Console.ReadLine();
            if (eingabe == "")
            {
                eingabe = "0";
            }
            int nx = Convert.ToInt32(eingabe);

            if (nx < 1)
            {
                nx = 1;
            }
            if (nx > breite)
            {
                nx = breite;
            }
            nx--;
            Console.Write("Enter Fool Y-Position (1 - {0}) >", hoehe);
            eingabe = Console.ReadLine();
            if (eingabe == "")
            {
                eingabe = "0";
            }
            int ny = Convert.ToInt32(eingabe);

            if (ny < 1)
            {
                ny = 1;
            }
            if (ny > hoehe)
            {
                ny = hoehe;
            }
            ny--;

            NarrX = nx;
            NarrY = ny;

            schachbrett.setSide(NarrX, NarrY, 0);
            schachbrett.setType(NarrX, NarrY, 0);

            Console.Clear();
            zeigeSchachbrett();

            // Gegner eingeben und verteilen
            Console.Write("Number of enemies (1 - {0}) >", hoehe * breite / 3);
            eingabe = Console.ReadLine();
            if (eingabe == "")
            {
                eingabe = "0";
            }
            gegnerzahl = Convert.ToInt32(eingabe);
            if (gegnerzahl < 1)
            {
                gegnerzahl = 1;
            }
            if (gegnerzahl > hoehe * breite / 3)
            {
                gegnerzahl = hoehe * breite / 3;
            }

            int gesamtEifer   = 0;
            int gesamtPrimaer = 1;
            int gesamtWachsam = 0;

            for (int i = 0; i < gegnerzahl; i++)
            {
                bool positionOk = false;
                int  posx;
                int  posy;

                do
                {
                    Console.Write("Enter Enemy {0} posX (1 - {1}) >", i, breite);
                    eingabe = Console.ReadLine();
                    if (eingabe == "")
                    {
                        eingabe = "0";
                    }
                    posx = Convert.ToInt32(eingabe);
                    if (posx < 1)
                    {
                        posx = 1;
                    }
                    if (posx > breite)
                    {
                        posx = breite;
                    }
                    posx--;

                    Console.Write("Enter Enemy {0} posY (1 - {1}) >", i, hoehe);
                    eingabe = Console.ReadLine();
                    if (eingabe == "")
                    {
                        eingabe = "0";
                    }
                    posy = Convert.ToInt32(eingabe);
                    if (posy < 1)
                    {
                        posy = 1;
                    }
                    if (posy > hoehe)
                    {
                        posy = hoehe;
                    }
                    posy--;

                    if (schachbrett.getSide(posx, posy) == -1)
                    {
                        positionOk = true;
                    }
                } while (!positionOk);

                if (i == 0)
                {
                    schachbrett.setPrimaerZiel(posx, posy, true);
                }

                Console.Write("Enter Enemy {0} Type (1 pawn, 2 rook, 3 bishop, 4 knight, 5 queen, 6 king) >", i);
                eingabe = Console.ReadLine();
                if (eingabe == "")
                {
                    eingabe = "0";
                }
                int typ = Convert.ToInt32(eingabe);
                if (typ < 1)
                {
                    typ = 1;
                }
                if (typ > 6)
                {
                    typ = 6;
                }

                Console.Write("Enter Enemy {0} Zeal (Probability to move or attack, 1 - 9) >", i);
                eingabe = Console.ReadLine();
                if (eingabe == "")
                {
                    eingabe = "0";
                }
                int eif = Convert.ToInt32(eingabe);
                if (eif < 1)
                {
                    eif = 1;
                }
                if (eif > 9)
                {
                    eif = 9;
                }

                schachbrett.setSide(posx, posy, 1);
                schachbrett.setType(posx, posy, typ);
                schachbrett.setEifer(posx, posy, eif);
                gesamtEifer += schachbrett.getEifer(posx, posy);

                if (i == 0)
                {
                    schachbrett.setType(posx, posy, 6);
                }

                Console.Write("Enter Enemy {0} Quickness (0 slow, 1 quick) >", i);
                eingabe = Console.ReadLine();
                if (eingabe == "")
                {
                    eingabe = "0";
                }
                int wac = Convert.ToInt32(eingabe);
                if (wac < 0)
                {
                    wac = 0;
                }
                if (wac > 1)
                {
                    wac = 1;
                }
                if (wac == 1)
                {
                    schachbrett.setWachsam(posx, posy, true);
                    gesamtWachsam++;
                }

                if (i != 0)
                {
                    Console.Write("Enter Enemy {0} isPrimaryTarget (0 is not p.t., 1 is p.t.) >", i);
                    eingabe = Console.ReadLine();
                    if (eingabe == "")
                    {
                        eingabe = "0";
                    }
                    int pri = Convert.ToInt32(eingabe);
                    if (pri < 0)
                    {
                        pri = 0;
                    }
                    if (pri > 1)
                    {
                        pri = 1;
                    }
                    if (pri == 1)
                    {
                        schachbrett.setPrimaerZiel(posx, posy, true);
                        gesamtPrimaer++;
                    }
                }
                Console.Clear();
                zeigeSchachbrett();
            }

            // Hindernisse setzen
            Console.Write("Number of obstacles (1 - {0}) >", breite * 3);
            eingabe = Console.ReadLine();
            if (eingabe == "")
            {
                eingabe = "0";
            }
            int obstaclesZahl = Convert.ToInt32(eingabe);

            if (obstaclesZahl < 1)
            {
                obstaclesZahl = 1;
            }
            if (obstaclesZahl > breite * 3)
            {
                obstaclesZahl = breite * 3;
            }

            for (int i = 0; i < obstaclesZahl; i++)
            {
                bool positionOk = false;
                int  posx;
                int  posy;

                do
                {
                    Console.Write("Obstacle {0} posX (1 - {1}) >", i, breite);
                    eingabe = Console.ReadLine();
                    if (eingabe == "")
                    {
                        eingabe = "0";
                    }
                    posx = Convert.ToInt32(eingabe);
                    if (posx < 1)
                    {
                        posx = 1;
                    }
                    if (posx > breite)
                    {
                        posx = breite;
                    }
                    posx--;

                    Console.Write("Obstacle {0} posY (1 - {1}) >", i, hoehe);
                    eingabe = Console.ReadLine();
                    if (eingabe == "")
                    {
                        eingabe = "0";
                    }
                    posy = Convert.ToInt32(eingabe);
                    if (posy < 1)
                    {
                        posy = 1;
                    }
                    if (posy > hoehe)
                    {
                        posy = hoehe;
                    }
                    posy--;

                    if (schachbrett.getSide(posx, posy) == -1)
                    {
                        positionOk = true;
                    }
                } while (!positionOk);

                schachbrett.setSide(posx, posy, 0);
                schachbrett.setType(posx, posy, 7);
                schachbrett.setEifer(posx, posy, 0);
                schachbrett.setWachsam(posx, posy, false);
                schachbrett.setPrimaerZiel(posx, posy, false);

                Console.Clear();
                zeigeSchachbrett();
            }

            schwierigkeitsgrad = (gesamtEifer / gegnerzahl) * 2 + gesamtPrimaer * 3 + gesamtWachsam * 2 + gegnerzahl;

            if (schwierigkeitsgrad >= 45)
            {
                wuerfel = 3;
            }
            else if (schwierigkeitsgrad >= 25)
            {
                wuerfel = 2;
            }
            else
            {
                wuerfel = 1;
            };

            return(schachbrett);
        }
예제 #2
0
        // Spiel in Konsole spielen
        public void Run()
        {
            // Konsolengroesse anpassen
            Console.SetWindowPosition(0, 0);
            Console.SetWindowSize(90, 60);

            showEinfuehrung();
            Console.ReadKey();

            bool gameOn = true;

            do
            {
                Console.Clear();

                Console.Write("(L)oad, (C)reate New or <Enter> Random Dungeon>");
                string answer = Console.ReadLine();

                if (answer == "l" || answer == "L")
                {
                    schachbrett = loadSpielstand();
                }
                else if (answer == "c" || answer == "C")
                {
                    schachbrett = manuellEingeben();
                }
                else
                {
                    enterEnemyNr();

                    schachbrett = randomGame();
                }

                spielNr++;
                figurenGeschlagen = 0;

                runde = 0;

                int  winner      = -1;   // 0: Spieler gewinnt; 1: Computer gewinnt
                bool spielerdran = true; // true: Spieler ist am Zug; false: PC ist am Zug

                do
                {
                    if (spielerdran)
                    {
                        winner      = playerTurn(wuerfel);
                        spielerdran = false;
                        runde++;
                        rundengesamt++;
                    }
                    else
                    {
                        winner      = gegnerTurn();
                        spielerdran = true;
                    }
                } while (winner == -1);

                if (winner == 0)
                {
                    if (averagerating == 0)
                    {
                        averagerating = schwierigkeitsgrad - runde + figurenGeschlagen;
                    }
                    else
                    {
                        averagerating = (averagerating + schwierigkeitsgrad - runde + figurenGeschlagen) / 2;
                    }

                    siegeNarr++;
                    Console.Clear();
                    zeigeSchachbrett();
                    zeigeRunde();
                    zeigeStats();
                    Console.WriteLine("\tRating: " + (schwierigkeitsgrad - runde) + "\tAvgRtg " + averagerating);
                    Console.Write("\nMuahahahaha! The Fool wins in {0} rounds!\n\ne'X'it or <return> play again >", runde);
                }
                else
                {
                    if (averagerating != 0)
                    {
                        averagerating /= 2;
                    }
                    siegeGegner++;
                    Console.Clear();
                    zeigeSchachbrett();
                    zeigeStats();
                    Console.WriteLine("\tRating: 0\tAvgRtg " + averagerating);
                    Console.Write("\nThe fool gets a sound beating after {0} rounds\n\ne'X'it or <return> play again >", runde);
                }

                string taste = Console.ReadLine();

                if (taste == "x" || taste == "X")
                {
                    gameOn = false;
                }
            } while (gameOn);

            Console.WriteLine("Good bye!");
        }
예제 #3
0
        // Spielerzug gibt ggf. winner zurueck
        public int playerTurn(int wuerfel)
        {
            Console.Clear();
            zeigeSchachbrett();
            zeigeRunde();

            bool done = false;

            do
            {
                Console.Write("'M'enu or <Enter> to Play >");
                string k = Console.ReadLine();

                if (k == "m" || k == "M")
                {
                    Console.Clear();
                    zeigeSchachbrett();
                    zeigeRunde();

                    Console.Write(
                        " - 'H'elp - 'S'ave - 'L'oad - e'X'it - 'I'nfo -\n" +
                        " - 'C'reate level  - 'E'dit level\n" +
                        " - 'R'andomize     - 'M'arkers on/off\n\n" +
                        " - 'G'ive up or Play <Enter> ! >");

                    k = Console.ReadLine();

                    if (k == "e" || k == "E")
                    {
                        schachbrett = editFeld();
                    }
                    else if (k == "h" || k == "H")
                    {
                        showHelp();
                    }
                    else if (k == "i" || k == "I")
                    {
                        Console.Clear();
                        zeigeSchachbrett();
                        zeigeRunde();
                        Console.WriteLine("Average rating: " + averagerating);
                        zeigeStats();

                        Console.WriteLine("The Fool has " + wuerfel + " dice.");
                    }
                    else if (k == "m" || k == "M")
                    {
                        if (gridAn)
                        {
                            schachbrett.setGrid(false);
                            gridAn = false;
                        }
                        else
                        {
                            schachbrett.setGrid(true);
                            gridAn = true;
                        }

                        Console.Clear();
                        zeigeSchachbrett();
                        spielNr++;
                        runde = 0;
                        zeigeRunde();
                    }
                    else if (k == "r" || k == "R")
                    {
                        enterEnemyNr();

                        schachbrett = randomGame();

                        Console.Clear();
                        zeigeSchachbrett();
                        spielNr++;
                        runde = 0;
                        zeigeRunde();
                        zeigeStats();
                    }
                    else if (k == "x" || k == "X")
                    {
                        Environment.Exit(0);
                    }
                    else if (k == "l" || k == "L")
                    {
                        schachbrett = loadSpielstand();
                        Console.Clear();
                        zeigeSchachbrett();
                        spielNr++;
                        runde = 0;
                        zeigeRunde();
                        zeigeStats();
                    }
                    else if (k == "c" || k == "C")
                    {
                        schachbrett = manuellEingeben();
                    }
                    else if (k == "s" || k == "S")
                    {
                        saveSpielstand();
                    }
                    else if (k == "g" || k == "G")
                    {
                        Console.WriteLine("\nThe Fool sneaks away...\n");
                        Console.ReadKey();
                        return(1);
                    }
                    else
                    {
                        done = true;
                    }
                }
                else
                {
                    done = true;
                }
            } while (!done);

            int[] wurf   = wuerfeln(wuerfel);
            int[] zugtyp = getZugtyp(wurf);

            Console.Clear();
            zeigeSchachbrett(NarrX, NarrY, zugtyp);

            //zeigeRunde();

            zeigeWurf(wurf);

            int[] zielfeld = eingabeKoordinaten(NarrX, NarrY, zugtyp);

            int gegnerzahl = schachbrett.getGegnerzahl();

            zugAusfuehren(zielfeld);

            if (schachbrett.getGegnerzahl() < gegnerzahl)
            {
                figurenGeschlagen++;
                gesamtGeschlagen++;
            }

            if (schachbrett.pruefeSpielerSieg())
            {
                return(0);
            }

            return(-1);
        }
예제 #4
0
        // Zufallsbrett erstellen
        public Schachbrett randomGame()
        {
            // Stellung initialisieren
            schachbrett = new Schachbrett(rnd.Next(7, 12), rnd.Next(7, 12));

            // Narr zufaellig setzen
            NarrX = rnd.Next(0, schachbrett.getSizeX());
            NarrY = rnd.Next(0, 2);

            schachbrett.setSide(NarrX, NarrY, 0);
            schachbrett.setType(NarrX, NarrY, 0);

            // Gegner zufaellig ermitteln und verteilen
            int gegnerzahl = gegnerWunsch;

            if (gegnerzahl < 1)
            {
                gegnerzahl = 1;
            }
            if (gegnerzahl > schachbrett.getSizeX() * schachbrett.getSizeY() / 2 - 1)
            {
                gegnerzahl = schachbrett.getSizeX() * schachbrett.getSizeY() / 2 - 1;
            }

            int gesamtEifer   = 0;
            int gesamtPrimaer = 1;
            int gesamtWachsam = 0;

            for (int i = 0; i < gegnerzahl; i++)
            {
                bool positionOk = false;
                int  posx;
                int  posy;

                do
                {
                    posx = rnd.Next(0, schachbrett.getSizeX());
                    posy = rnd.Next(schachbrett.getSizeY() / 2, schachbrett.getSizeY());

                    if (schachbrett.getSide(posx, posy) == -1)
                    {
                        positionOk = true;
                    }
                } while(!positionOk);

                if (i == 0)
                {
                    schachbrett.setPrimaerZiel(posx, posy, true);
                }

                schachbrett.setSide(posx, posy, 1);
                schachbrett.setType(posx, posy, rnd.Next(1, 6));
                schachbrett.setEifer(posx, posy, rnd.Next(1, 10));
                gesamtEifer += schachbrett.getEifer(posx, posy);

                if (i == 0)
                {
                    schachbrett.setType(posx, posy, 6);
                }

                int helper = rnd.Next(0, 5);
                if (helper == 2)
                {
                    schachbrett.setWachsam(posx, posy, true);
                    gesamtWachsam++;
                }

                if (i != 0)
                {
                    helper = rnd.Next(0, 6);
                    if (helper == 3)
                    {
                        schachbrett.setPrimaerZiel(posx, posy, true);
                        gesamtPrimaer++;
                    }
                }
            }

            // Hindernisse setzen
            int obstaclesZahl = hinderWunsch;

            if (obstaclesZahl < 0)
            {
                obstaclesZahl = 0;
            }
            if (obstaclesZahl > (schachbrett.getSizeX() * schachbrett.getSizeY() / 2 - 1) - gegnerzahl)
            {
                obstaclesZahl = ((schachbrett.getSizeX() * schachbrett.getSizeY() / 2 - 1) - gegnerzahl - 1);
            }

            for (int i = 0; i < obstaclesZahl; i++)
            {
                bool positionOk = false;
                int  posx;
                int  posy;

                do
                {
                    posx = rnd.Next(0, schachbrett.getSizeX());
                    posy = rnd.Next(0, schachbrett.getSizeY());

                    if (schachbrett.getSide(posx, posy) == -1)
                    {
                        positionOk = true;
                    }
                } while (!positionOk);

                schachbrett.setSide(posx, posy, 0);
                schachbrett.setType(posx, posy, 7);
                schachbrett.setEifer(posx, posy, 0);
                schachbrett.setWachsam(posx, posy, false);
                schachbrett.setPrimaerZiel(posx, posy, false);
            }

            schwierigkeitsgrad = (gesamtEifer / gegnerzahl) * 2 + gesamtPrimaer * 3 + gesamtWachsam * 2 + gegnerzahl;

            if (schwierigkeitsgrad >= 45)
            {
                wuerfel = 3;
            }
            else if (schwierigkeitsgrad >= 25)
            {
                wuerfel = 2;
            }
            else
            {
                wuerfel = 1;
            }

            return(schachbrett);
        }
예제 #5
0
        // Schachbrett laden
        public Schachbrett loadSpielstand()
        {
            Console.Write("\nPlease enter savegame name > ");
            string fname = Console.ReadLine();

            try
            {
                bytearray = File.ReadAllBytes(fname);
            }
            catch (Exception e)
            {
                Console.WriteLine("Error trying to load '{0}'.", fname);
                Environment.Exit(0);
            }


            schachbrett = new Schachbrett(bytearray[0], bytearray[1]);

            NarrX = (int)bytearray[2];
            NarrY = (int)bytearray[3];

            schachbrett.setSide(NarrX, NarrY, 0);
            schachbrett.setType(NarrX, NarrY, 0);

            int gegnerzahl = bytearray[4];

            schwierigkeitsgrad = bytearray[5];

            for (int i = 0; i < gegnerzahl; i++)
            {
                schachbrett.setSide(bytearray[i * 6 + 6], bytearray[i * 6 + 7], 1);
                schachbrett.setType(bytearray[i * 6 + 6], bytearray[i * 6 + 7], bytearray[i * 6 + 8]);
                schachbrett.setEifer(bytearray[i * 6 + 6], bytearray[i * 6 + 7], bytearray[i * 6 + 9]);
                if (bytearray[i * 6 + 10] == 1)
                {
                    schachbrett.setWachsam(bytearray[i * 6 + 6], bytearray[i * 6 + 7], true);
                }
                else
                {
                    schachbrett.setWachsam(bytearray[i * 6 + 6], bytearray[i * 6 + 7], false);
                }
                if (bytearray[i * 6 + 11] == 1)
                {
                    schachbrett.setPrimaerZiel(bytearray[i * 6 + 6], bytearray[i * 6 + 7], true);
                }
                else
                {
                    schachbrett.setPrimaerZiel(bytearray[i * 6 + 6], bytearray[i * 6 + 7], false);
                }
            }

            // Hindernisse setzen
            int hindernisbytes = bytearray.Length - (gegnerzahl * 6 + 6);

            for (int i = 0; i < hindernisbytes - 1; i += 2)
            {
                int x = bytearray[(gegnerzahl * 6 + 7) + i];
                int y = bytearray[(gegnerzahl * 6 + 7) + i + 1];

                schachbrett.setSide(x, y, 0);
                schachbrett.setType(x, y, 7);
                schachbrett.setEifer(x, y, 0);
                schachbrett.setWachsam(x, y, false);
                schachbrett.setPrimaerZiel(x, y, false);
            }

            if (schwierigkeitsgrad >= 45)
            {
                wuerfel = 3;
            }
            else if (schwierigkeitsgrad >= 25)
            {
                wuerfel = 2;
            }
            else
            {
                wuerfel = 1;
            }

            return(schachbrett);
        }