Mais non, suffit de melanger correctement, tu initialise Sdl et FMod, ensuite tu fais les actions requis et c´est tout ![]()
J´suis débutant < _<
BudoFan > tu te bases sur un tuto de SDL, ensuite tu essaies, dans ton code, de placer des fonctions de FMOD. Il faut que tu y arrives tout seul, le but, c´est que tu comprennes bien ce que tu fais !
Ensuite, pour compiler c´est simple :
tu mets les include de sdl et de fmod l´un apres l´autre, et pour les lib, tu mets et les -lsdl et aussi le -lfmod . ...
et tu mets les 2 dll dans le projet, allez roule ![]()
Pourquoi vous voulez pas m´aider avec ce truc de " Fmod" . ..? ![]()
Pourquoi vous voulez pas m´aider avec ce truc de " Fmod"
--> parce que tu ne me dis pas l´endroit ou tu coinces.
Mais ouais, je l´ai dit. and je le compile, il me met SDL/SDL.h not found, bla bla bla... Et là, vous m´avez dit de prendre Fmod. J´y comprends rien moi!
Voilà ! J´ai fais de mon mieux et j´ai eu que 4 erreurs(C´est bien pour un début lol)
Voilà mon code :
SDL_Surface* screen; // l´ecran principale
SDL_Surface* firstscreen; / / tampon temporaire
SDL_Event event; // gestion d´evenement
FMUSIC_MODULE * f; / / pour les mids
FSOUND_STREAM* g; / / pour les wav/mp3
void init_SDL() // initialise SDL
{
SDL_Init(SDL_INIT_VIDEO); // preapare SDL
screen = SDL_SetVideoMode(1024, 768, 32,SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_FULLSCREEN); / / mode graphique
SDL_ShowCursor(0); / / eneleve la souris
}
void waitkey() // attend qu´on appuie sur RETURN
{
while(1) // boucle
{
while(SDL_PollEvent(&)) // aquisition d´evenement
{
if ( event.type == SDL_KEYDOWN) / / on appuie sur une touche ?
{
if ( event.key.keysym.sym == SDLK_RETURN) return; / / c´est " RETURN" ?
}
}
}
}
int main(int argc , char **argv)
{
FSOUND_STREAM* g2;
int r;
FSOUND_Init(44100, 32, 0);
FSOUND_SetOutput(FSOUND_OUTPUT_DSOUND);
FSOUND_SetDriver(0);
f = FMUSIC_LoadSong("./smb.mid");
g =
FSOUND_Stream_Open("./test.mp3",FSOUND_LOOP_NORMAL
, 0,0);
g2 = FSOUND_Stream_Open("./test.mp3",0, 0,0);
r = FSOUND_GetError ( );
FSOUND_Stream_Play(0,g);
FMUSIC_FreeSong(f);
firstscreen = SDL_LoadBMP("image.bmp"); // charge l´image
/ / on dessine
rect1.x = 0;
rect1.y = 0;
rect1.w = 1024; // défini le rectangle
rect1.h = 768;
SDL_BlitSurface(firstscreen,NULL,screen,&1); /
/ colle l´image sur l´écran, NULL car on affiche TOUTE l´image
SDL_Flip(screen); // affiche la prochaine frame
waitkey(); // attends qu´on appuie sur Return ( plus haut)
SDL_ShowCursor(1); // reactive la souris
SDL_Quit(); // quitte SDL
return 0; // quitte le programme
}
Et les erreurs :
C:\Progs\ImageEtMusique\main.cpp In function `int SDL_main(int, char**)´:
48 C:\Progs\ImageEtMusique\main.cpp `rect1´ undeclared ( first use this function)
( Each undeclared identifier is reported only once for each function it appears in.)
C:\Progs\ImageEtMusique\Makefile.win [Build Error] [main.o] Error 1
Je redonne mon code, j´ai l´impression que y´a eu des erreurs quand je l´ai collé < _<
SDL_Surface* screen; // l´ecran principale
SDL_Surface* firstscreen; / / tampon temporaire
SDL_Event event; // gestion d´evenement
FMUSIC_MODULE * f; / / pour les mids
FSOUND_STREAM* g; / / pour les wav/mp3
void init_SDL() // initialise SDL
{
SDL_Init(SDL_INIT_VIDEO); // preapare SDL
screen = SDL_SetVideoMode(1024, 768, 32,SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_FULLSCREEN); / / mode graphique
SDL_ShowCursor(0); / / eneleve la souris
}
void waitkey() // attend qu´on appuie sur RETURN
{
while(1) // boucle
{
while(SDL_PollEvent(&)) // aquisition d´evenement
{
if ( event.type == SDL_KEYDOWN) / / on appuie sur une touche ?
{
if ( event.key.keysym.sym == SDLK_RETURN) return; / / c´est " RETURN" ?
}
}
}
}
int main(int argc , char **argv)
{
FSOUND_STREAM* g2;
int r;
FSOUND_Init(44100, 32, 0);
FSOUND_SetOutput(FSOUND_OUTPUT_DSOUND);
FSOUND_SetDriver(0);
f = FMUSIC_LoadSong("./smb.mid");
g =
FSOUND_Stream_Open("./test.mp3",FSOUND_LOOP_NORMAL
, 0,0);
g2 = FSOUND_Stream_Open("./test.mp3",0, 0,0);
r = FSOUND_GetError ( );
FSOUND_Stream_Play(0,g);
FMUSIC_FreeSong(f);
firstscreen = SDL_LoadBMP("image.bmp"); // charge l´image
/ / on dessine
rect1.x = 0;
rect1.y = 0;
rect1.w = 1024; // défini le rectangle
rect1.h = 768;
SDL_BlitSurface(firstscreen,NULL,screen,&1); /
/ colle l´image sur l´écran, NULL car on affiche TOUTE l´image
SDL_Flip(screen); // affiche la prochaine frame
waitkey(); // attends qu´on appuie sur Return ( plus haut)
SDL_ShowCursor(1); // reactive la souris
SDL_Quit(); // quitte SDL
return 0; // quitte le programme
}
Ah nan < _< En fait, c´est que tout les trucs viennent à gauche les éspaces dissparaissent...
Bon, tous les deux :
Je pense, ne le prenez pas mal, que vous avez brulé des étapes : vous avez foncé sur les tutos graphiques sans avoir le niveau de gérer cela.
Il faut que vous reveniez plus longuement sur la partie 1.
Ensuite, pour vos erreurs : SDL/sdl.h not found, ça veut dire ce que ça veut dire ! ! tu as mis les . h au mauvais endroit !
Et variable undeclared, c´est parce que tu ne l´as pas déclarée...
Vous brulez les étapes, vous n´avez pas encore le niveau de foncer la dedans, je regrette ! !
Consolidez vos bases.
BudoFan > je vais etre désagréable, mais en voyant ton code, je vois que tu ne comprends absolument pas ce que tu fais : tu fais des load et des free de son n´importe quand, tu n´initialises pas le mode graphique, tu as copié collé n´importe comment les 2 tutos... Revois tes bases !
JeanYvesYves, je n´ai pas appris ce dont je n´avais pas besoin!
Comment peux tu savoir ce dont tu as besoin ou non ?
qu´as tu mis de coté ?
Mdr... Le type qui veut bruler les etapes et qui s´attaque a un truc vachement compliqé sans rien comprendre ^^
J´ai pas de solutions a te donner; j´ai mes problemes persos :
On commence par la source :
http://www.libsdl.org/cgi/docwiki.cgi/SDL_20API
( les codes des differents evenements clavier en SDL)
Bon, j´utilise le ZQSD pour gerer un projet 2 joueurs. Le probleme est que pour le q, il faudrait que je mette a et pour le z, le w ( je crois). Ca fait comme si j´avait un clavier qwerty sauf que c´est un azerty. Je crois me souvenir qu´il y a pas mal de choses differentes donc je suis pas sur d´employer cette methode. Est ce que ce que je vais faire est la bonne methode ou il y a une autre astuce ![]()
Utilise ESDF ![]()
C´est la meme chose
mdr.
Je parlais pas de ca, mais d´utiliser une fonction, librairie ou bibliotheque ( deja écrite, j´ai la flemme) pour transferer le clavier d´un azerty au qwerty et inverse.
voila , j´ai vu qu´on pouvait faire une reference en dehors d´une fonction , mais g deux question :
faut til la declarer comme un pointeur au debut
( int *a) ou pas? et si g bien compris , ca sert a ce que la reference ait ladresse de la variable?
du genre
&=b;
egal
a=adressedeb
c´est presque ça sauf qu´il faut faire :
a=& car & c´est l´adresse de b. Et c´est bien a qui a comme valeur l´adresse de b.
mais , si on parle de reference , c pareil?
car a la base , c la notion de reference dans les fractions
Dnob700 ->
Ce que tu dis :
int a = &
C´est plutôt un pointeur qu´une référence ça ?
Je veux dire que l´identifiant a ne mène pas à b mais à son adresse...
Une référence c´est plutôt :
int & = b;
Non ?
( à noter que de mémoire, une référence doit être définie à sa déclaration)