public static SuperMarioSpiel StarteMitUnendlicheLeben()
        {
            var keinLeben      = Enumerable.Empty <Func <IchBinLebendig, IchBinSuperMario> >();
            var unendlichLeben = new KonfigurierbaresLeben(0, Unendlich(KleinerMario()), keinLeben);

            return(new SuperMarioSpiel(unendlichLeben));
        }
        public static SuperMarioSpiel StarteMitVorgegebenerAnzahlLeben(int anzahl)
        {
            var extraLeben = Enumerable.Repeat(KleinerMario(), 1);

            var begrenztesLeben = Enumerable
                                  .Repeat(KleinerMario(), anzahl)
                                  .Concat(Unendlich(ToterMario()));

            var konfiguriertesLeben = new KonfigurierbaresLeben(0, begrenztesLeben, extraLeben);

            return(new SuperMarioSpiel(konfiguriertesLeben));
        }
        public static IchBinSuperMario StarteGroßeWeltModus()
        {
            var extraLeben = Enumerable.Repeat(MarioMitPilz(), 1);

            var begrenztesLeben = Enumerable
                                  .Repeat(MarioMitPilz(), 1)
                                  .Concat(Unendlich(ToterMario()));

            var konfiguriertesLeben = new KonfigurierbaresLeben(0, begrenztesLeben, extraLeben);

            return(new SuperMarioSpiel(konfiguriertesLeben).StarteAlsMarioMitPilz());
        }
        public static IchBinSuperMario StarteTabulaRasaModus()
        {
            var extraLeben = Enumerable.Repeat(MarioMitPilz(), 2);

            var begrenzteLeben = new List <Func <IchBinLebendig, IchBinSuperMario> >
            {
                MarioMitPilz(),
                MarioMitFeuerblume()
            }.Concat(Unendlich(ToterMario()));

            var konfiguriertesLeben = new KonfigurierbaresLeben(0, begrenzteLeben, extraLeben);

            return(new SuperMarioSpiel(konfiguriertesLeben).StarteAlsKleinerMario());
        }