@ase2015

Как сделать ,чтобы при клике по ненужным координатам отнималось от таймера,например,5 секунд?

есть picturebox на нем выделенные элементы по координатам,а как сделать если кликнул не по нужным координатам,чтобы отнялось время?напишите в коде
вот код для понимания происходящего:

public Form3()
        {
            InitializeComponent();
            objects = new List<MapObject>();

            objects.Add(new MapObject()
            {
                Name = "Парусник",
                X = 180,
                Y = 34,
                Width = 27,
                Height = 37
            });

            objects.Add(new MapObject()
            {
                Name = "Пароход",
                X = 304,
                Y = 20,
                Width = 49,
                Height = 19
            });

            objects.Add(new MapObject()
            {
                Name = "Кактус",
                X = 369,
                Y = 127,
                Width = 11,
                Height = 20
            });

            objects.Add(new MapObject()
            {
                Name = "Лошадь",
                X = 336,
                Y = 80,
                Width = 18,
                Height = 18
            });

            objects.Add(new MapObject()
            {
                Name = "Дирижер",
                X = 228,
                Y = 156,
                Width = 17,
                Height = 19
            });

            objects.Add(new MapObject()
            {
                Name = "Мяч",
                X = 213,
                Y = 261,
                Width = 20,
                Height = 20
            });

        }
List<MapObject> objects;
private void Timer1_Tick(object sender, EventArgs e)
        {
            tk = --i;
            TimeSpan span = TimeSpan.FromMinutes(tk);
            string label = span.ToString(@"hh\:mm");
            label1.Text = label.ToString();
            if (i <= 0)
            {
                timer1.Stop();
                pictureBox1.Visible = false;
                pictureBox2.Visible = true;

            }


        }
int i;
int tk;
string c;
private void Button2_Click(object sender, EventArgs e)
       {
            button2.Visible = false;
            pictureBox1.Visible = true;
            i = 300;
            c = "5:00";

            label1.Text = c;
            timer1.Interval = 1000;
            timer1.Enabled = true;
            timer1.Start();
        }
private void PictureBox1_MouseClick(object sender, MouseEventArgs e)
        {
            int currentX = e.X;
            int currentY = e.Y;
            for (int i = 0; i < objects.Count; i++)
            {
                if (currentX > (objects[i].X - objects[i].Width / 2) & currentX < (objects[i].X + objects[i].Width / 2)
                & currentY > (objects[i].Y - objects[i].Height / 2) & currentY < (objects[i].Y + objects[i].Height / 2))
                {
                    MessageBox.Show("Ты нашел слово!");
                }
                
            }
        }

вот еще код связанный с координатами,только это отдельно созданный класс:
class MapObject
    {
        public string Name;

        public int X;
        public int Y;

        public int Width;
        public int Height;
    }
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
@ase2015 Автор вопроса
private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
    {
        int currentX = e.X;
        int currentY = e.Y;
        //Переменная для проверки того что мы куда-то попали
        //По умолчанию предполагаем что мы никуда не попали
        bool FindSome = false;
        for (int i = 0; i < objects.Count; i++)
        {
            if (currentX > (objects[i].X - objects[i].Width / 2) & currentX < (objects[i].X + objects[i].Width / 2)
            & currentY > (objects[i].Y - objects[i].Height / 2) & currentY < (objects[i].Y + objects[i].Height / 2))
            {
                MessageBox.Show("Ты нашел слово: " + objects[i].Name);

                //Отмечаем, что у нас был клик по нужным координатам, куда-то попали
                FindSome = true;
            }
        }

        //Проверяем - был ли клик в нужные координаты
        if (!FindSome) TimeDec(); 

    }

    //Метод уменьшающий время 
    private void TimeDec()
    {
        MessageBox.Show("Никуда не попали");
        //уменьшаем время
        i-=5;
    }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы