Note that there are some explanatory texts on larger screens.

plurals
  1. POSDL Moving my character
    primarykey
    data
    text
    <p>I've a problem with my source code. basically, I tried to move a sprite character in 2D map</p> <p>here's my warrior class:</p> <pre><code> class Warrior { private : int HP, SP; int xPos, yPos; int status; char *name; SDL_Surface *warrior; Map m; public : int atk, def, matk, mdef; Warrior(int, int, int, Map); int getHP(); bool isAlive(); int getSP(); int getX(); int getY(); void setX(int); void setY(int); void changeStatus(int); void drawChar(); void move(); void deleteChar(); }; //constructor buat warrior Warrior::Warrior(int pos, int x, int y, Map _m) { HP = 250; SP = 50; atk = 75; def = 20; matk = 15; mdef = 5; warrior = NULL; m = _m; status = pos; xPos = x; yPos = y; } bool Warrior::isAlive() { if (HP &gt; 0) return true; return false; } //buat ngilangin character warrior-nya... //timpa ama sprite rumput di coord char-nya void Warrior::deleteChar() { char path = '0'; m.drawTile(xPos, yPos, path); m.drawTile(xPos, yPos+20, path); SDL_Flip (SDL_SCREEN); } //buat gambar character void Warrior::drawChar () { switch (status) { case WARRIOR_LEFT : warrior = IMG_Load ("Sprites/Warrior/WARRIOR_LEFT.png"); applySurface (xPos, yPos, warrior, SDL_SCREEN); break; case WARRIOR_RIGHT : warrior = IMG_Load ("Sprites/Warrior/WARRIOR_RIGHT.png"); applySurface (xPos, yPos, warrior, SDL_SCREEN); break; case WARRIOR_UP : warrior = IMG_Load ("Sprites/Warrior/WARRIOR_UP.png"); applySurface (xPos, yPos, warrior, SDL_SCREEN); break; case WARRIOR_DOWN : warrior = IMG_Load ("Sprites/Warrior/WARRIOR_DOWN.png"); applySurface (xPos, yPos, warrior, SDL_SCREEN); break; case WARRIOR_MOVE_LEFT : warrior = IMG_Load ("Sprites/Warrior/WARRIOR_MOVE_LEFT.png"); applySurface (xPos, yPos, warrior, SDL_SCREEN); SDL_Flip(SDL_SCREEN); SDL_Delay (100); deleteChar(); status = WARRIOR_LEFT; warrior = IMG_Load ("Sprites/Warrior/WARRIOR_LEFT.png"); applySurface (xPos, yPos, warrior, SDL_SCREEN); break; case WARRIOR_MOVE_RIGHT : warrior = IMG_Load ("Sprites/Warrior/WARRIOR_MOVE_RIGHT.png"); applySurface (xPos, yPos, warrior, SDL_SCREEN); SDL_Flip(SDL_SCREEN); SDL_Delay (100); deleteChar(); status = WARRIOR_RIGHT; warrior = IMG_Load ("Sprites/Warrior/WARRIOR_RIGHT.png"); applySurface (xPos, yPos, warrior, SDL_SCREEN); break; case WARRIOR_MOVE_UP : warrior = IMG_Load ("Sprites/Warrior/WARRIOR_MOVE_UP.png"); applySurface (xPos, yPos, warrior, SDL_SCREEN); SDL_Flip(SDL_SCREEN); SDL_Delay (100); deleteChar(); status = WARRIOR_UP; warrior = IMG_Load ("Sprites/Warrior/WARRIOR_UP.png"); applySurface (xPos, yPos, warrior, SDL_SCREEN); break; case WARRIOR_MOVE_DOWN : warrior = IMG_Load ("Sprites/Warrior/WARRIOR_MOVE_DOWN.png"); applySurface (xPos, yPos, warrior, SDL_SCREEN); SDL_Flip(SDL_SCREEN); SDL_Delay (100); deleteChar(); status = WARRIOR_DOWN; warrior = IMG_Load ("Sprites/Warrior/WARRIOR_DOWN.png"); applySurface (xPos, yPos, warrior, SDL_SCREEN); break; } SDL_Flip(SDL_SCREEN); } int Warrior::getX() { return xPos; } int Warrior::getY() { return yPos; } void Warrior::setX(int x) { xPos = x; } void Warrior::setY(int y) { yPos = y; } int Warrior::getHP() { return HP; } int Warrior::getSP() { return SP; } void Warrior::changeStatus(int _status) { status = _status; } //jalannya karakter void Warrior::move() { if (event.type == SDL_KEYDOWN) { //hilangkan char-nya dolo deleteChar(); switch (event.key.keysym.sym) { case SDLK_UP : // nge-cek collision dari coord peta-nya (Map m) if (m.map[m.getLevel()][(yPos/20)-1][xPos] == '0') { yPos -= 20; status = WARRIOR_MOVE_UP; } break; case SDLK_DOWN : if (m.map[m.getLevel()][(yPos/20)+1][xPos/20] == '0') { yPos += 20; status = WARRIOR_MOVE_DOWN; } case SDLK_LEFT : if (m.map[m.getLevel()][yPos/20][(xPos/20)-1] == '0') { xPos -= 20; status = WARRIOR_MOVE_LEFT; } case SDLK_RIGHT : if (m.map[m.getLevel()][yPos/20][(xPos/20)+1] == '0') { xPos += 20; status = WARRIOR_MOVE_RIGHT; } } //bru di-gambar drawChar(); SDL_Delay (100); } } </code></pre> <p>The problem is I can't move it, and the program wasn't responding at all... I've checked all the sprite images and it works fine.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload