Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SDL] Problem z funckją

Ostatnio zmodyfikowano 2011-04-09 18:35
Autor Wiadomość
mundzio123
Temat założony przez niniejszego użytkownika
[SDL] Problem z funckją
» 2011-04-06 18:59:09
Witam. Chciałbym stworzyć funkcje poruszania postaci, lecz oto mam pewien problem i nie mam żadnego pomysłu jak to obejść.

void ruch_postaci(SDL_Surface *Destination)
{
frame++;
if (frame>40) {frame = 0;}
if (frame<5) {SDL_BlitSurface( kaa , & kaaa[48], ekran, &LudekDestination), SDL_Flip(ekran);}
else if( frame>=5 && frame<10) { SDL_BlitSurface( kaa, & kaaa[zmienna+1], ekran, & LudekDestination), SDL_Flip(ekran); }
else if( frame>=10 && frame<15) { SDL_BlitSurface( kaa, & kaaa[zmienna+2], ekran, & LudekDestination), SDL_Flip(ekran); }
else if( frame>=15 && frame<20) { SDL_BlitSurface( kaa, & kaaa[zmienna+3], ekran, & LudekDestination), SDL_Flip(ekran); }
else if( frame>=20 && frame<25) { SDL_BlitSurface( kaa, & kaaa[zmienna+4], ekran, & LudekDestination), SDL_Flip(ekran); }
else if( frame>=25 && frame<30) { SDL_BlitSurface( kaa, & kaaa[zmienna+5], ekran, & LudekDestination), SDL_Flip(ekran); }
else if( frame>=30 && frame<35) { SDL_BlitSurface( kaa, & kaaa[zmienna+6], ekran, & LudekDestination), SDL_Flip(ekran); }
else if( frame>=35 && frame<40) { SDL_BlitSurface( kaa, & kaaa[zmienna+7], ekran, & LudekDestination), SDL_Flip(ekran); }    
}
To jest ta funkcja, a teraz w main:

if(keystate [SDLK_RIGHT] && !keystate [SDLK_UP] && !keystate [SDLK_DOWN])
{
x++;
zmienna = 5;
void ::ruch_postaci(SDL_Surface *Destination);
}
A to musi być w funkcji main

#include "mapa.hpp"
Odwoluje sie to do pliku mapa.hpp gdzie są zawarte wszystkie pliki sprst i dprst. void ruch_postaci też odnosi się do tych plików, lecz musi być ona poza funkcją main. Czyli mapa.hpp musiałaby być umieszczona przed funkcja ruch_postaci, lecz nie może. Troszke zagmatwany problem ale licze na was ;)
P-30373
absflg
» 2011-04-09 18:35:23
Proponuje tak:
 - w oddzielnym pliku zdefiniuj klasę reprezentującą postać z następującymi elementami:
 -- informacja po położeniu w pionie i poziomie
 -- funkcja "przesuwająca" postać o podaną odległość w pionie i poziomie
 -- rysowanie postaci (jako argument dostaje powierzchnie rysowania)
 - stworzyć w main'nie:
 -- nowy obiekt tej klasy
 -- podpiąć pod funkcje klawiszy manipulacje postacią
 -- i rysować naszą funkcją rysującą

 //EDIT: oczywiście wszystkie wyliczanie klatek powinno znaleźć się w tej klasie

Alternatywnie: umieścić main() i twoją funkcję w jednej przestrzeni, ale to ci chyba utrudni dalszy rozwój programu.
P-30499
« 1 »
  Strona 1 z 1