Работа с мышью graphics.h - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Проблема такая, задание на лабораторную сделать четверостиие, которое можно перетаскивать мышью, функцию вроде бы написал правильно, но вопреки всему она работает только один раз, чего уже только не перепробывал.
#include <stdlib.h>
#include <graphics.h>
#include <unistd.h>
#include <stdio.h>
int xx=10,yy=10;
int x,y;
void waitclick()
{
    int x=0,y=0;
    while(!ismouseclick(WM_LBUTTONDOWN))
    {
 
    }
    while(!ismouseclick(WM_LBUTTONUP))
    {
        delay(50);
        setfillstyle(1,RED);
        bar(0,0,640,490);
        setfillstyle(1,BLUE);
        bar(mousex(),mousey(),mousex()+100,mousey()+100);
    }
}
 
void waitclick1()
{
 
    while(!ismouseclick(WM_LBUTTONDOWN))
    {

    }
 
}
void easy(int xq,int yq)
{
    while(!ismouseclick(WM_LBUTTONUP))
    {
        delay(50);
        setfillstyle(1,RED);
        bar(0,0,640,490);
        setfillstyle(1,BLUE);
        bar(xx+mousex()-xq,yy+mousey()-yq,xx+mousex()-xq+100,yy+mousey()-yq+100);
    }
    xx=xx+mousex()-xq;
    yy=yy+mousey()-yq;
    printf("%d %d",xx,yy);
 
}
 
void sender()
{
    int xr,yr;
    while (1)
    {
        getmouseclick(WM_LBUTTONDOWN, xr, yr);
        if ((xx<=xr)&&(xr<=xx+100)&&(yy<=yr)&&(yr<=yy+100))
        {
            easy(xr,yr);
            waitclick1();
        }
    }
}
int main(void)
{
    initwindow (450, 300);
    setfillstyle(1,BLUE);
    bar(xx,yy,xx+100,yy+100);
    sender();
    return 0;
}

Решение задачи: «Работа с мышью graphics.h»

textual
Листинг программы
    xx+=mousex()-xq;
    yy+=mousey()-yq;
    printf("%d %d %d %d %d %d\n",xx,yy,mousex(),mousey(),xq,yq);

Объяснение кода листинга программы

  1. xx и yy — это переменные, которые используются для хранения текущего положения курсора мыши.
  2. mousex() и mousey() — это функции, которые возвращают текущее положение курсора мыши.
  3. xq и yq — это переменные, которые используются для хранения предыдущего положения курсора мыши.
  4. xx+=mousex()-xq; — это операция, которая обновляет текущее положение курсора мыши, добавляя разницу между текущим и предыдущим положением.
  5. yy+=mousey()-yq; — это операция, которая обновляет текущее положение курсора мыши, добавляя разницу между текущим и предыдущим положением.
  6. printf(%d %d %d %d %d %d\n,xx,yy,mousex(),mousey(),xq,yq); — это операция, которая выводит текущее положение курсора мыши, предыдущее положение курсора мыши, а также текущее значение функций mousex() и mousey().
  7. Значения xx, yy, mousex(), mousey(), xq и yq выводятся в консоль.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.833 из 5
Похожие ответы