示例#1
0
 public bool IstFeldAnkreuzbar(Spielfeld spielfeld, Spielfarbe spielfarbe, int spielfarbeAnkreuzfeldIndex)
 {
     if (spielfeld.AnkreuzFelderSpielfarbe[spielfarbe][spielfarbeAnkreuzfeldIndex].IstAnkreuzbar)
     {
         if (spielfeld.AnkreuzFelderSpielfarbe[spielfarbe][spielfarbeAnkreuzfeldIndex].IstSchloss)
         {
             if (spielfeld.AnkreuzFelderSpielfarbe[spielfarbe].Where(feld => feld.IstAngekreuzt).Count() >= 5)
             {
                 return(true);
             }
             else
             {
                 return(false);
             }
         }
         else
         {
             return(true);
         }
     }
     else
     {
         return(false);
     }
 }
示例#2
0
        public int SummeBerechnen(Spielfeld spielfeld, Spielfarbe spielfarbe)
        {
            int[] anzahlKreuzeZuPunkten = { 0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78 };
            int   result;

            int anzahlKreuze = spielfeld.AnkreuzFelderSpielfarbe[spielfarbe].Where((box) => box.IstAngekreuzt).Count();

            result = anzahlKreuzeZuPunkten[anzahlKreuze];
            return(result);
        }
示例#3
0
        public string ErmittleAnzeigeAugenzahl(Spielfarbe spielfarbe, int ankreuzFeldAugenzahlIndex, int anzahlFelderJeSpielfarbe)
        {
            string anzeigeAugenZahl;

            if (spielfarbe == Spielfarbe.Gruen || spielfarbe == Spielfarbe.Blau)
            {
                int gedrehteAugenzahl = (Math.Abs(ankreuzFeldAugenzahlIndex - anzahlFelderJeSpielfarbe) + 2);
                anzeigeAugenZahl = gedrehteAugenzahl.ToString();
            }
            else
            {
                anzeigeAugenZahl = ankreuzFeldAugenzahlIndex.ToString();
            }

            return(anzeigeAugenZahl);
        }
示例#4
0
        public Spielfeld SpielfarbeWurf(Spielfarbe spielfarbe, int augenZahl)
        {
            //Kreuze zu spielfarbe und wurf entsprechendes SpielfarbeAnkreuzFeld an
            int spielfarbeAnkreuzfeldIndex = ErmittleSpielfarbeAnkreuzfeldIndex(augenZahl);

            if (IstFeldAnkreuzbar(_spielfeld, spielfarbe, spielfarbeAnkreuzfeldIndex))
            {
                _spielfeld.AnkreuzFelderSpielfarbe[spielfarbe][spielfarbeAnkreuzfeldIndex].IstAngekreuzt = true;

                //Setzte alle SpielfarbeAnkreuzFelder links vom angekreuzten Feld auf nicht ankreuzbar
                for (int i = 0; i <= spielfarbeAnkreuzfeldIndex; i++)
                {
                    _spielfeld.AnkreuzFelderSpielfarbe[spielfarbe][i].IstNichtAnkreuzbar = true;
                }
            }
            return(_spielfeld);
        }
示例#5
0
        /// <summary>
        /// Aktuelle Spielfeldinformationen in der UI darstellen
        /// </summary>
        /// <param name="spielfeld"></param>
        public void SetzeSpielfeld(Spielfeld spielfeld)
        {
            //Ankreuzfelder in Spielfarbe setzen
            int zeile = 0;

            foreach (var ankreuzFelderSpielfarbe in spielfeld.AnkreuzFelderSpielfarbe)
            {
                Spielfarbe spielfarbe = ankreuzFelderSpielfarbe.Key;

                int spalte = 0;
                foreach (var ankreuzFeld in ankreuzFelderSpielfarbe.Value)
                {
                    // Create the tile
                    TileAnkreuzFeldSpielfarbe tile = new TileAnkreuzFeldSpielfarbe(ankreuzFeld, spielfarbe);

                    // Add tap recognition.
                    TapGestureRecognizer tapGestureRecognizer = new TapGestureRecognizer();
                    tapGestureRecognizer.Tapped += OnTileTappedAsync;
                    tile.TileContentView.GestureRecognizers.Add(tapGestureRecognizer);

                    gridAnkreuzFelderSpielfarben.Children.Add(tile.TileContentView, spalte, zeile);

                    spalte++;
                }
                zeile++;
            }

            //Ankreuzfelder der Fehlversuche setzen
            int spalteAnkreuzFeldFehlversuch = 0;

            foreach (var ankreuzFeld in spielfeld.AnkreuzFelderFehlversuche)
            {
                // Create the tile
                TileAnkreuzFeldFehlversuch tile = new TileAnkreuzFeldFehlversuch(spalteAnkreuzFeldFehlversuch, ankreuzFeld.IstAngekreuzt, ankreuzFeld.IstNichtAnkreuzbar);

                // Add tap recognition.
                TapGestureRecognizer tapGestureRecognizer = new TapGestureRecognizer();
                tapGestureRecognizer.Tapped += OnTileAnkreuzFeldFehlversuchTappedAsync;
                tile.TileContentView.GestureRecognizers.Add(tapGestureRecognizer);

                gridFehlversuche.Children.Add(tile.TileContentView, spalteAnkreuzFeldFehlversuch, 0);

                spalteAnkreuzFeldFehlversuch++;
            }
        }
