Exemplo n.º 1
0
        //мышь превращаем в руку, перемещение предмета
        private void Stick_MouseMove(object sender, MouseEventArgs e)
        {
            FlowersUser subj = sender as FlowersUser;
            //мышь превращаем в руку
            var    img  = new Bitmap(Properties.Resources.рука);
            Icon   icon = Icon.FromHandle(img.GetHicon());
            Cursor cur  = new Cursor(icon.Handle);

            Cursor.Current = cur;

            //перемещение предмета
            if (drag)
            {
                int x = Cursor.Position.X - (fieldForm.Left + (fieldForm.Size.Width - fieldForm.ClientSize.Width) / 2) - offsetX;
                int y = Cursor.Position.Y - (fieldForm.Top + (fieldForm.Size.Height - fieldForm.ClientSize.Height - 4)) - offsetY;
                if (x > 0 && x < fieldForm.ClientSize.Width - subj.Width)
                {
                    subj.Left = x;
                }
                else
                {
                    subj.Left = x > 0 ? x = fieldForm.ClientSize.Width - subj.Width : 0;
                }
                if (y > 0 && y < fieldForm.ClientSize.Height - subj.Height)
                {
                    subj.Top = y;
                }
                else
                {
                    subj.Top = y > 0 ? y = fieldForm.ClientSize.Height - subj.Height : 0;
                }
            }
        }
Exemplo n.º 2
0
        //зажимаем предмет на панели
        private void Stick_MouseDown(object sender, MouseEventArgs e)
        {
            FlowersUser pikch = sender as FlowersUser;

            foreach (var strSub in subjectPanelGame)  //проверяем - предмет на панели?
            {
                if (pikch == strSub.Value)
                {
                    drag                = true;
                    offsetX             = e.Location.X;
                    offsetY             = e.Location.Y;
                    strSub.Key.subState = SubjectState.Apply;
                }
            }
        }
Exemplo n.º 3
0
 //отправляем предмет с поля на панель
 private void Stick_Click(object sender, EventArgs e)
 {
     foreach (Point location in world.fillPanel.Keys)
     {
         FlowersUser thing = sender as FlowersUser;//приводим к типу
         if (world.fillPanel[location] == false)
         {
             foreach (Subject str in world.subjectsWorld)
             {
                 if (subjectLookupWorld.ContainsKey(str))
                 {
                     Subject subj = str;
                     subj.subState = SubjectState.OnSubjectForm;
                     subj.Location = location;          //устанавливаем для предмета-объекта координаты ячейки
                     subjectPanelGame.Add(subj, thing); //добавляем в панель
                     subjectLookupWorld.Remove(subj);
                 }
             }
         }
     }
 }
Exemplo n.º 4
0
        //рисуем панель с предметами
        void DrawSubjectsOnTheForms(Graphics g)
        {
            Pen pen = new Pen(Color.Gainsboro, 5);

            g.DrawRectangle(pen, 914, 10, 50, 50);
            g.DrawRectangle(pen, 914, 60, 50, 50);
            g.DrawRectangle(pen, 914, 110, 50, 50);
            g.DrawRectangle(pen, 914, 160, 50, 50);
            g.DrawRectangle(pen, 914, 210, 50, 50);
            g.DrawRectangle(pen, 914, 260, 50, 50);

            //рисуем предметы на игровом поле
            foreach (Subject subj in world.subjectsWorld)
            {
                FlowersUser stick;
                if (!subjectLookupWorld.ContainsKey(subj) && !subjectPanelGame.ContainsKey(subj))
                {
                    //добавляем предмет
                    stick = new FlowersUser(subj.pikcher);
                    fieldForm.Controls.Add(stick);
                    //ПОДПИСКИ НА СОБЫТИЯ ПРОГРАММНО СОЗДАННОГО ЭЛЕМЕНТА-- НА ФОРМЕ ЕГО НЕТУ!
                    stick.Click     += Stick_Click; //подписываемся на клик по ветке
                    stick.MouseDown += Stick_MouseDown;
                    stick.MouseUp   += Stick_MouseUp;
                    stick.MouseMove += Stick_MouseMove;
                    subjectLookupWorld.Add(subj, stick);
                    stick.Location = subj.Location;
                }
            }

            //рисуем предметы на панели предметов
            foreach (Subject subj in subjectPanelGame.Keys)
            {
                if (subj.subState == SubjectState.OnSubjectForm)
                {
                    subjectPanelGame[subj].Location = subj.Location;
                }
            }
        }
Exemplo n.º 5
0
        //возвращаем неиспользованный предмет на панель
        private void Stick_MouseUp(object sender, MouseEventArgs e)
        {
            FlowersUser pikch = sender as FlowersUser;

            //здесь проверяем условие -- подходит ли предмет? если да, то в subjectPanelGame его удаляем и отовсюду
            drag = false;
            Subject subj;

            foreach (var strSub in subjectPanelGame)  //на панели визуально его нет, но пока считаем, что есть
            {
                if (pikch == strSub.Value)
                {
                    subj          = strSub.Key;
                    subj.subState = SubjectState.OnSubjectForm;
                }
            }
            foreach (Point location in world.fillPanel.Keys)
            {
                if (world.fillPanel[location] == false)
                {
                    pikch.Location = location;
                }
            }
        }