/// <summary> /// Инициализация использования графэлемента в качестве анимационной иконки. /// </summary> /// <param name="graphItem">графэлемент</param> /// <param name="parent">окно рисования</param> void InitGraphItem(ref GraphItem graphItem, Control parent) { graphItem = new GraphItem(parent); graphItem.Visible = true; graphItem.Color = Color.Red; graphItem.Active = true; graphItem.CellCoordinate = new Rectangle(-1, -1, parent.Width, parent.Height); }
private void FormPlayerName_Load(object sender, EventArgs e) { textBoxName.Text = PlayerName; // Имя текущего игрока graphItemIcon = new GraphItem(this); // Графэлемент в качестве иконки graphItemIcon.Visible = true; // Геометрическая фигура видимая graphItemIcon.Color = Color.Blue; // Цвет фигуры graphItemIcon.Active = true; // Фигура пульсирует graphItemIcon.CellCoordinate = new Rectangle(10, 10, 80, 80); // положение и размеры ячейки графэлемента }
void InitGraphItem(ref GraphItem ball, Control parent) { ball = new GraphItem(parent); GraphItem.CurrentTypeGraphItem = CurrentGraphItem; ball.Visible = true; ball.Color = Color.Red; ball.Active = true; ball.CellCoordinate = new Rectangle(-1, -1, parent.Width, parent.Height); }
public FormMain() { InitializeComponent(); // Перед загрузкой формы выделим память для всех графических элементов. GItems = new GraphItem[Global.NumGraphItems]; for (int i = 0; i < Global.NumGraphItems; i++) { GItems[i] = new GraphItem(this); } }
/// <summary> /// Проверкана возможность перемещения графэлемента на указанное /// игроком место /// </summary> /// <param name="activeBall">активный графэлемент</param> /// <param name="placeBall">предполагаемое новое место размещения</param> /// <returns>false - нельзя, true - можно</returns> bool CheckCanMoveGraphItem(GraphItem activeGraphItem, GraphItem placeGraphItem) { int x = activeGraphItem.CellCoordinate.X; int y = activeGraphItem.CellCoordinate.Y; // Перемещать фигуру можно только по горизонтали или вертикали, // по диагонали нельзя. if (x != placeGraphItem.CellCoordinate.X && y != placeGraphItem.CellCoordinate.Y) { return(false); } // Если если есть исчезающие графэлементы, перемещеть активный тоже нельзя, // это может произойти когда игрок попробует переместить графэлемент во время исчезания // последовательности, в итоге исчезающие графэлементы изменят цвет еще оставаясь видимыми. for (int vanish = 0; vanish < GItems.Length; vanish++) { if (GItems[vanish].Vanish == true) { return(false); } } // Вычислим по какой координате будем проверять свободность пути // перемещения активного шара. // Проверка по оси Y if (x == placeGraphItem.CellCoordinate.X) { // Y координата нового места размещения int yPlaceGraphItem = placeGraphItem.CellCoordinate.Y; for (int i = 0; i < 100; i++) { // Если хоть один исследуемый графический элемент расположенный оси Y видим, // и находится на пути между новым указанным пользователем местом // и самим активным элементом перемещать активный графэлемент нельзя. if (GItems[i].CellCoordinate.X == x && GItems[i].Visible == true && GItems[i].CellCoordinate.Y > Math.Min(y, yPlaceGraphItem) && GItems[i].CellCoordinate.Y < Math.Max(y, yPlaceGraphItem)) { return(false); } } // Если на пути нет ни одного графэлемента перемещать активный можно. //if (listCheck.Count == 0) return true; } // Проверка по оси Х else if (y == placeGraphItem.CellCoordinate.Y) { int xPlaceGraphItem = placeGraphItem.CellCoordinate.X; for (int i = 0; i < 100; i++) { if (GItems[i].CellCoordinate.Y == y && GItems[i].Visible == true && GItems[i].CellCoordinate.X > Math.Min(x, xPlaceGraphItem) && GItems[i].CellCoordinate.X < Math.Max(x, xPlaceGraphItem)) { //listCheck.Add(GItems[i]); return(false); } } } // В остальных случаях перемещать активный графэлемент нельзя. return(true); }