• 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.

Cloud VPS
0 głosów
194 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,570 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ź 323 wizyt
pytanie zadane 7 kwietnia 2018 w C i C++ przez Badzonor Obywatel (1,410 p.)
0 głosów
1 odpowiedź 411 wizyt
pytanie zadane 10 sierpnia 2017 w C i C++ przez Badzonor Obywatel (1,410 p.)
0 głosów
2 odpowiedzi 743 wizyt

93,456 zapytań

142,452 odpowiedzi

322,721 komentarzy

62,837 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

Kursy INF.02 i INF.03
...