Il fait 237 lignes ma page, je susi rendu a 3 valeurs de c ( qui correspondent aux pages du jeu : menu principale, sommaire, modes de jeux . ..)
Il y en a 16.
En attendent j´ai une autre question, a quoi signifie ces mots q´on inclue dans parametre dev c++:
lmingw32
lSDLmain
lSDL
lSDL
Image
lSDL
Et ourquoi il y a 3 ISDL ?
Je voudrais surtout savoir laquelle permet d´utiliser des png, sinon, j´ai copié les bon trucs pour que ca marche ds les dossiers dev.
J´espere aussi que qu´elquun pourra m´eclairé sur plus haut.
Toujours persone ne peut m´aider ? ![]()
Dans ce code :
int main()
{
int n;
cout < < " choisissez un nombre entre 1 et 3" < < endl;
cin > > n;
switch ( n)
{
case 1 :
cout < < " tu as choisi 1" < < endl;
break;
case 2 :
cout < < " tu as choisi 2" < < endl;
break;
case 3 :
cout < < " tu as choisi 3" < < endl;
break;
default:
cout < < " on t´avait dit entre 1 et 3 . .." < < endl;
}
system("PAUSE");
return 0;
}
cout < < " on t´avait dit entre 1 et 3 . .." < < endl;
N´a pas l´air de fonctionné quand je choisi sois 1 sois 3 je ne comprend pas, c´est normale ?
il y a 3 ISDL car il y en a deux de trop ( tu peut les enlever.
Ce sont des bibliothèque, c´est à dire des morceau de programme déjà écrit par quelqu´un d´autre ( donc le SDL) et à cette endroit tu dit à Dev C++ qu´il doit utiliser ces morceaux de codes.
ok
![]()
dnob700
Tu a aucunes idees de mon probleme ?
J´ai peu etre trouve une autre idee, mais je vais voir, la j´avance bien dans mon jeu, les menus sont presques finit, reste plus que les modes de jeux, pas dure, mais ca prend un peu de tmps, j´espere le jeu finit avant lundi, mais les musiques ne seront paspresentes.
J´ai telechargé GP4, il faudrais que je chansonne apres.
Rikkuman, je penserais plutot a :
if(n==1)
{
cout < < " tu as choisi 1" < < endl;
}
if(n==2)
. ..
Il faut dire que je ne connais pas les interrupteurs.
Mais 3 if et un else devrait marcher.
merci Je sais que je peut faire sa de cet manier mais j´aurais besoin de savoir pour le code, c´est dans un des tuto de JeanYvesYves, dans l´annexe G ^^
la parti switch ![]()
Je suis pas allé jusque la, je me suis arreté a la sdl, je ne peux pas t´aider.
Rikuman, quel est ton problème ? qu´est ce qui s´affiche quand tu entre quoi et qu´est ce que tu voudrai qui s´affiche ? ta phrase n´est pas très clair.
Sinon j´ai un autre petit problème de POO : si j´ai une classe A avec une fonction a. Et j´ai une classe B qui hérite de A et qui redéfinit a.
Dans le constructeur de A j´appelle une fonction b déclaré friend par les deux classes qui recoit en paramètre un pointeur sur le this de la classe A en question. et la fonction appelle ensuite la fonction a de la classe A. Dans le cadre de l´héritage, est ce que la fonction qui sera appelé par b sera celle de A ou celle de B ?
Quelqu´un peut m´aider à résoudre mon problème de la page 273, plize ? ![]()
Happyman, tu as ecrit 2 fois rect1.x, une fois il est egal a 50, et l´autre a 0.
Efface moi ce rect1.x=50, qui est dans la fonction waitkey.
Pour changer sa position, tu change le chiffre de l´autre rect1.x.
Les positions rect n´ont rien a faire dans une fonction pour quitter.
Désolé, mais :
Es ce que tu peux dire tout ce que tu veux clairement, et je te ferais un code claire ou tous est separé correctement, donc met tout ce que tu veux qu´il y ai, ok ![]()
Soit ![]()
Le code actuel :
SDL_Surface* screen; // l´ecran principale
SDL_Surface* firstscreen; / / tampon temporaire
SDL_Event event; // gestion d´evenement
void prepare_SDL() // initialise SDL
{
SDL_Init(SDL_INIT_VIDEO); // prepare SDL
screen = SDL_SetVideoMode(1024, 768, 32,SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_FULLSCREEN); / / mode graphique
SDL_ShowCursor(0); / / enleve 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_SPACE) return; / / c´est " RETURN" ?
}
}
}
}
void droite() // 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_RIGHT) / / c´est " RETURN" ?
{
rect1.x = 50;
return;
}
}
}
}
}
void gauche() // 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_LEFT) / / c´est " RETURN" ?
{
rect1.x = -50;
return;
}
}
}
}
}
int main(int argc , char **argv)
{
SDL_Rect rect1; // structure rectangle
prepare_SDL(); // initialise ( plus haut)
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;
while ( 1)
{
gauche();
SDL_BlitSurface(firstscreen,NULL,screen,&1); /
/ colle l´image sur l´écran, NULL car on affiche TOUTE l´image
}
while ( 1)
{
droite();
SDL_BlitSurface(firstscreen,NULL,screen,&1);
}
SDL_BlitSurface(firstscreen,NULL,screen,&1);
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
}
Ce programme est sensé afficher une image, se quitter si on appuie sur espace, ou bien décaler l´image en question de 50 px vers la droite si...(bon, je passe, je l´ai déjà dit il y a 2 posts
) bref, toujours est-il que ça marche pas ! Dev-C++ me dit que la ligne " rect1.x = 50;" ( dans droite() ) bloque ! (Parions que si je l´enlevais, ça me dirait que " rect1.x = -50;" bloque
) Et je comprends pas pourquoi.
évidemment que ça bloqque, il ne conait pas rect1 que tu n´a pas déclarer dans cette fonction mais dans la fonction main.
Pour t´en sortir, mets la ligne SDL_Rect rect1; tout en haut de ton programme pour rendre al variable globale, ce n´est pas beau mais c´est déjà une solution ( comme dirait l´autre).
Par contre conceptuellement ton programme ne marchera pas. Tout simplement à cause de tes boucle while(1) dans main() qui ne se fermeront jamais donc quand tu appuiera sur la touche gauche tu va bouger vers la gauche et c´est tout, rien d´autre en se fera.
J´ai mis SDL_Rect rect1 dans init_SDL, ça coince toujours ( et encore) sur la même ligne
Dans ce code :
cout < < " on t´avait dit entre 1 et 3 . . ." < < endl;
N´a pas l´air de fonctionné quand je choisi sois 1 sois 3 je ne comprend pas, c´est normale ?
en fait sa ne marque pas " on t´avait dit entre 1 et 3 . . ." quand je fait 1 ou 3
int main()
{
int n;
cout < < " choisissez un nombre entre 1 et 3" < < endl;
cin > > n;
switch ( n)
{
case 1 :
cout < < " tu as choisi 1" < < endl;
break;
case 2 :
cout < < " tu as choisi 2" < < endl;
break;
case 3 :
cout < < " tu as choisi 3" < < endl;
break;
default:
cout < < " on t´avait dit entre 1 et 3 . . ." < < endl;
}
system("PAUSE");
return 0;
Voila pour faire bouger l´image :
http://rafb.net/paste/results/E8vfQR39.html
Mais si tu veux que il n´y a pas de tainé derriere, il te faut rajouuter une image de fond.
happyman, mets SDL_rect rect1; TOUT en haut de ton programme, pas dans sdl_init(), mais au tout début de ta page.
rikkuman, oui c´est vrai mais ça ne l´affiche pas non plus quand tu entre 2. Enfin c´est normal, il ne fait ce qu´il y a dans default qui si rien du reste n´a fonctionner ( aucun case n´était vrai).