/// <summary> /// Gi menuva mestata na soodvetnite figuri /// </summary> /// <param name="direction"> pravec na menuvanje</param> /// <returns>true dokolku e vozmozna zamena, inaku false</returns> public bool swap(Egg.Direction direction) { currDir = direction; //menuvanje mesta so blok ne e dozvoleno if (Table[currEgg.X, currEgg.Y].isBrick()) return false; //vo zavisnost od pravecot se menuva pozicijata i mesto vo tabelata //currDir se menuva vo obratna nasoka bidejki se zameneti poziciite switch (direction) { case Egg.Direction.Up: if (currEgg.X - 1 >= 0) { if (Table[currEgg.X - 1, currEgg.Y].isBrick()) return false; Egg tmp = Table[currEgg.X, currEgg.Y]; Table[currEgg.X, currEgg.Y] = Table[currEgg.X - 1, currEgg.Y]; Table[currEgg.X - 1, currEgg.Y] = tmp; int y = Table[currEgg.X, currEgg.Y].position.Y; Table[currEgg.X, currEgg.Y].position = new Point(Table[currEgg.X, currEgg.Y].position.X, Table[currEgg.X - 1, currEgg.Y].position.Y); Table[currEgg.X - 1, currEgg.Y].position = new Point(Table[currEgg.X, currEgg.Y].position.X, y); currDir = Egg.Direction.Down; return true; } break; case Egg.Direction.Right: if (currEgg.Y + 1 < TableSize.Width) { if (Table[currEgg.X, currEgg.Y+1].isBrick()) return false; Egg tmp = Table[currEgg.X, currEgg.Y]; Table[currEgg.X, currEgg.Y] = Table[currEgg.X, currEgg.Y + 1]; Table[currEgg.X, currEgg.Y + 1] = tmp; int x = Table[currEgg.X, currEgg.Y].position.X; Table[currEgg.X, currEgg.Y].position = new Point(Table[currEgg.X, currEgg.Y + 1].position.X, Table[currEgg.X, currEgg.Y].position.Y); Table[currEgg.X, currEgg.Y + 1].position = new Point(x, Table[currEgg.X, currEgg.Y].position.Y); currDir = Egg.Direction.Left; return true; } break; case Egg.Direction.Left: if (currEgg.Y - 1 >= 0) { if (Table[currEgg.X, currEgg.Y-1].isBrick()) return false; Egg tmp = Table[currEgg.X, currEgg.Y]; Table[currEgg.X, currEgg.Y] = Table[currEgg.X, currEgg.Y - 1]; Table[currEgg.X, currEgg.Y - 1] = tmp; int x = Table[currEgg.X, currEgg.Y].position.X; Table[currEgg.X, currEgg.Y].position = new Point(Table[currEgg.X, currEgg.Y - 1].position.X, Table[currEgg.X, currEgg.Y].position.Y); Table[currEgg.X, currEgg.Y - 1].position = new Point(x, Table[currEgg.X, currEgg.Y].position.Y); currDir = Egg.Direction.Right; return true; } break; case Egg.Direction.Down: if (currEgg.X + 1 < TableSize.Height) { if (Table[currEgg.X+1, currEgg.Y].isBrick()) return false; Egg tmp = Table[currEgg.X, currEgg.Y]; Table[currEgg.X, currEgg.Y] = Table[currEgg.X + 1, currEgg.Y]; Table[currEgg.X + 1, currEgg.Y] = tmp; int y = Table[currEgg.X, currEgg.Y].position.Y; Table[currEgg.X, currEgg.Y].position = new Point(Table[currEgg.X, currEgg.Y].position.X, Table[currEgg.X + 1, currEgg.Y].position.Y); Table[currEgg.X + 1, currEgg.Y].position = new Point(Table[currEgg.X, currEgg.Y].position.X, y); currDir = Egg.Direction.Up; return true; } break; } return false; }
/// <summary> /// Gi menuva mestata na soodvetnite figuri /// </summary> /// <param name="direction"> pravec na menuvanje</param> /// <returns>true dokolku e vozmozna zamena, inaku false</returns> public bool swap(Egg.Direction direction) { currDir = direction; //menuvanje mesta so blok ne e dozvoleno if (Table[currEgg.X, currEgg.Y].isBrick()) { return(false); } //vo zavisnost od pravecot se menuva pozicijata i mesto vo tabelata //currDir se menuva vo obratna nasoka bidejki se zameneti poziciite switch (direction) { case Egg.Direction.Up: if (currEgg.X - 1 >= 0) { if (Table[currEgg.X - 1, currEgg.Y].isBrick()) { return(false); } Egg tmp = Table[currEgg.X, currEgg.Y]; Table[currEgg.X, currEgg.Y] = Table[currEgg.X - 1, currEgg.Y]; Table[currEgg.X - 1, currEgg.Y] = tmp; int y = Table[currEgg.X, currEgg.Y].position.Y; Table[currEgg.X, currEgg.Y].position = new Point(Table[currEgg.X, currEgg.Y].position.X, Table[currEgg.X - 1, currEgg.Y].position.Y); Table[currEgg.X - 1, currEgg.Y].position = new Point(Table[currEgg.X, currEgg.Y].position.X, y); currDir = Egg.Direction.Down; return(true); } break; case Egg.Direction.Right: if (currEgg.Y + 1 < TableSize.Width) { if (Table[currEgg.X, currEgg.Y + 1].isBrick()) { return(false); } Egg tmp = Table[currEgg.X, currEgg.Y]; Table[currEgg.X, currEgg.Y] = Table[currEgg.X, currEgg.Y + 1]; Table[currEgg.X, currEgg.Y + 1] = tmp; int x = Table[currEgg.X, currEgg.Y].position.X; Table[currEgg.X, currEgg.Y].position = new Point(Table[currEgg.X, currEgg.Y + 1].position.X, Table[currEgg.X, currEgg.Y].position.Y); Table[currEgg.X, currEgg.Y + 1].position = new Point(x, Table[currEgg.X, currEgg.Y].position.Y); currDir = Egg.Direction.Left; return(true); } break; case Egg.Direction.Left: if (currEgg.Y - 1 >= 0) { if (Table[currEgg.X, currEgg.Y - 1].isBrick()) { return(false); } Egg tmp = Table[currEgg.X, currEgg.Y]; Table[currEgg.X, currEgg.Y] = Table[currEgg.X, currEgg.Y - 1]; Table[currEgg.X, currEgg.Y - 1] = tmp; int x = Table[currEgg.X, currEgg.Y].position.X; Table[currEgg.X, currEgg.Y].position = new Point(Table[currEgg.X, currEgg.Y - 1].position.X, Table[currEgg.X, currEgg.Y].position.Y); Table[currEgg.X, currEgg.Y - 1].position = new Point(x, Table[currEgg.X, currEgg.Y].position.Y); currDir = Egg.Direction.Right; return(true); } break; case Egg.Direction.Down: if (currEgg.X + 1 < TableSize.Height) { if (Table[currEgg.X + 1, currEgg.Y].isBrick()) { return(false); } Egg tmp = Table[currEgg.X, currEgg.Y]; Table[currEgg.X, currEgg.Y] = Table[currEgg.X + 1, currEgg.Y]; Table[currEgg.X + 1, currEgg.Y] = tmp; int y = Table[currEgg.X, currEgg.Y].position.Y; Table[currEgg.X, currEgg.Y].position = new Point(Table[currEgg.X, currEgg.Y].position.X, Table[currEgg.X + 1, currEgg.Y].position.Y); Table[currEgg.X + 1, currEgg.Y].position = new Point(Table[currEgg.X, currEgg.Y].position.X, y); currDir = Egg.Direction.Up; return(true); } break; } return(false); }