Ejemplo n.º 1
0
        public void MoveDown(DominoColor color)
        {
            int index        = IndexOf(color);
            int anzeigeindex = Anzeigeindizes[index];

            if (anzeigeindex == Anzeigeindizes.Max())
            {
                throw new InvalidOperationException("Die Farbe ist bereits ganz unten");
            }
            int position_neuer_index = Anzeigeindizes.IndexOf(anzeigeindex + 1);

            Anzeigeindizes[position_neuer_index]--;
            Anzeigeindizes[index]++;
        }
Ejemplo n.º 2
0
        public void MoveDown(DominoColor color)
        {
            int index        = IndexOf(color);
            int anzeigeindex = Anzeigeindizes[index];
            int nextLarger   = GetNextLargerIndex(Anzeigeindizes, anzeigeindex);

            if (nextLarger == -1)
            {
                throw new InvalidOperationException("Die Farbe ist bereits ganz unten");
            }
            // swap the two indices
            Anzeigeindizes[index]      = Anzeigeindizes[nextLarger];
            Anzeigeindizes[nextLarger] = anzeigeindex;
        }
Ejemplo n.º 3
0
        public void Add(DominoColor color, int index = -1)
        {
            colors.Add(color);
            Anzeigeindizes.Add((Anzeigeindizes.Count == 0) ? 0 : Anzeigeindizes.Max() + 1);

            int lastIndex = int.MaxValue;

            while (true)
            {
                var currentIndex = SortedRepresentation.ToList().IndexOf(color);
                if (currentIndex <= index + 1 || currentIndex == lastIndex || currentIndex < 0 || index < 0)
                {
                    break;
                }
                MoveUp(color);
            }
        }
Ejemplo n.º 4
0
 public void Add(DominoColor color)
 {
     colors.Add(color);
     Anzeigeindizes.Add((Anzeigeindizes.Count == 0) ? 0 : Anzeigeindizes.Max() + 1);
 }
Ejemplo n.º 5
0
 public int IndexOf(DominoColor color)
 {
     return(colors.IndexOf(color));
 }