示例#6
0
        private void ErzeugeSpielfarbeAnkreuzFelder(Spielfarbe spielfarbe)
        {
            int[]  indexZuAugenZahl = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 };
            int    ankreuzFeldAugenzahlIndex;
            string anzeigeAugenZahl;

            for (int i = 0; i < AnzahlFelderJeSpielfarbe - 1; i++)
            {
                ankreuzFeldAugenzahlIndex = indexZuAugenZahl[i];
                anzeigeAugenZahl          = ErmittleAnzeigeAugenzahl(spielfarbe, ankreuzFeldAugenzahlIndex, AnzahlFelderJeSpielfarbe);

                AnkreuzFelderSpielfarbe[spielfarbe][i] = new AnkreuzFeldAugenzahl(indexZuAugenZahl[i], anzeigeAugenZahl, istSchloss: false);
            }

            //Das letztes Feld jeder Reihe als Schloss markieren
            anzeigeAugenZahl = ErmittleAnzeigeAugenzahl(spielfarbe, indexZuAugenZahl[AnzahlFelderJeSpielfarbe - 1], AnzahlFelderJeSpielfarbe);
            AnkreuzFelderSpielfarbe[spielfarbe][AnzahlFelderJeSpielfarbe - 1] = new AnkreuzFeldAugenzahl(indexZuAugenZahl[AnzahlFelderJeSpielfarbe - 1], anzeigeAugenZahl, istSchloss: true);
        }
示例#7
0
        public TileAnkreuzFeldSpielfarbe(AnkreuzFeldAugenzahl ankreuzFeldAugenzahl, Spielfarbe spielfarbe)
        {
            this.Augenzahl  = ankreuzFeldAugenzahl.Augenzahl;
            this.Spielfarbe = spielfarbe;

            string textLabelX = "";
            string textLabel  = ankreuzFeldAugenzahl.AnzeigeAugenZahl.ToString();

            if (ankreuzFeldAugenzahl.IstSchloss)
            {
                if (ankreuzFeldAugenzahl.IstAngekreuzt)
                {
                    textLabel = "\uD83D\uDD12";
                }
                else
                {
                    textLabel = "\uD83D\uDD13";
                }
            }

            Color labelTextColor = Color.Black;

            if (ankreuzFeldAugenzahl.IstAngekreuzt)
            {
                labelTextColor = Color.LightGray;

                int    anzahlZeichenAnzeigeAugenzahl = ankreuzFeldAugenzahl.AnzeigeAugenZahl.ToString().Length;
                int    anzahlSpaces = (anzahlZeichenAnzeigeAugenzahl > 0) ? anzahlZeichenAnzeigeAugenzahl - 1 : 0;
                string spaces       = new String(' ', anzahlSpaces);
                textLabelX = spaces + "X";
            }
            else if (ankreuzFeldAugenzahl.IstNichtAnkreuzbar)
            {
                //textLabel = "";
                labelTextColor = Color.LightGray;

                textLabelX = "";
            }
            Label label = new Label
            {
                Text                    = textLabel,
                TextColor               = labelTextColor,
                BackgroundColor         = Color.White,
                FontAttributes          = FontAttributes.Bold,
                HorizontalTextAlignment = TextAlignment.Center,
                VerticalTextAlignment   = TextAlignment.Center
            };

            AbsoluteLayout.SetLayoutFlags(label, AbsoluteLayoutFlags.PositionProportional);

            AbsoluteLayout.SetLayoutBounds(label,
                                           new Rectangle(0.5, 0.5, AbsoluteLayout.AutoSize, AbsoluteLayout.AutoSize));

            Label labelX = new Label
            {
                Text                    = textLabelX,
                TextColor               = Color.LightSlateGray,
                FontAttributes          = FontAttributes.Bold,
                HorizontalTextAlignment = TextAlignment.Center,
                VerticalTextAlignment   = TextAlignment.Center
            };

            AbsoluteLayout.SetLayoutFlags(labelX, AbsoluteLayoutFlags.PositionProportional);

            AbsoluteLayout.SetLayoutBounds(labelX,
                                           new Rectangle(0.5, 0.5, AbsoluteLayout.AutoSize, AbsoluteLayout.AutoSize));

            Color backgroundColor = Color.White;

            if (spielfarbe == Spielfarbe.Rot)
            {
                backgroundColor = Color.Red;
            }
            if (spielfarbe == Spielfarbe.Gelb)
            {
                backgroundColor = Color.Yellow;
            }
            if (spielfarbe == Spielfarbe.Gruen)
            {
                backgroundColor = Color.Green;
            }
            if (spielfarbe == Spielfarbe.Blau)
            {
                backgroundColor = Color.SkyBlue;
            }

            TileContentView = new ContentView
            {
                //Padding = new Thickness(0, 0, 0, 0),
                //Margin = new Thickness(0, 0, 0, 0),
                //VerticalOptions = LayoutOptions.CenterAndExpand,
                //HorizontalOptions = LayoutOptions.CenterAndExpand,

                Content = new Frame
                {
                    BackgroundColor = backgroundColor,
                    Padding         = new Thickness(5, 5, 5, 5),
                    //Margin = new Thickness(0, 0, 0, 0),
                    //VerticalOptions = LayoutOptions.Center,
                    //HorizontalOptions = LayoutOptions.Center,

                    Content = new AbsoluteLayout
                    {
                        Padding           = new Thickness(0),
                        BackgroundColor   = Color.White,
                        VerticalOptions   = LayoutOptions.FillAndExpand,
                        HorizontalOptions = LayoutOptions.FillAndExpand,

                        Children = { label, labelX }
                    }
                }
            };
            // Don't let touch pass us by.
            TileContentView.BackgroundColor = Color.Transparent;

            // Add TileView to dictionary for obtaining Tile from TileView
            Dictionary.Add(TileContentView, this);
        }