• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Przesuwanie grafiki myszką o określoną ilość pikseli.

Object Storage Arubacloud
0 głosów
139 wizyt
pytanie zadane 23 sierpnia 2017 w C i C++ przez Michał Ziemiec Nowicjusz (190 p.)

Tworzę program w SDL2, ale jeżeli ktoś nie zna tej biblioteki to nic, ponieważ chodzi tu o logiczny problem.

Napisałem kod, dzięki któremu za pomocą myszy przesuwam grafikę na ekranie. Obrazek renderuje się z koordynatami takimi jakie ma kursor myszy gdy naciśniemy LPM. Cel, który chce osiągnąć to przenoszenie tego obrazka o wielokrotność liczby 40 (w pikselach) (albo dowolnej liczby to nie ma znaczenia).

Na przykład mam obrazek na x=0 i przesuwam myszkę w prawo to nasz obrazek przesunie się od razu na x = 40, gdy kursor myszy tam dojdzie.

Aktualny kod wygląda w ten sposób. Myślę że jedyne co trzeba dodać to w funkcji myszka.

if(zdarzenie.type == SDL_MOUSEBUTTONDOWN) klik = true;
if(zdarzenie.type == SDL_MOUSEBUTTONUP) klik = false;
if(zdarzenie.type==SDL_MOUSEMOTION)
{
          if(klik==true)
          {
          int n,m;
          SDL_GetMouseState(&n,&m);
          myszka(n,m);
           }
}


void myszka(int x, int y)
{
    if(x>postac.x&&x<postac.x+40&&y>postac.y&&y<postac.y+40)
    {
        postac.x = x-20;
        postac.y = y-20;
    }
}

Próbowałem już różne pętle z modulo itp, ale przenoszenie w ogóle nie działa. Proszę o pomoc w rozwiązaniu tego logicznego problemu.

komentarz 23 sierpnia 2017 przez 10kw10 Pasjonat (22,880 p.)
moze tak:

gdy !Mouse.x%40 && !Mouse.y%40 -> ustaw obiekt na pozycje myszki

czyli gdy pozycja x myszki bd podzielna przez 40 i y tak samo to ...
komentarz 28 sierpnia 2017 przez criss Mędrzec (172,590 p.)
Podziel koordy myszki przez 40 (co da wynik okrojony do liczby całkowitej w przypadku inta), a następnie pomnóż przez 40.

1 odpowiedź

0 głosów
odpowiedź 28 sierpnia 2017 przez bartolinciu Dyskutant (7,580 p.)
if(postac.x < x)//sprawdzenie po której stronie postaci jest kursor
 postac.x = x-x%40;//zaokrąglenie do wielokrotności 40
else if (postac.x > x)
 postac.x = x+(40-x%40);

analogicznie dla postac.y

Podobne pytania

0 głosów
1 odpowiedź 195 wizyt
pytanie zadane 7 kwietnia 2018 w C i C++ przez Badzonor Obywatel (1,410 p.)
0 głosów
1 odpowiedź 232 wizyt
pytanie zadane 10 sierpnia 2017 w C i C++ przez Badzonor Obywatel (1,410 p.)
0 głosów
2 odpowiedzi 500 wizyt

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...