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

SDL2 Gra 2D Problem

0 głosów
366 wizyt
pytanie zadane 29 września 2019 w C i C++ przez Jakub Chomicz 1 Użytkownik (840 p.)

Witam mam problem otóż piszę sobie grę jest fajnie i wgl. wszystko śmiga aż postanowiłem trochę uporządkować kod który miałem tylko w main-ie więc potworzyłem pare plików i wszystko fajnie działało do momentu aż postanowiłem stworzyć oddzielną funkcję do KeyInputów otórz jak mam funkcję GetAsyncKeyState w pliku Player.cpp to wszystko ładnie śmiga ale jak w tym nowym pliku to już postać się nie chce ruszać o co może chodzić ?

#include "KEYINPUTS.h"
KEYINPUTS::KEYINPUTS()
{

}
KEYINPUTS::~KEYINPUTS()
{

}
void KEYINPUTS::MOVES(int x,int y)
{
    if(GetAsyncKeyState(VK_LEFT))
    {
        x--;
    }
    if(GetAsyncKeyState(VK_RIGHT))
    {
        x++;
    }
}
#include "Player.h"
KEYINPUTS KI;
Player::Player()
{

}
Player::~Player()
{

}
void Player::P(const char*TEX,SDL_Renderer*Ren,int x,int y)
{
    REN = Ren;
    PT = PNGMenager::PNG(TEX,Ren);
    X=x;
    Y=y;
}
void Player::Update()
{
    KI.MOVES(X,Y);
    cout<<X<<endl;
    AR.x=0;
    AR.y=0;
    AR.w=1539;
    AR.h=2976;
    BR.x=X;
    BR.y=Y;
    BR.w=AR.w/9;
    BR.h=AR.h/9;
}
void Player::Render()
{
    SDL_RenderCopy(REN,PT,&AR,&BR);
}

 

1 odpowiedź

0 głosów
odpowiedź 29 września 2019 przez j23 Mędrzec (195,220 p.)
wybrane 30 września 2019 przez Jakub Chomicz 1
 
Najlepsza
void KEYINPUTS::MOVES(int& x, int& y)
{
    if (GetAsyncKeyState(VK_LEFT)) { --x; }
    if (GetAsyncKeyState(VK_RIGHT)) { ++x; }
}

Nie znam SDL-a, ale tak patrzę w dokumentację i nie wiem, po co używasz funkcji WinAPI, skoro biblioteka ma funkcje pobierającą stan klawiatury:

const Uint8* state = SDL_GetKeyboardState(NULL);
if (state[SDL_SCANCODE_LEFT]) { --x; }
if (state[SDL_SCANCODE_RIGHT]) { ++x; }

 

Nazwy klas, metod i zmiennych pisane dużymi literami to nie jest dobry pomysł.

komentarz 30 września 2019 przez Jakub Chomicz 1 Użytkownik (840 p.)
Wciąż nie działa :/
komentarz 30 września 2019 przez j23 Mędrzec (195,220 p.)
Być może w innym miejscu jest też błąd. Brak referencji ewidentnie takim był.

Podobne pytania

0 głosów
1 odpowiedź 397 wizyt
pytanie zadane 7 października 2019 w C i C++ przez Jakub Chomicz 1 Użytkownik (840 p.)
0 głosów
1 odpowiedź 643 wizyt
pytanie zadane 15 lipca 2021 w C i C++ przez BartoszKX Nowicjusz (160 p.)
0 głosów
0 odpowiedzi 282 wizyt
pytanie zadane 3 listopada 2018 w C i C++ przez iksdek Użytkownik (550 p.)

93,731 zapytań

142,669 odpowiedzi

323,286 komentarzy

63,291 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...