Пример #1
0
 /// <summary>
 /// Bubble erzeugen
 /// </summary>
 /// <param name="farbe"></param>
 /// <returns></returns>
 private Ellipse ErzeugeBubble(BubbleFarbe farbe)
 {
     return(new Ellipse()
     {
         StrokeThickness = 1.0,
         Height = ZellMass - 4,
         Width = ZellMass - 4,
         Stroke = _farben[farbe],
         Fill = _farben[farbe]
     });
 }
Пример #2
0
 /// <summary>
 /// Zelle mit einem Bubble füllen und Status entsprechend setzen
 /// </summary>
 /// <param name="bubble"></param>
 public void FarbeFestlegen(BubbleFarbe farbe)
 {
     Farbe = farbe;
     if (Farbe == BubbleFarbe.Leer)
     {
         Status = ZellStatus.Leer;
     }
     else
     {
         Status = ZellStatus.Belegt;
     }
 }
Пример #3
0
        /// <summary>
        /// Neues Spiel, jede Zelle wird mit einer Farbe belegt und der Highscore wird zurückgesetzt
        /// </summary>
        public void ResetMatrix()
        {
            Score = 0;
            Random rnd = new Random();

            for (int i = 0; i < Zeilen; i++)
            {
                for (int j = 0; j < Spalten; j++)
                {
                    BubbleFarbe farbe = (BubbleFarbe)rnd.Next(1, 5);
                    Matrix[i, j].FarbeFestlegen(farbe);
                }
            }
        }
Пример #4
0
        /// <summary>
        /// Starten des Suchmechanismus und initialisieren des Zugscores
        /// </summary>
        /// <param name="x"></param>
        /// <param name="y"></param>
        public int FindeGleicheNachbarn(int x, int y)
        {
            BubbleFarbe farbe = Matrix[x, y].Farbe;

            GefundeneGleichfarbigeNachbarn = 0;
            minX = x;
            minY = y;
            maxX = x;
            maxY = y;

            GleicheNachbarnFindenRekursiv(x, y, farbe);
            Score += (GefundeneGleichfarbigeNachbarn * (GefundeneGleichfarbigeNachbarn - 1));
            return(GefundeneGleichfarbigeNachbarn);
        }
Пример #5
0
        /// <summary>
        /// Rekursiver Suchmechanismus
        /// </summary>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <param name="farbe"></param>
        protected void GleicheNachbarnFindenRekursiv(int x, int y, BubbleFarbe farbe)
        {
            if (Matrix[x, y].FarbVergleich(farbe) && Matrix[x, y].Status != ZellStatus.Ausgewaehlt)
            {
                Matrix[x, y].Auswaehlen();
                GefundeneGleichfarbigeNachbarn++;
                minX = Math.Min(minX, x);
                maxX = Math.Max(maxX, x);
                minY = Math.Min(minY, y);
                maxY = Math.Max(maxY, y);

                if (y + 1 < Spalten)
                {
                    GleicheNachbarnFindenRekursiv(x, y + 1, farbe);
                }

                if (y - 1 >= 0)
                {
                    GleicheNachbarnFindenRekursiv(x, y - 1, farbe);
                }

                if (x + 1 < Zeilen)
                {
                    GleicheNachbarnFindenRekursiv(x + 1, y, farbe);
                }

                if (x - 1 >= 0)
                {
                    GleicheNachbarnFindenRekursiv(x - 1, y, farbe);
                }

                if (GefundeneGleichfarbigeNachbarn == 1)
                {
                    Matrix[x, y].FarbeFestlegen(farbe);
                }
            }
        }
Пример #6
0
 /// <summary>
 /// Übertragen des Inhalts einer anderen Zelle (für die Rotation) in die eigene Zelle
 /// </summary>
 /// <param name="zelle"></param>
 public void VonZelleUebertragen(Zelle zelle)
 {
     Farbe  = zelle.Farbe;
     Status = zelle.Status;
 }
Пример #7
0
 /// <summary>
 /// Vergleichen der Farben
 /// </summary>
 /// <param name="farbe"></param>
 /// <returns>True, wenn Übereinstimming</returns>
 public bool FarbVergleich(BubbleFarbe farbe)
 {
     return(Farbe == farbe);
 }